Kubernetes v1.34: 初期コンテナを使ってアプ... ノート

Kubernetes v1.34: 初期コンテナを使ってアプリケーションの環境変数を定義する

Kubernetes は従来、環境変数に ConfigMap と Secret を使用していましたが、これは複雑さを増し、余分な API 呼び出しを必要とします。 Pod とその設定を別々に管理することは、特に更新時に困難になる可能性があります。 これは、環境変数をハードコードしたり、ボリュームマウントを使用したりしたくないベンダーコンテナを扱う場合に特に当てはまります。EnvFiles と呼ばれる新しいアルファ機能は、これらのシナリオに対する代替ソリューションを提供します。 EnvFiles 機能ゲートが有効になっている場合、kubelet は、コンテナの環境変数を emptyDir ボリューム内のファイルから直接読み込むことができます。 これにより、ファイルをコンテナ自体にマウントする必要がなくなります。 コア機能は、Kubernetes がファイル (多くの場合、initContainer によって生成される) を解析し、起動時にメインコンテナの環境変数を設定できるようにします。ファイルは、Pod のライフサイクル中に持続する一時的なストレージである emptyDir ボリュームに存在します。 メインコンテナはこのボリュームをマウントする必要はありません。kubelet がファイルを読み取り、変数を注入します。 これらの変数を定義するには、Pod spec で fileKeyRef フィールドを使用し、ファイルパスと抽出するキーを指定します。ファイル形式は KEY=VALUE 構文をサポートしており、このアルファ段階では、emptyDir ボリュームに書き込む必要があります。 init コンテナはファイルを emptyDir ボリュームに書き込む必要がありますが、メインアプリケーションコンテナはボリュームにアクセスする必要はありません。 この機能は機密データを処理できますが、ファイルシステムへのアクセス権を持つノードオペレーターは、emptyDir ボリュームからこのデータを取得できる可能性があることに注意することが重要です。 したがって、機密情報を保存する際には、不正アクセスからノードを保護するために、堅牢なクラスタセキュリティポリシーが不可欠です。 この EnvFiles 機能は、複雑な回避策を減らすことで、アプリケーションの作成を簡素化し、新しいユースケースを可能にします。