我试图使用Kustomize,但结果是占位符行错了。
我有这样的base/deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
spec:
replicas: 1
selector:
matchLabels:
app: app
template:
metadata:
labels:
app: app
spec:
containers:
- image: IMAGE_PLACEHOLDER
name: CONTAINER_NAME_PLACEHOLDER还有base/kustomization.yaml
resources:
- deployment.yaml也包括覆盖/开发/库气孔化。
resources:
- ../../base
commonLabels:
app: myname
patchesStrategicMerge:
- change_container_name.yaml和overlays/dev/change_container_name.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
spec:
template:
spec:
containers:
- name: myname
image: registry.mycompany.ru/project/app:VERSION作为运行kubectl kustomize ./overlays/dev的结果,我在我的控制台中看到了如下所示:
...
containers:
- image: registry.mycompany.ru/project/app:VERSION
name: myname
image: IMAGE_PLACEHOLDER #--- unwanted line
name: CONTAINER_NAME_PLACEHOLDER #--- unwanted line
ports:
- containerPort: 80如何解决这个问题?
发布于 2022-08-29 11:58:57
这不是您想要的工作方式:因为containers:是一个列表,Kustomize使用容器名称来标识您想要修改的元素。因为您的修补程序中的容器名称与现有容器名称不匹配,所以您要向部署中添加一个新容器。所以你才会:
containers:
- image: registry.mycompany.ru/project/app:VERSION
name: myname
- image: IMAGE_PLACEHOLDER
name: CONTAINER_NAME_PLACEHOLDER我不知道您在这里的动机是什么,但是如果您真的想修改现有容器的名称,可以使用using修补程序而不是策略合并修补程序。该补丁可能如下所示:
- op: replace
path: /spec/template/spec/containers/0/name
value: myname我会把它用在这样的文件里:
resources:
- ../../base
commonLabels:
app: myname
patches:
- path: change_container_name.yaml
target:
kind: Deployment
name: app根据您的示例,这将产生以下输出:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: myname
name: app
spec:
replicas: 1
selector:
matchLabels:
app: myname
template:
metadata:
labels:
app: myname
spec:
containers:
- image: IMAGE_PLACEHOLDER
name: myname您可以对图像名执行相同的操作,但也可以使用图像变压器
resources:
- ../../base
commonLabels:
app: myname
patches:
- path: change_container_name.yaml
target:
kind: Deployment
name: app
images:
- name: IMAGE_PLACEHOLDER
newName: registry.mycompany.ru/project/app
newTag: VERSION这让我们:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: myname
name: app
spec:
replicas: 1
selector:
matchLabels:
app: myname
template:
metadata:
labels:
app: myname
spec:
containers:
- image: registry.mycompany.ru/project/app:VERSION
name: mynamehttps://stackoverflow.com/questions/73526585
复制相似问题