我们以这种方式使用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变量?
您必须创建包含自定义项的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