Kubernetes 舵手升级不需要';不要拉新的集装箱
我构建了一个简单的NodeJSAPI,将Docker映像推送到一个repo,并使用Helm安装将其部署到我的k8s上(工作非常好) pullPolicy始终是Kubernetes 舵手升级不需要';不要拉新的集装箱,kubernetes,continuous-integration,devops,kubernetes-helm,Kubernetes,Continuous Integration,Devops,Kubernetes Helm,我构建了一个简单的NodeJSAPI,将Docker映像推送到一个repo,并使用Helm安装将其部署到我的k8s上(工作非常好) pullPolicy始终是 现在我想更新源代码并部署我的应用程序的更新版本。我在所有文件中修改了版本,创建并推送了新的Docker映像,并尝试了helm升级,但似乎什么都没发生。 通过helmlist我可以看到修订版已经部署,但是对源代码的更改没有部署。 watch kubectl get pods还显示,没有按照您所期望的方式创建新的pods,kubectl--a
现在我想更新源代码并部署我的应用程序的更新版本。我在所有文件中修改了版本,创建并推送了新的Docker映像,并尝试了helm升级
,但似乎什么都没发生。
通过helmlist
我可以看到修订版已经部署,但是对源代码的更改没有部署。
watch kubectl get pods
还显示,没有按照您所期望的方式创建新的pods,kubectl--apply…
我做错了什么?只有在有更改要转出时,头盔才会转出对kubernetes对象的更改。如果您使用
:latest
没有要应用于部署文件的更改,因此不会有pods滚动更新。要继续使用最新版本
,您需要添加一些内容(即使用sha/版本的标签),这些内容将发生更改,并导致helm更新部署。还要记住,您通常也需要ImagePullPolicy:Always
。我在.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从来都不一样,所以这是可行的。请参阅中的建议解决方案