首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kubernetes清单中的修补清单

kubernetes清单中的修补清单
EN

Stack Overflow用户
提问于 2021-06-10 08:26:47
回答 1查看 11.7K关注 0票数 7

我想在kubernetes清单中修补(覆盖)列表。我正在使用patchesStrategicMerge方法。当我修补未在列表中的参数时,修补工作将按预期进行--只替换patch.yaml中已寻址的参数,rest将不受影响。当我修补程序列表时,整个列表将被替换。

如何只替换列表中的特定项而列表中的项的区域保持不变?

我发现这两种资源:

https://github.com/kubernetes-sigs/kustomize/issues/581

https://github.com/kubernetes/community/blob/master/contributors/devel/sig-api-machinery/strategic-merge-patch.md

但没能找到想要的解决办法。

exmaple代码: orig-file.yaml

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

代码语言:javascript
复制
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- orig-file.yaml

patchesStrategicMerge:
- patch.yaml

我得到的是:

代码语言:javascript
复制
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

我想要的:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-10 10:33:38

您可以做的是使用强生贴片而不是patchesStrategicMerge,所以在您的情况下:

代码语言:javascript
复制
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

贴片:

代码语言:javascript
复制
cat <<EOF >./patch.yaml
- op: replace
  path: /spec/receivers/0/slackConfigs/0/username
  value: Karl
EOF
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67917460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档