是否可以使用kubectl补丁来修补 yaml文件?
所以我的意思是不打补丁已经部署的带有json数组但有文件的部署:
kubectl patch -f deployment.yaml -p '{"spec":{"containers":[{"name":"test","image":"test"}]}}'
(代码段不起作用)
或者如果不可能的话,如何最佳实践基于json数组操作kubernetes yaml?
答案 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会在通用示例文件上执行补丁的合并。
可以用几种方法定义这些补丁。其中之一是patchesJSON6902
。 Here is an example如何做到这一点。