ConfigMap とは?Kubernetes の設定を外部化する
ConfigMap は、非機密の設定を key-value データとして保持し、それを Kubernetes が環境変数または mount されたファイルとして pod に注入します。
設定はコンテナイメージに焼き込むべきではありません - 同じイメージが、異なる設定で dev、staging、prod で動くべきです。ConfigMap は、Kubernetes がその非機密の設定を外部化する方法であり、1つのイメージを deploy 時に環境ごとに設定できるようにします。
何を保存するか
ConfigMap は key-value のペア(および config ファイル全体)の集まりです。非機密のデータ用です - feature flag、URL、チューニング値など。機密データは代わりに Secret に属します。
pod がどう消費するか
- コンテナに注入される環境変数として。
- コンテナが読む volume に mount されるファイルとして。
- その値から供給されるコマンドライン引数として。
なぜ設定を外部化するのか
設定をイメージの外に保つことは、1つの不変イメージが環境間できれいに昇格できることを意味します - ConfigMap を変更し、build し直しはしません。また、環境固有の値を、version が固定された artifact の外に保ちます。
落とし穴: 更新と restart
ConfigMap からの env var の値は pod の起動時に読まれるため、ConfigMap を変更しても、restart するまで実行中の pod は更新されません。mount されたファイルの値はライブで更新できますが、アプリがそれらを読み直す必要があります。
CI/CD における ConfigMap
デリバリー pipeline は、対象環境の ConfigMap を Deployment と並べて apply するか、Helm chart 経由でテンプレート化します。イメージは同じままで、環境間で異なるのは ConfigMap だけです。
重要なポイント
- ConfigMap は、非機密の設定を env var やファイルとして外部化します。
- 1つの不変イメージを環境ごとに設定できるようにします。
- env var の値は pod の起動時に読まれるため、変更を反映するには restart が必要です。
関連ガイド
What Is a Kubernetes Secret? Handling Sensitive DataA Kubernetes Secret stores sensitive data like passwords and tokens for pods to consume. Learn how it works,…
What Is a Pod in Kubernetes? The Smallest Deployable UnitA pod is the smallest deployable unit in Kubernetes - one or more containers that share a network and storage…
What Is a Namespace in Kubernetes? Logical Cluster PartitionsA Kubernetes namespace is a logical partition of a cluster for isolating and organizing resources. Learn what…