感谢@Jonas提供的提示,我设法创建了一个简单的结构来部署和更新具有相同图像库的大量 pod。
我创建了一个这样的文件夹结构:
├── kustomization.yaml
├── base
│ ├── deployment.yaml
│ ├── kustomization.yaml
│ ├── namespace.yaml
│ └── service.yaml
└── overlays
├── one
│ ├── deployment.yaml
│ └── kustomization.yaml
└── two
├── deployment.yaml
└── kustomization.yaml
所以这里的主要技巧是kustomization.yaml
在主文件夹中有一个指向每个应用程序的文件:
resources:
- overlays/one
- overlays/two
namePrefix: winnp-
然后在base/kustomization.yaml
I 中指向基本文件:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- service.yaml
- deployment.yaml
- namespace.yaml
然后在每个应用程序中,我为部署和服务使用命名空间、后缀和 commonLabels,并使用一个补丁来重命名基本命名空间:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: ns-one
nameSuffix: "-one"
commonLabels:
app: vbserver-one
bases:
- ../../base
patchesStrategicMerge:
- deployment.yaml
patches:
- target:
version: v1 # apiVersion
kind: Namespace
name: base
patch: |-
- op: replace
path: /metadata/name
value: ns-one
现在,通过一个简单的命令,我可以部署或修改所有应用程序:
kubectl apply -k .
因此,要更新图像,我只需deployment.yaml
使用新图像更改文件并再次运行命令。
我上传了我在这个GitHub 存储库中所做的完整示例