k8s patch deployment 的 image 和 imagePullSecrets 的方法

2020-10-22 07:25:13 +08:00
 foMM

尝试过可以用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 的imageimagePullSecrets

感谢

3425 次点击
所在节点    Kubernetes
6 条回复
wd
2020-10-22 07:27:20 +08:00
错误不是说的很明白了么 你需要给 name 它才知道你是 patch 旧的 还是加新的 container 啊
binux
2020-10-22 07:34:35 +08:00
用 JSON op 方式修改
foMM
2020-10-22 08:21:39 +08:00
@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
binux
2020-10-22 09:06:02 +08:00
/spec/template/spec/containers/0/image
0bit
2020-10-22 09:15:38 +08:00
没直接用过 patch 修改,瞎猜的:
containers 里是一个数组[ ],可能是需要指定 name 来说明你要修改的是哪一个 container ?毕竟还有可能有 sidecar 之类的配置。

另外,感觉还是直接维护 Helm Chart 更好, 之后只要改 values.yaml,然后 helm upgrade 就行了。
foMM
2020-10-22 10:23:48 +08:00
@binux #4
@0bit #5

感谢,确实是数组的原因。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/717287

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX