K8S中如何方便维护多版本的Yamls文件

63 阅读1分钟

在创建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