基本的な使いかた
Kustiomizeを使ってk8sのyamlを楽にしたいの続きです
0. kustomizeをinstallする
mac
$ brew install kustomize
それ以外
$ opsys=linux
$ curl -s https://api.github.com/repos/kubernetes-sigs/kustomize/releases/latest |\
grep browser_download |\
grep $opsys |\
cut -d '"' -f 4 |\
xargs curl -O -L
$ mv kustomize_*_${opsys}_amd64 kustomize
$ chmod u+x kustomize
1. ベースとなるフォルダを作成する
2. overlayするフォルダを作成する
フォルダー構造は下記のようになる
.
├── base
└── overlay
3. base以下にkustomization.yaml,service.yaml,pod.yamlを作成する
├── base
│ ├── kustomization.yaml
│ ├── pod.yaml
│ └── service.yaml
└── overlay
kustomization.yaml
resources:
- pod.yaml
- service.yaml
base/pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: kube
labels:
app: webphp
spec:
containers:
- name: nginx
image: sasenomura/nginx:latest
ports:
- containerPort: 80
base/service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginxtest
spec:
ports:
- port: 80
targetPort: 80
selector:
app: webphp
type: LoadBalancer
4. baseフォルダをkustomize buildする
baseでビルドできなければoverlayを編集してビルドすることはできない
$ kustomize build base/
apiVersion: v1
kind: Pod
metadata:
labels:
app: webphp
name: kube
spec:
containers:
- image: sasenomura/nginx:latest
name: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginxtest
spec:
ports:
- port: 80
targetPort: 80
selector:
app: webphp
type: LoadBalancer
5. overlayのマニフェストを書く
ここではbaseに対してv1.1のパッチを書いていく
└── overlay
├── v1.1
│ ├── kustomization.yaml
│ └── pod.yaml
overlay/v1.1/pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: kube
spec:
containers:
- name: nginx
image: sasenomura/nginx:1.1 # latestから1.1に変更する
overlay/v1.1/kustomization.yaml
bases:
- ../../base #baseフォルダを指定する
patches:
- ./pod.yaml #パッチとしてpod.yamlを指定する
6. overlayの方でkustomize buildする
$ kustomize build overlay/
apiVersion: v1
kind: Pod
metadata:
labels:
app: webphp
name: kube
spec:
containers:
- image: sasenomura/nginx:1.1 # 変更されている
name: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginxtest
spec:
ports:
- port: 80
targetPort: 80
selector:
app: webphp
type: LoadBalancer
kustomizeで差分を見る
$ kustomize diff overlay/v1.1/
diff -u -N /var/folders/6c/n8tr0cq13b5bxx4dm3m5w_xh0000gn/T/noop-599200664/v1_Pod_kube.yaml /var/folders/6c/n8tr0cq13b5bxx4dm3m5w_xh0000gn/T/transformed-747587549/v1_Pod_kube.yaml
--- /var/folders/6c/n8tr0cq13b5bxx4dm3m5w_xh0000gn/T/noop-599200664/v1_Pod_kube.yaml 2018-09-06 11:37:44.000000000 +0900
+++ /var/folders/6c/n8tr0cq13b5bxx4dm3m5w_xh0000gn/T/transformed-747587549/v1_Pod_kube.yaml 2018-09-06 11:37:44.000000000 +0900
@@ -6,7 +6,7 @@
name: kube
spec:
containers:
- - image: sasenomura/nginx:latest
+ - image: sasenomura/nginx:1.1
name: nginx
ports:
- containerPort: 80
imageが sasenomura/nginx:latest -> sasenomura/nginx:1.1に変更されていることがわかる
- - image: sasenomura/nginx:latest
+ - image: sasenomura/nginx:1.1