kubectl补丁yaml文件不是资源对象

时间:2020-03-28 23:12:39

标签: yaml kubectl

是否可以使用kubectl补丁来修补 yaml文件

所以我的意思是不打补丁已经部署的带有json数组但有文件的部署:

kubectl patch -f deployment.yaml -p '{"spec":{"containers":[{"name":"test","image":"test"}]}}'

(代码段不起作用)

或者如果不可能的话,如何最佳实践基于json数组操作kubernetes yaml?

1 个答案:

答案 0 :(得分:2)

如果查看kubectl的帮助文档,您会发现它不是受支持的功能:

$> kubectl patch -h
Update field(s) of a resource using strategic merge patch, a JSON merge patch, or a JSON patch.

由于文件系统上的文件不是API资源。我个人认为,使用JSON patches处理Kubernetes清单的方法是Kustomize

Kustomize是覆盖引擎。与Helm类似,它的设计方式可以自动将软件部署到Kubernetes。但是,它们的做法不同。 Helm将管理一系列变量文件,然后在运行时将其注入到模板中,而Kustomize会在通用示例文件上执行补丁的合并。

可以用几种方法定义这些补丁。其中之一是patchesJSON6902Here is an example如何做到这一点。