バックグラウンド:
現在、サービスに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.envortest.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リソースを作成できるかもしれませんが、作成済みのリソースを削除することはできません。