Kustomize 試してみる
概要
Kubernetes の設定ファイルをカスタムできるというので試してみる。
これで staging や production で共通の項目を base として用意し、異なる項目のみ設定できるっぽい。
インストール
https://github.com/kubernetes-sigs/kustomize/blob/master/INSTALL.md
go が必要。
kustomize コマンドが使えるようになる。
使い方
https://github.com/kubernetes-sigs/kustomize/tree/master/examples
example が用意されているので、動かしてみるのは簡単。
app という deployment を staging で上書きする場合はこんな感じ。
base/app.yml
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: app spec: replicas: 1 template: metadata: labels: app: app spec: containers: - image: xxx name: app
base/kustomization.yaml
resources: - app.yml
staging/app.yml
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: app spec: replicas: 2
staging/kustomization.yaml
bases: ../base patches: - app.yml
$ kustomize build staging/
これをターミナルで実行すると yaml 形式のテキストがターミナルに出力される。
直接 apply もできるので、namespace を指定して使えば良さそう
$ kustomize build staging/ | kubectl apply -f - --namespace="staging"
※kustomization.yml では kustomize build 実行できなかった。orz
まとめ
kustomize 良さそう。
app や worker でほぼ同じ pod template を使っているのだが、これをどうにか共通化したい。
今後できるようになるのかどうか。