【カスタマイズ】

Kustomize とは?

💡 元のファイルを汚さない、Kubernetesの透明シール式カスタマイズ
📌 このページのポイント
Kustomize: Base + Overlay パターン base/ deployment.yaml service.yaml (共通設定 = 変更しない) overlays/dev/ replicas: 1 image: app:dev kustomization.yaml overlays/prod/ replicas: 5 image: app:v2.1 kustomization.yaml kubectl apply -k base + overlay を マージして適用
KustomizeのBase + Overlayパターン
ひよこ ひよこ

Kustomizeってどんな仕組みなの?

ペンギン先生 ペンギン先生

「base」フォルダに共通のマニフェストを置いて、「overlays/dev」「overlays/prod」みたいなフォルダで環境ごとの差分だけ書くんだ。ベースを汚さずにカスタマイズできるのがポイントだよ

ひよこ ひよこ

Helmみたいなテンプレートは使わないの?

ペンギン先生 ペンギン先生

そう、Kustomizeは素のYAMLのままでいける。JSONパッチやStrategic Merge Patchという仕組みで「この部分だけ上書き」ってやるんだ。YAMLがそのままkubectl applyできるから読みやすいんだよ

ひよこ ひよこ

kubectlに最初から入ってるって本当?

ペンギン先生 ペンギン先生

Kubernetes 1.14からkubectlに統合されてて、「kubectl apply -k overlays/prod/」で使えるんだ。別途インストールしなくていいから導入のハードルが低いんだよ

ひよこ ひよこ

HelmとKustomizeは結局どう使い分ければいいの?

ペンギン先生 ペンギン先生

外部のChartを使うときはHelm、自社サービスのマニフェスト管理はKustomizeという組み合わせが王道だね。実はHelmで生成したYAMLをKustomizeでさらにパッチする「Helm + Kustomize」パターンも実務ではよく見るよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Kustomize」って出てきたら「テンプレートなしでKubernetesの設定を環境ごとに変えられるツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Kustomize」 = カスタマイズ(Kubernetes + Customize の造語)
💬 CustomizeのCをKubernetesのKに置き換えた造語で、Kubernetes専用のカスタマイズツールという意味だよ
← 用語集にもどる