Kustomize:自动为每个 kubernetes 对象添加环境元数据标签

问题描述 投票:0回答:1

我需要为 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

没用。有人能解决这个问题吗?

kubernetes kustomize
1个回答
0
投票

对于任何感兴趣的人,我设法使用

labels[].pairs
部分为每个对象添加标签。

测试/kustomize.yml:

resources:
  - ../base

labels:
  - pairs:
      extraLabel: TEST-1234567890
      someOtherLabel: abc
    includeTemplates: true

includeTemplates
设置为 true 也可以将标签添加到模板部分(例如
spec.template.metadata.labels

© www.soinside.com 2019 - 2024. All rights reserved.