我使用以下代码在Kubernetes Helm图表中拥有所有应用程序:
# values.yaml
default:
IMAGE_REPO: myorg
IMAGE_NAME: api
IMAGE_TAG: latest
我了解到,为了让Helm知道它必须重新部署豆荚(即下拉最新图片),我必须更改IMAGE_TAG
。我的问题是如何管理?我是否在每次部署,git commit,git pull master上手动更新values.yaml文件,然后运行helm upgrade api --values values.yaml ./
?
或者最好将values.yaml
留在latest
上并通过命令行直接更新,如:
helm upgrade api --values values.yaml ./ --set IMAGE_TAG=ab31f452
答案 0 :(得分:2)
使用git(99%的时间)
对于生产部署或需要跟踪的任何地方,我希望它在git中并从那里推送。掌舵图表还会随着您的应用程序的发展而变化,因此这也意味着您可以通过掌舵图表获得工作应用程序版本的检查点。
对于不需要复制的开发或快照环境,有时我可能会使用helm
较为不正式的方法,根据需要推出新的图像标签。如果您有像Jenkins之类的东西或任何追踪事情发生时间和方式的工作奔跑者,则更是如此。
这在很大程度上取决于应用程序所运行的环境。它的范围从需要审计跟踪的应用程序到开发人员,一直到从开发到测试部署到生产部署(必须在git中进行)一直到另一端。手工生产的东西的范围(最终在git中需要它)。
我了解到,为了让Helm知道它必须重新部署吊舱(即拉下最新图片),我必须更改IMAGE_TAG
这并不完全正确,当资源规格更改时,kubernetes会重新安排pod的时间。您可以更改Pod规范上的注释或标签,然后替换Pod。然后可以在pod规范中设置imagePullPolicy: Always
。
仍然,不要使用它来依赖:latest
。有一天会咬你的。
答案 1 :(得分:1)
推荐用于生产环境的图像标签是不可变标签。这样我们就可以轻松了解k8s集群上正在运行哪个版本。另外,您还必须运行这样的命令,因为image标签是嵌套的vales。
helm upgrade api --values values.yaml ./ --set **default.IMAGE_TAG**=ab31f452