在创建Pod后由于各种原因会更新Pod的配置信息,如Image,Tag和Resistry。 在 Kustomize 中,有一个自定义指令允许轻松更新容器镜像的name、tags、repositories, 这是一个打patch的方式更新,非常方便维护多个版本的yaml files。
使用Kustomize更改Image, Tag或者Registry
简单的说,要更改Image name、tags或repositories,可以images在以下位置声明一个特殊指令kustomization.yaml:
images:
- name: <imageName>
newName: <newImageName>
newTag: <newImageTag>
例如,假设您的项目具有如下文件结构:
~/myApp
├── pod.yaml
└── kustomization.yaml
myapp-pod文件中的资源声明了一个使用带有标签的pod.yaml
# ~/myApp/pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- name: myapp-container
image: busybox:1.36.0
command: ['sh', '-c', 'echo The app is running! && sleep 3600']
Image busybox
以及tag 1.36.0
可以通过更新文件来kustomization.yaml来更改,例如,
# ~/myApp/kustomization.yaml
resources:
- pod.yaml
images:
- name: busybox
newName: my-private.docker.registry/alpine
newTag: 3.17.3
查看一下修改后的效果
$ kubectl kustomize ~/myApp
在上面的示例中,该busybox映像已替换为alpine映像,tag 为3.17.3。
最终生效
最终更改还需要使用下面的命令
$ kubectl apply -k ~/myApp
更改多个图像和标签
# ~/myApp/kustomization.yaml
resources:
- pod.yaml
images:
- name: nginx
newName: haproxy
newTag: 2.8
- name: redis
newName: memcached
newTag: 1.6.19