kubernetes kustomize命名空间标签修补删除现有标签

rryofs0p  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(141)

我的Kustomize修补程序可以标记名称空间,但会覆盖现有的标签
所有的旅客名单-
kustomize.yaml

apiVersion: kustomize.config.k8s.io/vlbetal
kind: Kustomization

resources:
 - ../../../../base/labels

patches:
 - path: patches/test-patch.yaml 
   target:
     kind: Namespace 
     name: dev-test

字符串
test-patch.yaml

- op: add
  path: /metadata/labels 
  value:
    env: dev
    db: dev


namespace.yaml

api Version: v1 
kind: Namespace 
metadata:
  name: dev-test


如何避免覆盖现有的命名空间标签?

i86rm4rw

i86rm4rw1#

当前面片将使用给定值替换labels对象,从而覆盖所有以前的标签。
在技术层面上,我们希望将两个字段envdb添加到label-对象中。因此,我们需要两个单独的add操作来添加这两个字段:

- op: add
  path: /metadata/labels/env
  value: dev
- op: add
  path: /metadata/labels/db
  value: dev

字符串
请注意,为了使这个解决方案工作,命名空间需要已经有一个labels对象。如果没有,kustomize将报告以下错误:

Error: add operation does not apply: doc is missing path: "/metadata/labels/env": missing value


我们可以添加一个空的labels-部分,如下所示:

api Version: v1 
kind: Namespace 
metadata:
  name: dev-test
  labels: {}


如果命名空间已经有标签,例如:

api Version: v1 
kind: Namespace 
metadata:
  name: dev-test
  labels:
    foo: bar


那我们什么都不需要做;将添加新标签。

相关问题