掌舵升级不会拉新容器

时间:2017-09-21 06:24:39

标签: kubernetes continuous-integration devops kubernetes-helm

我构建一个简单的NodeJS API,将Docker Image推送到repo并使用Helm install将其部署到我的k8s(工作得很好)。

pullPolicy为Always

现在我想更新源代码并部署我的应用程序的更新版本。我在所有文件中碰撞了版本,构建并推送了新的Docker镜像并尝试了helm upgrade但似乎什么也没发生。 使用helm list我可以看到已部署修订版,但未部署对源代码的更改。 watch kubectl get pods还显示没有按照您对kubectl --apply...

的预期方式创建新的广告连播

我做错了什么?

2 个答案:

答案 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从来都不一样,因此可以使用。