在 kustomize 覆盖层之间共享补丁 - 不识别变形金刚

Sharing patches between kustomize overlays - does not recognise transformers

我正在尝试在叠加层之间共享 JSON 补丁。我可以做类似的事情:

bases:
- ../bases
patchesJson6902:
- target:
  ...

但我必须为每个叠加层复制完整目标。我更愿意在一个地方描述目标和补丁,然后将其拉入需要它的叠加层中。

因此我尝试使用 this approach where your kustomization.yaml has a transformers directive, pointing at a file explicitly triggering the plugin

the docs 看来这应该适用于我的叠加层 kustomization.yaml:

bases:
- ../bases

transformers:
- ../transformers/example

但是当我 运行 kubectl apply -k 我得到:

Error: json: unknown field "transformers"

谁能指出我做错了什么?有更好的方法吗?

内置的Kustomize版本比较老,2.0.3。这是在添加变压器系统之前。您必须使用独立版本的 Kustomize。

您需要 install kustomize 二进制文件而不是使用 kubectl 来生成这些清单。正如@coderanger 提到的,与 kubectl 捆绑在一起的 Kustomize 版本来自早于 Transformers 的版本。

安装 kustomize 后,您可以像这样构建清单:

kustomize build >dir<

然后将产生类似于 kubectl kustomize >dir<

的 STDOUT 流

如果您希望直接将生成的清单应用到您的 API 服务器,您可以将 STDOUT 直接通过管道传输到 kubectl apply。例如:

kustomize build >dir< | kubectl apply -f-