kubernetes清单中带有Kustomize的补丁列表

kubernetes清单中带有Kustomize的补丁列表,kubernetes,kustomize,Kubernetes,Kustomize,我想用Kustomize在kubernetes清单中修补(覆盖)列表。 我正在使用patchesStrategicMerge方法。 当我修补列表中未列出的参数时,修补工作如预期的那样-仅替换patch.yaml中的已寻址参数,其余参数不变。 当我更新补丁列表时,整个列表将被替换 如何仅替换列表中的特定项目,而列表中项目的res保持不变? 我找到了这两个资源: 但没能找到理想的解决方案 exmaple代码: orig-file.yaml apiVersion: monitoring.coreo

我想用Kustomizekubernetes清单中修补(覆盖)列表。 我正在使用patchesStrategicMerge方法。 当我修补列表中未列出的参数时,修补工作如预期的那样-仅替换patch.yaml中的已寻址参数,其余参数不变。 当我更新补丁列表时,整个列表将被替换

如何仅替换列表中的特定项目,而列表中项目的res保持不变?

我找到了这两个资源:


但没能找到理想的解决方案

exmaple代码: orig-file.yaml

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: alertmanager-slack-config
  namespace: system-namespace
spec:
  test: test
  other: other-stuff
  receivers:
    - name: default
      slackConfigs:
        - name: slack
          username: test-user
          channel: "#alerts"
          sendResolved: true
          apiURL:
            name: slack-webhook-url
            key: address
patch.yaml:

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: alertmanager-slack-config
  namespace: system-namespace
spec:
  test: brase-yourself
  receivers:
    - name: default
      slackConfigs:
        - name: slack
          username: Karl
kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- orig-file.yaml

patchesStrategicMerge:
- patch.yaml
我得到的是:

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: alertmanager-slack-config
  namespace: system-namespace
spec:
  other: other-stuff
  receivers:
  - name: default
    slackConfigs:
    - name: slack
      username: Karl
  test: brase-yourself
我想要的是:

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: alertmanager-slack-config
  namespace: system-namespace
spec:
  other: other-stuff
  receivers:
    - name: default
      slackConfigs:
        - name: slack
          username: Karl
          channel: "#alerts"
          sendResolved: true
          apiURL:
            name: slack-webhook-url
            key: address
  test: brase-yourself
您可以做的是使用patchesStrategicMerge而不是
patchesStrategicMerge
,因此在您的情况下:

cat <<EOF >./kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
- orig-file.yaml

patches:
  - path: patch.yaml
    target:
      group: monitoring.coreos.com
      version: v1alpha1
      kind: AlertmanagerConfig
      name: alertmanager-slack-config

EOF

cat谢谢你的回答!您知道使用patchesStrategicMerge获得相同结果的任何方法/解决方法吗?
cat <<EOF >./patch.yaml
- op: replace
  path: /spec/receivers/0/slackConfigs/0/username
  value: Karl
EOF