【问题标题】:kubectl patch yaml file not resource objectkubectl 补丁 yaml 文件不是资源对象
【发布时间】:2020-03-30 12:12:02
【问题描述】:

有没有办法用 kubectl 补丁修补 yaml 文件

所以我的意思是不要修补已经部署的例如使用 json 数组但文件进行部署:

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

(代码 sn-p 不起作用)

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

【问题讨论】:

  • 您是否尝试过:kubectl patch -f file.yaml -p 'JSON' --dry-run -o yaml > file.yaml

标签: yaml kubectl


【解决方案1】:

如果您查看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 manifest 的方法方法是Kustomize

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

可以通过多种方式定义这些补丁。其中之一是patchesJSON6902Here is an example 如何做到这一点。

【讨论】:

    猜你喜欢
    • 2023-02-10
    • 2018-08-19
    • 2019-08-28
    • 2019-01-09
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 2021-07-25
    • 2015-12-17
    相关资源
    最近更新 更多