Kubernetes cron工作需要从生产而不是从最新获得标签吗?

Wil*_*oss 9 kubernetes

我有一个Kubernetes Cron工作,它运行着我的仓库的最新图像。在cron作业的yaml定义中,图像定义如下所示:

image: 123456789.abc.ecr.us-west-1.amazonaws.com/company/myservice:latest
Run Code Online (Sandbox Code Playgroud)

问题是,只要GitHub中有要合并的主代码,我们的最新标签就会随时更新。但是,此时代码尚未部署到生产。尽管没有连续部署,所以我们的代码未部署在prod中,但是cron作业将使用master的最新代码。

它是否可以作为标记将生成cron作业的“ prod”映像的解决方案?在这种情况下,当我们部署时,产品映像将更新为该映像。另外,如果发生回滚,我们会将产品映像更新为现在要还原到的映像。

还是对此问题有更好的解决方案/模式?

Ank*_*nde 3

您可以创建 git 发布标签或使用提交 ID。将此值放入配置映射中,并且 cron 作业容器应使用此 commit-id 或release 标记来提取代码。因此,登台和生产配置可以有不同的标签。

我不建议latest在 kubernetes 上使用标签进行部署。它与 docker 配合良好,但与 kubernetes + docker 配合不好。创建不可变的图像标签。Kuberentes 只比较 tag,而不比较 tag + SHA。 https://discuss.kubernetes.io/t/use-latest-image-tag-to-update-a-deployment/2929

imagePullPolicy: always或者您可以与最新标签一起使用。