こんにちは!今日は、Backstageをコンテナ環境(Docker、Kubernetesなど)で運用する際に最も重要なテーマの一つである「環境別設定(Environment-specific Configuration)の注入方法」について詳しく見ていきましょう。🚀
サービスを開発環境から運用環境にデプロイする際、ソースコードはそのままに、データベースのアドレスやAPIキーだけをすべて変更したいと思ったことはありませんか?Backstageコンテナでこれを実現するスマートな方法をまとめました!💡

🏗️ Backstage設定の核心原理
Backstageは、実行時に複数の設定ファイルを読み込む階層的設定(Hierarchical Configuration)構造を持っています。コンテナが起動する際に、特定の環境に合った「服」を着せるプロセスだと理解すると簡単です。
🌟 1. 複数の設定ファイルを活用する(–config フラグ)
コンテナを実行する際に、どの設定ファイルを使用するかを直接指定する方法です。
- 動作方式: backstage-cliコマンドまたはコンテナのエントリポイント(Entrypoint)で–config引数を使用します。
- 実践例:
`
基本設定に運用環境設定を上書きする
node packages/backend –config app-config.yaml –config app-config.production.yaml
`
- 利点: 環境ごとに明確に区別されたファイルを使用できるため、管理が直感的です。
🔐 2. 環境変数(Environment Variables)の使用(強く推奨!)
コンテナ環境で最も標準的で推奨される方法です。app-config.yamlに秘密の値を直接記述する代わりに変数名を記述し、コンテナ実行時に実際の値を注入します。
- YAML
YAML記述法: ${ }構文を使用します。
`
backend:
baseUrl: ${BACKEND_URL}
database:
connection:
password: ${POSTGRES_PASSWORD}
`
- コンテナ注入:
- Docker: -eフラグを使用 (docker run -e BACKEND_URL=…)
- Kubernetes: envセクションまたはConfigMap、Secretを介して注入
📁 3. 設定ファイルのマウント(Volume Mount)
イメージ内に設定ファイルを焼き付ける代わりに、実行時に外部ファイルをコンテナ内部に挿入する方法です。
- 方法: KubernetesのConfigMapを作成し、それをコンテナの/app/app-config.production.yamlパスにマウントします。
- 活用: 環境ごとに完全に異なる複雑な設定を適用する必要がある場合に有用です。
🔍 4. APPCONFIG_ 環境変数プレフィックスの活用
Backstageは、特定のルールを持つ環境変数を自動的に設定値として認識する賢い機能を提供します。
- ルール: APPCONFIG_で始まる環境変数を作成すると、ハイフン(-)をアンダースコア(_)に置き換えたパスを見つけて値を挿入します。
- 例: APPCONFIG_app_baseUrl=https://backstage.example.comという環境変数は、自動的にapp.baseUrl設定値になります。
💡 どの方法を選択すべきでしょうか?
| 方法 | 推奨状況 | 特徴 |
|---|---|---|
| 環境変数注入 | APIキー、パスワードなど機密情報 | 最も安全で標準的な方法 |
| ファイル上書き | 開発/運用など環境自体が異なる場合 | 構造的な設定変更に有利 |
| ボリュームマウント | インフラチームが設定を管理する場合 | イメージ修正なしで設定を交換可能 |
—
🏁 結論: 柔軟なデプロイのための第一歩
コンテナベースのBackstage運用における核心は、「イメージは一度だけビルドし、設定は実行時に決定する」ということです。–configフラグで骨格を構築し、環境変数で詳細な部分(秘密情報など)を埋め込む組み合わせが最も理想的です。🚀
今すぐこれらの方法をパイプラインに適用して、環境変化にも揺るがない堅牢なBackstageシステムを構築してください!✨
コメントを残す