目前,要更新k8s部署映像,我们使用kubectl set image deployment/deployment_name container=url_to_container
命令,如下所示:
initContainer
虽然此命令更新了部署中主容器使用的URL,但它不会更新部署中也设置的kubectl
的URL。
我是否可以使用类似的initContainer
命令将{{1}}更新为同一网址?
答案 0 :(得分:7)
documentation似乎表明只关注容器。
也许您可以切换到kubectl patch
?
(我知道这更乏味......)
kubectl patch deployment/deployment_name --patch "{\"spec\": {\"template\": {\"spec\": {\"initContainers\": [{\"name\": \"container_name\",\"image\": \"url_to_container\"}]}}}}"
答案 1 :(得分:4)
自从接受答案以来,团队developed能够为Kubernetes初始化容器设置映像。使用相同的命令,只需在提供的命令的容器部分中使用初始化容器名称即可。
kubectl set image deployment/deployment_name myInitContainer=url_to_container
如果要在一个命令中更新两个容器映像,请使用:
kubectl set image deployment/deployment_name myInitContainer=url_to_container container=url_to_container
答案 2 :(得分:0)
上面的代码段基于@Hiruma提供的解决方案。因此,这里我删除了json参数上的空白,并添加了一个命名空间示例。
之所以这样做,是因为在为drone.io编写管道时遇到了问题。
kubectl patch deployment deployment_name -n namespace_name -p "{\"spec\":{\"template\":{\"spec\":{\"initContainers\":[{\"name\":\"deployment_name\",\"image\":\"url_to_container"}]}}}}"