我需要为 kubernetes 清单中的每个对象添加元数据标签;
extraLabel: TEST-1234567890
。标签值因测试/acc/prod 环境而异。我使用以下补丁配置将标签应用于每个环境的每个 kubernetes 对象:
测试/kustomize.yml:
resources:
- ../base
patches:
- path: patch-test.yml
测试/补丁测试.yml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: some-deployment
labels:
extraLabel: TEST-1234567890
spec:
template:
metadata:
labels:
extraLabel: TEST-1234567890
---
apiVersion: v1
kind: Service
metadata:
name: some-service
labels:
extraLabel: TEST-1234567890
---
...etc
这有点麻烦,因为每个 kubernetes 对象都必须手动添加到每个环境的补丁清单中,并且标签值在多个补丁文件中重复。我正在寻找一种方法让 kustomize 自动将标签(和值,根据环境而变化)应用到每个 kubernetes 对象。
我尝试创建包含
commonLabels
部分的补丁清单,但是使用 commonLabels 导致标签也应用于 selector.matchLabels
和 labelSelector.matchLabels
,这是一个不希望的结果。尝试使用以下方法修补 commonLabels 部分:
- target:
kind: Deployment
patch: |-
- op: remove
path: /spec/selector/matchLabels/extraLabel
... etc
没用。有人能解决这个问题吗?
对于任何感兴趣的人,我设法使用
labels[].pairs
部分为每个对象添加标签。
测试/kustomize.yml:
resources:
- ../base
labels:
- pairs:
extraLabel: TEST-1234567890
someOtherLabel: abc
includeTemplates: true
includeTemplates
设置为 true 也可以将标签添加到模板部分(例如 spec.template.metadata.labels
)