如何使用Kustomize为Kubernetes StatefulSet添加环境变量
问题根因
你使用的JSON Patch格式存在错误:路径/spec/template/spec/containers/0/env/-的含义是向env数组末尾追加单个元素,因此value字段需要直接传入单个环境变量配置对象,你在value下额外加了短横线将值定义为了数组,导致追加逻辑无法匹配,最终补丁不生效。
修正方案
方案1:修改JSON Patch格式
直接移除value下多余的短横线即可:
namespace: myns resources: ... patches: - patch: |- - op: add path: "/spec/template/spec/containers/0/env/-" value: name: MY_ENV2 value: "2" target: kind: StatefulSet namespace: myns name: myapp
方案2:使用更易维护的Strategic Merge Patch
这种写法不需要记忆数组下标,也不需要关心原始配置是否存在env字段,Kustomize会自动合并:
namespace: myns resources: ... patches: - patch: |- apiVersion: apps/v1 kind: StatefulSet metadata: name: myapp namespace: myns spec: template: spec: containers: - name: mycontainer env: - name: MY_ENV2 value: "2" target: kind: StatefulSet namespace: myns name: myapp
内容的提问来源于stack exchange,提问作者Salvatore D'angelo
相关产品推荐
相关产品推荐

