使用 Kustomize 在 kubernetes 清单中修补列表

2023-11-23

我想修补(覆盖)list in 库伯内特斯体现为定制化。 我正在使用 patchStrategicMerge 方法。 当我修补不在列表中的参数时,修补会按预期工作 - 仅替换 patch.yaml 中的已寻址参数,其余部分保持不变。 当我修补列表时,整个列表都会被替换。

如何仅替换列表中的特定项目,并且列表中项目的资源保持不变?

我找到了这两个资源:
https://github.com/kubernetes-sigs/kustomize/issues/581
https://github.com/kubernetes/community/blob/master/contributors/devel/sig-api-machinery/strategic-merge-patch.md
但无法做出所需的解决方案。

示例代码: 原始文件.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

补丁.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

自定义.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

你能做的就是使用jsonpatch代替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

patch:

cat <<EOF >./patch.yaml
- op: replace
  path: /spec/receivers/0/slackConfigs/0/username
  value: Karl
EOF
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Kustomize 在 kubernetes 清单中修补列表 的相关文章

随机推荐

  • 使用比核心数量更多的工作进程

    ThisPYMOTW 的示例给出了使用的示例multiprocessing Pool 哪里的processes传递的参数 工作进程数 是机器上核心数的两倍 pool size multiprocessing cpu count 2 否则该类
  • Celery 3.1.9 Django 集成,指定设置文件,不使用 djcelery

    我今天开始将 celery 3 1 9 与 Django 一起使用 这个较新的版本与 django 具有更紧密的集成 无需使用 django celery 我使用多个设置文件 我想知道是否有一种简单的方法来指定初始化时使用哪个设置文件cel
  • 如何检查对象的所有属性是否为 null 或为空?

    我有一个对象 我们称之为ObjectA 该对象有 10 个都是字符串的属性 var myObject new Property1 Property2 Property3 Property4 是否有办法检查所有这些属性是否为 null 或为空
  • 错误:无法将“int&”类型的非常量左值引用绑定到“int”类型的右值

    我需要创建一个Bar对象 它有一个私有对象Foo f 然而 价值Foo对象参数应通过特定方法传递int genValue 如果我初始化f在构造函数范围内Bar 编译器报错 比如没有构造函数Foo 如果我这样构建Bar f genValue
  • finally 不在 .NET try-finally 块中执行时的条件

    基本上我听说某些条件会导致 NET 超越finally堵塞 有谁知道这些条件是什么 两种可能性 堆栈溢出异常 执行引擎异常 当有一个finally块时 不会执行StackOverflowException因为堆栈上没有空间来执行更多代码 当
  • 解决方案内的 Visual Studio 项目参考

    在解决方案中引用项目的最佳方式是什么 我通过添加引用 gt 项目添加了引用 然而 它链接到发布 DLL 或调试 DLL 我想在引用中包含项目本身 当我们编译项目时 必须编译所有引用项目 通过依赖项 这个怎么做 如果您想要引用项目本身 而不是
  • 使用 HTML 链接 rel 导入 HTML 文档

    我正在尝试使用以下命令将 HTML 文档导入到我的主文档中 但它似乎不起作用 我正在关注这个演示文稿 使用 Chrome 28 并且我已启用这两个标志about flags Enable experimental WebKit featur
  • 使用 css 设置 div 外宽度

    请问有没有办法设置outerwidth of a div using css忽略填充和边框 当我设置一个div to be 50 宽度 内边距和边框将添加到宽度中 如果没有的话我该如何解决这个问题javascript or jQuery o
  • 如果每个观测值都有新数据,我如何一次订阅 Angular2 中的多个可观测值并等待?

    我有一个角度组件 它使用 3 个服务 这些服务中的每一个都有一个我可以订阅的观察者 如果观察到的任何变化通过 websockets feathers js 发生 则必须更新组件的视图 我想要doSomethingWithTheNewData
  • 如何更新 SQL 数据库中的值? SQLite/Python

    我创建了一个表 并将数据插入到表中 我想知道如何更新 编辑数据 例如 如果我在表中有多个列 其中一列名为 age 该列的数据为 17 而我现在想用 18 替换 17 我会这样做吗下列的 import sqlite3 as lite impo
  • 为什么日期选择器中的日期显示为最后一天?

    我使用 datepicker c 角材料 这是代码 td div class input group div class input group addon div div td
  • centos libgeos 存储库丢失

    在 centos 7 3 上 最小尝试安装 shapely 或 geopandas 需要访问https github com libgeos libgeoslibgeos 尝试通过安装这个sudo yum install libgeos d
  • 没有事件参数的 EventHandler 类型

    当我们想要将数据传递给事件订阅者时 我们使用 EventArgs 或 CustomEventArgs 来实现此目的 Net 提供了一个内置类型 EventHandler 它也使用内置的 EventArgs 类的实例作为参数 当我需要通知订户
  • 将 SimpleMembership 迁移到 Identity 2.0

    这个问题已经演变 所以我更新了标题 这是原来的标题 Identity 2 UserManager Find 抛出 无效的对象名称 dbo ApplicationUser 错误 我正在从 SimpleMembership 转换为 Identi
  • JasperReport 报告中的 Excel 单元格格式

    我正在研究生成 Excel 文件的 JasperReport 报告 由于某种原因 我的单元格格式 类型不正确 例如 我的单元格中有 Date 对象 但是当我生成 Excel 文件时 它将单元格类型设置为数字 或者长整型是单元格中的文本 但单
  • “RxSwift”倒计时器

    我需要一个三十秒计时器RxSwift 这是一个重复的问题 但问题没有明确的答案 现有答案的更好方法 let countDown 15 15 seconds Observable
  • C++ 在派生类中初始化基类的 const int?

    我的基类中有一个常量 int 变量 我想在派生类中初始化响应变量 并使用不同的值 作为参数 这可能吗 这就是我所做的 Base h methods implemented in Base cpp in the actual code cla
  • hadoop 块丢失异常

    我收到以下错误 Diagnostics org apache hadoop hdfs BlockMissingException Could not obtain block BP 467931813 10 3 20 155 1514489
  • 请求安装包

    状态 已批准 但存在问题 需要采取进一步行动 我们发现您的应用存在问题 您需要按照如下所述进行检查并采取措施 以便您的应用将来不会受到影响 发现的问题 权限的使用与应用程序的核心目的没有直接关系 我们发现您的应用不符合 REQUEST IN
  • 使用 Kustomize 在 kubernetes 清单中修补列表

    我想修补 覆盖 list in 库伯内特斯体现为定制化 我正在使用 patchStrategicMerge 方法 当我修补不在列表中的参数时 修补会按预期工作 仅替换 patch yaml 中的已寻址参数 其余部分保持不变 当我修补列表时