为新类型扩展 kustomize 图像转换器

2023-12-12

有没有办法扩展 kustomize 图像转换器以将更多键识别为图像说明符?nameReference变压器确实是为了namePrefix and nameSuffix变压器。

定制化images:变压器对于 k8s 清单中的图像替换和注册表重命名非常有用。

But it 仅支持嵌入的类型PodTemplate也许还有一些硬编码类型。不使用的卡PodTemplate尽管它们被处理,但没有被处理very常见的。例子包括kube-prometheus Prometheus and AlertManager资源和opentelemetry-operator OpenTelemetryCollector资源。

因此,您必须维护一堆混乱的战略合并或 json 补丁,以使用受信任的注册表等为此类图像添加前缀。


这是目前问题的一个例子。假设我必须部署前缀为的所有内容mytrusted.registryimages:变压器清单。为了简洁起见,我将使用一个虚拟图像来替换所有匹配的图像MATCHED,所以我不必将它们全部列出:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - "https://github.com/prometheus-operator/kube-prometheus"
images:
  - name: "(.*)"
    newName: "MATCHED"
    newTag: "fake"

您可能期望结果中唯一的图像是“MATCHED:fake”,但实际上:

$ kustomize build  | grep 'image: .*' | sort | uniq -c
     12         image: MATCHED:fake
      1   image: quay.io/prometheus/alertmanager:v0.24.0
      1   image: quay.io/prometheus/prometheus:v2.34.0

中的图像kind: Prometheus and kind: AlertManager资源不会匹配,因为它们不是PodTemplate.

你必须为这些编写一个自定义补丁,这会造成这样的混乱kustomization.yaml内容:

patches:
  - path: prometheus_image.yaml
    target:
      kind: Prometheus
  - path: alertmanager_image.yaml
    target:
      kind: Alertmanager

with prometheus_image.yaml:

apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
      name: ignored
spec:
      image: "MATCHED:fake"

and alertmanager_image.yaml:

apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
metadata:
      name: ignored
spec:
      image: "MATCHED:fake"

在我看来,这是可怕的。

What I want能够做的就是告诉Kustomize的图像转换器,就像它可以使用自定义配置映射生成器等进行扩展,如下所示不支持的和虚构的伪代码仿照现有的nameReference变压器

imageReference:
  - kind: Prometheus
    fieldSpecs:
      - spec/image

写完这篇文章后,我终于偶然发现了答案:Kustomize 确实支持图像转换器配置.

表达上述内容的正确方法是image_transformer_config.yaml文件包含:

images:
  - path: spec/image
    kind: Prometheus
  - path: spec/image
    kind: Alertmanager

and a kustomization.yaml引用它的条目,例如

configurations:
  - image_transformer_config.yaml

当导入为Component too.

是均匀的变压器文档指出所以我会责怪这个人是盲目的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为新类型扩展 kustomize 图像转换器 的相关文章

