我们通过这种方式将kustomize用于kubernetes部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:${IMAGE_VERSION}
ports:
- containerPort: 80
并部署此Yaml,用1.7.9代替变量IMAGE_VERSION
kustomize build ./nginx/overlays/dev/ | sed -e 's|${IMAGE_VERSION}'"|1.7.9|g" | kubectl apply -f -
由于kubectl 1.14支持kustomize。
现在我们可以做一些非常棒的事情
kubectl apply -k ./
但是如何用此新命令替换IMAGE_VERSION变量?
答案 0 :(得分:2)
您必须创建一个包含自定义项的kustomization.yaml
文件。
即:
# kustomization.yaml
bases:
- ../base
images:
- name: nginx-pod
newTag: 1.15
newName: nginx-pod-2
对于模板,您将创建一个包含kustomization.yaml的基本文件夹,并参考部署和依赖项,即:
# ../base/kustomization.yaml
resources:
- deployment.yaml
和
# ../base/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx-pod
运行命令:
kubectl apply -k
以上命令将编译自定义项,并生成以下要应用到集群的yaml:
# Modified Base Resource
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
# The image image tag has been changed for the container
- name: nginx
image: nginx-pod-2:1.15