tl; dr
- kustomize使うとまとめてapplyできるよ
- kustomizeで環境を分ける場合はpatchを使おう
kustomizeとは
k8sのクライアントを使う上で、環境を再構築する場合や、
環境ごとにわけてapplyしたい場合などにまとめてやることができるクライアントツールです。
version14以上の kube-ctl
が使える状態だと標準で使うことがきます。
今回は、使うための最低限の動作を試してみたいと思います。
まとめてdeployしてみる
シンプルな例として、下記のようなファイルを用意します。
(deployとserviceの作成は割愛します)
commonLabels:
app: test01
resources:
- deploymant.yaml
- service.yaml
kustomization.yaml
の配置しているディレクトリで、
buildをしてみます
kustomize build .
すると、それぞれの定義が、---
で区切られて作成されていることがわかります。さらにこれをapplyするには以下を実行します。
kustomize build . | kubectl apply -f -
patchを使って、環境想定の構成でdeployしてみる
例えば環境によって、デプロイ内容を変えてみましょう。
今回はディレクトリ構成を以下のようにし、
deploymant_patch.json
を新しく作成します。
.
├── base
│ ├── deploymant.yaml
│ ├── servece.yaml
│ └── kustomization.yaml
└── overlays
└── develop
└── deploymant_patch.yaml
└── kustomization.yaml
特殊な構文ですが、以下を参照に、今回はreplica数を変えてみます
(元々replicas: 3
)のdevelopだったとします
apiVersion: apps/v1
kind: Deployment
metadata:
name: test01-develop
spec:
replicas: 4
この状態でapplyをしてあげると、replica数が増えていることがわかります
kustomize build overlays/develop/ | kubectl apply -f -
patchを動的に追加する
ラベルの追加
kustomize edit add label labelKey1:"labelValue1"
imageのセット
kustomize edit set image hoge.docker/hoge-image:develop
参考)
公式: