已经使用DevOps的流水线部署了服务A,再次运行流水线后,最新的镜像已经推送到了私有仓库Harbor上,但是服务中使用的镜像没有更新,还是使用的是上次的镜像。但是把服务A删除后再运行流水线就能拉取最新的镜像文件了
没有拉取最新的镜像文件
有遇到过这样问题的吗?
RolandMa1986K零S
mingyunzhiye 你deployment中image的tag是latest 还是版本号?
是latest
RolandMa1986K零S
- 已编辑
mingyunzhiye 第一不建议使用latest,最好使用版本号,deploy的时候更新版本号。 第二如果使用latest,请确保spec.containers.imagePullPolicy设置为Always。
使用 latest pod 模板没有任何变化,不会触发升级。 参考:https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#updating-a-deployment
1、流水线每次运行都会产生新版本(版本号取的是流水线的BUILD_NUMBER)的镜像,同时把新版本的镜像标记为latest
2、spec.containers.imagePullPolicy设置为Always,这个方案我这边验证一下
RolandMa1986K零S
mingyunzhiye 看文档,只设置2 是没有效果的。 Rollout的触发条件:
“仅当 Deployment Pod 模板(即 .spec.template)发生改变时,例如模板的标签或容器镜像被更新, 才会触发 Deployment 上线。 其他更新(如对 Deployment 执行扩缩容的操作)不会触发上线动作。”
使用latest,imagePullPolicy这个默认就是Always吧?
这个还需要手动设置成Always吗?
加上这个spec.containers.imagePullPolicy设置为Always还是有上面的问题
JeffK零SK壹S
mingyunzhiye 应用需要自己更新的,目前不能自动更新,即使使用的latest镜像,应用也不会自动触发更新
yuswiftK零S
可以在devops集成kubectl 更新你的应用 这有个文档可以参考一下
https://github.com/yuswift/website/blob/devops-go-project-example/content/en/docs/devops-user-guide/examples/go-project-pipeline.md