Kustomize#
Kustomize とは#
Kubernetes マニフェストのテンプレーティングツール。
環境ごとに作成するマニフェストを切り替えたり、特定のフィールドを上書きすることでマニフェストの作成を効率化する。
Kustomize の使用法#
複数マニフェストの結合#
以下のような YAML ファイルを作成し、
以下コマンドで、マニフェストファイルを一個に結合する。
Namespace の上書き#
res_dir/kustomization.yaml | |
---|---|
kubectl kustomize res_dir
により生成されるマニフェストファイルの中で、metadata.namespace: <namespace_name>
が追加される。
Prefix / Suffix の付与#
res_dir/kustomization.yaml | |
---|---|
kubectl kustomize res_dir
により生成されるマニフェストファイルの中で、metadata.name
が それぞれfuga-deployment-hoge
, fuga-service-hoge
, fuga-pvc-hoge
となる。
共通メタデータ(ラベル/アノテーション)の付与#
全てのリソースに共通のラベル/アノテーションを付与する。
res_dir/kustomization.yaml | |
---|---|
kubectl kustomize res_dir
により生成されるマニフェストファイルの中で、metadata.annotations.annotation1: cool-annotation
が追加される。
また、ラベルに関しては、以下のように必要なところに追加される。
- [Service]
metadata.labels.label1: fancy-label
spec.selector.label1: fancy-label
- [Deployment]
metadata.labels.label1: fancy-label
spec.selector.matchLabels.label1: fancy-label
spec.template.metadata.labels.label1: fancy-label
images によるイメージの上書き#
res_dir/kustomization.yaml | |
---|---|
kubectl kustomize res_dir
により生成されるマニフェストファイル(Deployment)の中で、spec.tamplate.spec.containers.image
が <image_new_name>:<image_new_tag>
に上書きされる。
Overlay による値の上書き#
メタデータ系データ以外の設定を実現する。
prd_res_dir/kustomization.yaml | |
---|---|
kubectl kustomize prd_res_dir
により生成されるマニフェストファイル(Deployment)の中で、spec.replicas
が 100
に上書きされる。
ConfigMap と Secret の動的な生成#
config-map/kustomization.yaml | |
---|---|
kubectl kustomize config_map
により、
- kind: ConfigMap に対して
data
の設定と、metadata.name: <cm_name>-<hash>
// ハッシュ値がサフィックスとして付与される
- kind: Deployment に対して
.-
spec.template.spec.containers.envFrom.configMapRef.name
がmetadata.name: <cm_name>-<hash>
に置換される
Kustomize に関連する kubectl サブコマンド#
割愛