在 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-
我正在尝试在叠加层之间共享 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<
如果您希望直接将生成的清单应用到您的 API 服务器,您可以将 STDOUT 直接通过管道传输到 kubectl apply
。例如:
kustomize build >dir< | kubectl apply -f-