kawabatas技術ブログ

試してみたことを書いていきます

Kustomize 試してみる

概要

Kubernetes の設定ファイルをカスタムできるというので試してみる。

これで staging や production で共通の項目を base として用意し、異なる項目のみ設定できるっぽい。

https://kubernetes.io/blog/2018/05/29/introducing-kustomize-template-free-configuration-customization-for-kubernetes/

インストール

https://github.com/kubernetes-sigs/kustomize/blob/master/INSTALL.md

macdarwin

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 を使っているのだが、これをどうにか共通化したい。

今後できるようになるのかどうか。