Kustomize 書き方
設定ファイル書き方
ベースとなる設定と、開発環境向けの設定とが存在する想定でファイルのサンプルを記述します。
ディレクトリ構成
.
├── bases
│ ├── deployment.yaml
│ ├── kustomization.yaml
│ └── service.yaml
└── overlays
└── dev
├── deployment.yaml
└── kustomization.yaml
basesは各環境に共通する設定ファイルを配置します。overlaysはそれぞれの環境固有の設定ファイルを配置します。
設定内容
bases
kustomization.yamlのresourcesで指定したファイルを読み込みます。
kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: first-deployment
spec:
selector:
matchLabels:
app: first-nginx
replicas: 3
template:
metadata:
labels:
app: first-nginx
spec:
containers:
- name: first-nginx
image: nginx:1.18
ports:
- containerPort: 80
service.yaml
apiVersion: v1
kind: Service
metadata:
name: first-service
spec:
type: NodePort
ports:
- name: "nginx-port"
protocol: "TCP"
port: 80
nodePort: 30080
selector:
app: first-nginx
overlays/dev
basesで記述した設定に対し、差分となる箇所のみ記述します。下記の例では、dev のみレプリカ数が 1 となります。
kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../bases
patches:
- path: deployment.yaml
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: first-deployment
spec:
replicas: 1
使用方法
kustomization.yamlの内容でマニフェストを標準出力します:
kustomize build bases/
# ビルドしたマニフェストでリソースを作成
kustomize build bases/ | kubectl apply -f -
kubectlコマンドを使ってkustomization.yamlの内容でリソースを作成します:
kubectl apply -k bases/
- dev 向けの設定でリソースを作成します:
kubectl apply -k overlays/dev/