configMapGenerator
from kustomization.yaml
指定したファイルやリテラル値からConfigMap (k8s)を自動生成するための仕組み
https://kubectl-book-ja.netlify.app/pages/reference/kustomize.html#configmapgenerator
例
code:kustomization.yaml
configMapGenerator:
- name: my-config
files:
- app.properties
literals:
- LOG_LEVEL=debug
この設定は、以下のような ConfigMap (k8s)を生成する
code:yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config-xxxxx # ← ハッシュが付与される
data:
app.properties: |
...(ファイルの内容)
LOG_LEVEL: debug
生成された ConfigMap は、名前にハッシュが付与される
内容が変わると新しい ConfigMap として扱われる
これは ロールアウトのトリガー にも使える
ハッシュが不要な場合は options: {disableNameSuffixHash: true} を指定すれば良い
configMapGeneratorを使わない場合どうなるか?
例えば、configMap.yamlを作る
code:yaml
configMap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
FOO: bar
これを、Kustomizeの resources に含めて使えば、Deploymentなどから参照できる
cons
内容を変えても名前が変わらない
my-config の内容を変えても名前はそのまま → Deployment の再起動が起こらない。
ローリングアップデートされない
ConfigMapの中身だけが変わった場合、KubernetesはDeploymentのPodを自動で再起動しない
CI/CDで動的に値を変えたいときに不便
GitOps的な運用で、環境変数などを変更したい場合、ConfigMapの値を直接書き換えないといけない
関連
secretGenerator: ConfigMap と似ているが、シークレット用