随机推荐

  • 如何多次appendChild(element)。 (相同元素)

    我的问题是 是否可以添加相同的元素而不重写相同的变量 我正在创建一个滑块 我需要附加一个div和一个班级slide el进入块slider 这是代码的一部分 var body html sliderBody btnLeft btnRight
  • 相同的表单数据,两个单独的提交按钮上的不同操作

    我有一个本质上是购物车的东西 需要有两个单独的结账选项 第一个操作使用户离开网站 但必须发布表单数据 如何创建两个提交按钮 将相同的表单数据发送到它们自己的单独页面 如果我理解正确 您在同一页面上有 2 个提交按钮 并且它们都具有相同的表单
  • 如何激活多模块项目中特定模块的 Maven 配置文件

    我们有一个多模块 Maven 项目 由一个父 POM 和 5 个或更多模块组成 如果我们激活自定义的 自动部署 配置文件 每个模块都可以作为构建的一部分部署到正在运行的服务器上 该配置文件在每个模块中明确定义 因为每个模块的部署方式 内容略
  • 转换为 DMatrix 后,XGBoost 训练和测试特征的差异

    只是想知道下一种情况怎么可能 def fit self train target xgtrain xgb DMatrix train label target missing np nan self model xgb train self
  • 如何从 urllib 读取lines()

    我有使用 http 的程序 我想从 http 读取数据 data urllib request urlopen someAddress read 并从中准备行列表 例如通过文件的 readlines 方法返回行 怎么做 urlopen 返回
  • 如何从 cor.test() 中提取 p.value 和估计值?

    我在 for 循环中对数据集执行 cor test 但我不知道如何从测试中提取估计和 tau 等信息 在数据集中执行 for 循环之前 cor test 函数返回如下 cor test armpit Corynebacterium 1 ar
  • 使用 jquery 查找键盘可见

    您好 我已经开发了响应式的 Android PhoneGap 应用程序 因此 当键盘可见时 我需要在纵向和横向模式下隐藏页脚 而键盘不可见时 我需要在两种模式下显示页脚 我已经尝试过该示例 但它工作不正常 如果我以纵向模式打开应用程序 当键
  • 使用元素树 findall 解析 XML 命名空间

    如何使用查询元素树findall Email 给定以下 xml
  • 如何保持选中的项目? - 列表显示

    当用户单击没有项目的空间时 我想在 ListView 上保持选中的项目 例如 项目下方的空间 但仍在 ListView 组件上 我已将 ListView 属性 HideSelection 更改为 false 但这仅在焦点更改为另一个组件时才
  • 使用 JPA 执行 VACUUM FULL

    我正在使用 PostgreSQL 数据库 我想开始VACUUM FULL使用 JPA 实体管理器 版本1 public void doVacuum entityManager createNativeQuery VACUUM FULL ex
  • 包 igraph0 已弃用,因此无法访问 gspan 包

    您好 我正在尝试书中的一些示例 使用 R 进行实用图挖掘对于子图挖掘 library subgraphMining library igraph graph1 graph ring 5 graph2 graph ring 6 databas
  • 无限滚动 ajax 调用后,类似 Tumblr 的按钮不起作用

    有一些类似的帖子 但它们已经过时了 据我所知 Tumblr 不久前更新了 API 的类似部分 创建一个喜欢按钮就像 点赞按钮 这很有效 但是在 ajax 回忆起从下一页获取更多帖子之后 赞 按钮不再起作用 我查看了文档 它指出我需要实现以下
  • 如何在 winforms 中创建自动 UI 事件跟踪?

    我需要采取现有的winform应用程序并落入事件追踪模式 希望摩擦力尽可能小 我希望将用户采取的每个操作视为一个简单的堆栈跟踪外观 MainForm LaunchThing Click ThingWindow NameInput Focus
  • 寻找有限状态机的不同调度算法的比较

    是否有任何好的资源 书籍 网站 可以对没有操作系统的嵌入式系统中的有限状态机 FSM 的不同调度算法进行很好的比较 我正在设计一个简单的嵌入式网络服务器 没有操作系统 我想知道用于安排系统中发生的不同事件的处理的各种方法 例如 如果两个事件
  • MySQL 问题:表“data_dictionary.CHARACTER_SETS”不存在

    最近我已经从 MySQL 5 1 更新到 5 5 几周后 每次访问 phpMyAdmin 应用程序时都会显示以下错误消息 1146 表 data dictionary CHARACTER SETS 不存在 我已经调查了这个问题 以至于我被迫
  • Xcode 6 中的箭头键不起作用

    我在 OS X Yosemite 上的 Xcode 6 上遇到了最奇怪的问题 由于某种原因 我无法再使用左右箭头键在源代码中导航 相反 系统会发出提示音 向上和向下箭头工作正常 恐怕这可能与我摆弄按键绑定有关 不过 仅更改了块 取消 缩进
  • 十进制正则表达式验证

    我正在使用以下正则表达式来验证带点的十进制数字 0 9 0 9 它适用于除该情况之外的所有情况12 工作示例 12 12 2 10 222 12 我想在用户输入时引发验证错误 12 至少需要输入小数点后一位数字 例如12 1 您可以使用这个
  • 根据条件消除 XML 中的行

    这是创建所需数据的脚本 CREATE TABLE dbo TestXML ID int NOT NULL PID int NULL Code int NULL Col1 int NULL Col2 int NULL Col3 decimal
  • 变换错误:缩放和溢出:隐藏在 Chrome 中

    使用 CSS3 属性transform scale 我发现了有趣的问题 我想为图片做一点缩放效果 但是当我用于父 div 时overflow hidden and border radius 子div扩展了父div的范围 Update 问题
  • 为新类型扩展 kustomize 图像转换器

    有没有办法扩展 kustomize 图像转换器以将更多键识别为图像说明符 像nameReference变压器确实是为了namePrefix and nameSuffix变压器 定制化images 变压器对于 k8s 清单中的图像替换和注册表