尝试过可以用kubectl edit deployment xxx
可以成功
但是用
kubectl patch deployment xxx -n xxx -p \
'{"spec":{"template":{"spec":{"containers":[{"image":"new_image"}],"imagePullSecrets":[{"name":"new-secret"}]}}}}'
报错
Error from server: map: map[image:new_image] does not contain declared merge key: name
请教一下如何可以不使用 kubectl edit 的方式来更新 deployment 的image
和imagePullSecrets
感谢
1
wd 2020-10-22 07:27:20 +08:00 via iPhone
错误不是说的很明白了么 你需要给 name 它才知道你是 patch 旧的 还是加新的 container 啊
|
2
binux 2020-10-22 07:34:35 +08:00 via Android
用 JSON op 方式修改
|
3
foMM OP @wd #1 不好意思,请问需要给一个什么样的 name 才能 override 之前的值呢?
@binux #2 感谢。我尝试了一下 kubectl patch deployment xxx -n xxx --type json -p '[{"op":"replace","path":"spec/template/spec/containers/image","value":"new_image"},{"op":"replace","path":"spec/template/spec/imagePullSecrets/name","value":"new_secrete"}]' Response 是:The request is invalid |
4
binux 2020-10-22 09:06:02 +08:00 1
/spec/template/spec/containers/0/image
|
5
0bit 2020-10-22 09:15:38 +08:00 1
没直接用过 patch 修改,瞎猜的:
containers 里是一个数组[ ],可能是需要指定 name 来说明你要修改的是哪一个 container ?毕竟还有可能有 sidecar 之类的配置。 另外,感觉还是直接维护 Helm Chart 更好, 之后只要改 values.yaml,然后 helm upgrade 就行了。 |