Kustomize
from Kubernetes
website
github
GPT-4.icon
https://www.redbubble.com/i/sticker/Kustomize-Kubernetes-native-configuration-management-by-cookieandcode/114457582.EJUG5
Kustomizeは、Kubernetes manifestを環境ごとに柔軟にカスタマイズできるツールです。
テンプレートエンジンを使わずに、宣言的な方法で設定の追加・上書き・削除が可能で、Kubernetesの公式CLIツールであるkubectlにも統合されています(v1.14以降)。 (AzukiAzusa Tech Blog)
🌟 Kustomizeの特徴
テンプレート不要: Goテンプレートや変数展開を使わず、純粋なYAMLファイルで構成を管理できます。
環境ごとの差分管理: 共通設定(base)と環境固有の設定(overlays)を分離し、再利用性と可読性を向上させます。
kubectlとの統合: kubectlに組み込まれており、追加のツールなしで利用できます。
柔軟なパッチ適用: Strategic Merge PatchやJSON Patchを使用して、特定のフィールドだけを上書き可能です。 (Qiita, AzukiAzusa Tech Blog)
📁 ディレクトリ構成の例
Kustomizeでは、以下のようなディレクトリ構成でマニフェストを管理します:(Zenn)
code:_
.
├── base/
│ ├── deployment.yaml
│ └── kustomization.yaml
└── overlays/
├── dev/
│ ├── deployment-patch.yaml
│ └── kustomization.yaml
└── prod/
├── deployment-patch.yaml
└── kustomization.yaml
base/: 全環境共通のリソース定義を配置します。
overlays/: 環境ごとの差分(パッチ)を配置します。 (SHIFT Group 技術ブログ, Speaker Deck)
🛠️ 基本的なコマンド
マニフェストのビルド(確認):
$ kubectl kustomize overlays/dev
λ kubectl kustomize
マニフェストの適用:
$ kubectl apply -k overlays/dev
差分の確認:
$ kubectl diff -k overlays/dev
これらのコマンドにより、環境ごとの設定差分を効率的に管理できます。 (Zenn)
🔧 具体的なユースケース
環境ごとの設定変更: 開発・ステージング・本番など、各環境で異なる設定(例:replica数、リソース制限)を適用できます。
共通設定の再利用: baseディレクトリに共通設定をまとめることで、設定の重複を避け、保守性を向上させます。
CI/CDとの統合: GitOpsツール(例:Argo CD、Flux)と組み合わせて、継続的デリバリーを実現できます。 (AzukiAzusa Tech Blog, Qiita, Zenn)
Kustomizeは、Helmのようなテンプレートベースのツールとは異なり、宣言的でシンプルな構成管理を提供します。特に、環境ごとの微妙な差分を管理したい場合や、テンプレートエンジンを避けたい場合に適しています。詳細な情報やドキュメントは、公式サイト(https://kustomize.io/)をご参照ください。(Wallarm | Advanced API Security)
https://speakerdeck.com/hhiroshell/kustomize-deep-dive