バックグラウンド:
現在、サービスにDockerとDockerComposeを使用しています。さまざまな環境の構成を、アプリケーションによって読み取られる環境変数を定義するファイルに外部化しました。たとえば、prod.env
ファイル:
ENV_VAR_ONE=Something Prod
ENV_VAR_TWO=Something else Prod
およびtest.env
ファイル:
ENV_VAR_ONE=Something Test
ENV_VAR_TWO=Something else Test
したがって、コンテナを起動するときにprod.env
ortest.env
ファイルを使用するだけです。
docker run --env-file prod.env <image>
次に、アプリケーションはで定義された環境変数に基づいて構成を取得しますprod.env
。
質問:
- 次のようにハードコーディングする代わりに、Kubernetesのファイルから環境変数を提供する方法はありますか(ポッドを定義する場合など)。
apiVersion:v1 種類:ポッド メタデータ: ラベル: コンテキスト:docker-k8s-lab 名前:mysql-pod 名前:mysql-pod スペック: コンテナ: - env: - 名前:MYSQL_USER 値:mysql - 名前:MYSQL_PASSWORD 値:mysql - 名前:MYSQL_DATABASE 値:サンプル - 名前:MYSQL_ROOT_PASSWORD 値:超秘密 画像:「mysql:latest」 名前:mysql ポート: - containerPort:3306
- これが不可能な場合、推奨されるアプローチは何ですか?
Secret
またはConfigMap
リソースを作成したくありません。k8sクラスターでの権限が制限されています。Secret
リソースを作成できるかもしれませんが、作成済みのリソースを削除することはできません。