我构建一个简单的NodeJS API,将Docker Image推送到repo并使用Helm install将其部署到我的k8s(工作得很好)。
pullPolicy为Always
。
现在我想更新源代码并部署我的应用程序的更新版本。我在所有文件中碰撞了版本,构建并推送了新的Docker镜像并尝试了helm upgrade
但似乎什么也没发生。
使用helm list
我可以看到已部署修订版,但未部署对源代码的更改。
watch kubectl get pods
还显示没有按照您对kubectl --apply...
我做错了什么?
答案 0 :(得分:11)
只有在推出更改时,Helm才会对kubernetes对象进行更改。如果您使用:latest
,则不会对部署文件应用任何更改,因此ergo no pods将滚动更新。要继续使用latest
,您需要添加一些内容(即带有sha / version的标签),这些内容将更改并导致部署由helm更新。另请注意,您通常也需要ImagePullPolicy: Always
。
答案 1 :(得分:0)
我在.gitlab.yaml的部署脚本中解决此问题的方式,您可以在任何部署脚本中执行类似的操作。
export SAME_SHA=$(helm get values service-name | grep SHA | wc -l)
if [ SAME_SHA -eq 1] then helm uninstall service-name; fi
helm upgrade --install service-name -f service-values.yml .
这可能不是最佳的生产方法,因为您最终可能会卸载实时服务,但是对我来说,生产sha从来都不一样,因此可以使用。