본문 바로가기
WIKI 기술 지식 베이스

Root Config 서비스

원문 보기 위키 갱신

이 서비스는 app-config YAML 파일에서 구성 값을 읽을 수 있게 해줘요.

출처: 문서

본문

이 서비스는 app-config YAML 파일에서 구성 값을 읽을 수 있게 해줘요.

서비스 사용하기

다음 예시는 기본 구성 서비스를 사용해 구성 값을 가져온 뒤 콘솔에 기록하는 방법을 보여줘요.

import {
  coreServices,
  createBackendPlugin,
} from '@backstage/backend-plugin-api';

createBackendPlugin({
  pluginId: 'example',
  register(env) {
    env.registerInit({
      deps: {
        log: coreServices.logger,
        config: coreServices.rootConfig,
      },
      async init({ log, config }) {
        const baseUrl = config.getString('backend.baseUrl');
        log.warn(`The backend is running at ${baseUrl}`);
      },
    });
  },
});

서비스 구성하기

config 핵심 서비스를 설정하기 위해 선택적으로 전달할 수 있는 추가 구성이 있어요.

  • argv - process.argv를 사용하는 대신 구성 로더에 전달되는 인수를 덮어써요
  • remote - 원격 구성 로딩을 구성해요

createBackend를 호출할 때 핵심 서비스에 대한 오버라이드를 추가해 이 추가 옵션들을 구성할 수 있어요.

import { rootConfigServiceFactory } from '@backstage/backend-defaults/rootConfig';

const backend = createBackend();
backend.add(
  rootConfigServiceFactory({
    argv: [
      '--config',
      '/backstage/app-config.development.yaml',
      '--config',
      '/backstage/app-config.yaml',
    ],
    remote: { reloadIntervalSeconds: 60 },
  }),
);

더 고급 사용자 지정을 위해 @backstage/config-loader 패키지에는 구성 서비스의 구현을 사용자 지정할 수 있는 몇 가지 API가 있어요. 기본 구현은 rootConfigServiceFactory 함수와 같은 옵션을 가진 ConfigSources.default 메서드를 사용해요. 이것들을 사용해 나만의 구성 서비스 구현을 만들 수 있어요.

import { ConfigSources } from '@backstage/config-loader';
import { createServiceFactory } from '@backstage/backend-plugin-api';

const backend = createBackend();
backend.add(
  createServiceFactory({
    service: coreServices.rootConfig,
    deps: {},
    async factory() {
      const source = ConfigSources.default({
        argv: [
          '--config',
          '/backstage/app-config.development.yaml',
          '--config',
          '/backstage/app-config.yaml',
        ],
        remote: { reloadIntervalSeconds: 60 },
      });
      console.log(`Loading config from ${source}`);
      return await ConfigSources.toConfig(source);
    },
  }),
);

StaticConfigSource 같은 다른 구성 소스를 사용하고 ConfigSources.merge(...)로 다른 소스와 결합할 수도 있어요. ConfigSource 인터페이스를 구현해 나만의 구성 소스를 만들 수도 있어요.

더 알아보기 (Learn more)