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 인터페이스를 구현해 나만의 구성 소스를 만들 수도 있어요.