こんにちは!今日は、Backstageを運用環境にデプロイする際に、すでにビルドされた成果物を修正せずに、リアルタイム(Runtime)で設定を変更する最も直接的な方法について深く掘り下げていきます。🚀
開発環境ではapp-config.yamlファイルを直接修正すればよいですが、Dockerコンテナでデプロイされた運用環境では、ファイルを毎回修正して再ビルドするのはほぼ不可能です。このとき、私たちが使える「最も強力で直接的な武器」は何でしょうか?💡

🏗️ 答えは「環境変数(Environment Variables)」です!🌡️
Backstageでランタイムに単一の設定値を上書きする最も直接的で標準的な方法は、環境変数を活用することです。
Backstageの設定エンジンであるconfig-loaderは、実行時に特定のルールを持つ環境変数を見つけ、YAMLファイルに定義された値を置き換えます。
🌟 なぜ環境変数を使うべきなのでしょうか?
- ビルドと設定の分離: 一度ビルドされたDockerイメージを開発、ステージング、運用環境で再利用できます。(Build Once, Run Anywhere! 🏎️)
- セキュリティ: APIキー、DBパスワードなどの機密情報をYAMLファイルにハードコーディングせず、システムレベルで注入できます。🔐
- 柔軟性: KubernetesやDocker Composeの設定を変更するだけで即座に反映されるため、対応速度が非常に速いです。⚡
🛠️ 実践活用法: 環境変数名規則 (Naming Convention)
Backstageは、YAMLファイルの階層構造を環境変数に変換する際に非常に明確な規則に従います。
📝 規則1: 大文字とアンダースコア(_)
YAMLのキー値をすべて大文字に変換し、階層の区切りにはアンダースコア2つ(__)またはアンダースコア1つ(_)を使用します。(最近のバージョンでは可読性のためにAPP_CONFIG_プレフィックスと組み合わせて使用することを推奨していますが、最も直接的な方法は以下の通りです。)
💡 実際の例
もしapp-config.yamlに以下のような設定があると仮定してみましょう。
YAML
app:
baseUrl: https://my-backstage.com
backend:
database:
connection:
host: localhost
この値をランタイムで上書きしたい場合は、次のように環境変数を設定します。
- URL変更時: APP_CONFIG_app_baseUrl=
- DBホスト変更時: APP_CONFIG_backend_database_connection_host=db.production.com
重要ポイント!🚩
>
Backstageは基本的にAPP_CONFIG_で始まる環境変数を自動的に検出し、内部設定にマッピングします。
>
例: APP_CONFIG_backend_auth_keys_0=”my-secret-key”
🏗️ さまざまな環境での注入方法
1. Dockerで使う 🐳
Bash
docker run -e APP_CONFIG_app_baseUrl=https://prod.com my-backstage-image
2. Kubernetes(K8s)で使う ☸️
deployment.yamlのenvセクションに定義します。
YAML
spec:
containers:
- name: backstage
env:
- name: APP_CONFIG_app_baseUrl
value: "https://k8s-backstage.com"
3. Docker Composeで使う 🐙
YAML
services:
backstage:
environment:
- APP_CONFIG_app_baseUrl=http://localhost:3000
⚠️ 注意すべき点 (Best Practices)
- データ型の遵守: 数値は数値として、ブーリアン(true/false)は該当する形式で渡す必要があります。
- 配列の処理: 配列の特定のインデックスを変更したい場合は、_0, _1のように数字を接尾辞として付けます。
- 例: APP_CONFIG_organization_name_0=”First Org”
- 優先順位: 環境変数は常にapp-config.yamlファイルに明示された値よりも高い優先順位を持ちます。つまり、環境変数が設定されている場合、ファイルの内容は無視されます。🔝
🏁 結論: ランタイム設定の王者「環境変数」
Backstageのデプロイ環境で単一の設定値を最も迅速かつ直接的に変更したい場合は、迷わず環境変数(APP_CONFIG_…)を使用してください。これがクラウドネイティブ環境でBackstageを最もスマートに運用する方法です!🚀
コメントを残す