Kustomize
共通のYAMLファイルを元にして環境ごとの差分だけを管理する
Kustomizeが必要な理由
Kubernetesでは一般的に開発(development)、ステージング(staging)、本番(production)といった複数の環境が必要となる
環境ごとのほとんどの設定が一緒だが、下記のような設定が異なる
PodやReplicaの数
CPU・メモリ
データベースの接続情報
ConfigMap, Secretの値
Kustomizeを使わないとこれらのファイルを手動で複製し、一部分だけ変更するという手間が発生する。ミスも発生しやすくなる
仕組み
Base
すべての環境で共通となる土台のYAMLファイル群を配置
Overlay
差分情報を記述
ディレクトリ構成例
code:sh
my-app/
├── base/
│ ├── deployment.yaml # アプリの基本設定
│ ├── service.yaml # サービス設定
│ └── kustomization.yaml # baseの設定ファイル
│
└── overlays/
├── development/
│ ├── deployment-patch.yaml # レプリカ数を1にする差分
│ └── kustomization.yaml # 開発環境用の設定ファイル
│
└── production/
├── deployment-patch.yaml # レプリカ数を3にする差分
└── kustomization.yaml # 本番環境用の設定ファイル
メリット
学習コストが低い
独自のテンプレート構文がなく、KubernetesのそのままのYAMLを使える
設定が直感的
kubectl apply -k <dir> のように -kをつけるだけで利用可
HelmはKubernetesのパッケージマネージャである
Kustomizeは既存のYAMLファイルをカスタマイズすることに特化