当前,我使用jenkins,docker和kubernetes实现了一个测试CI / CD管道。我正在使用kubernetes掌舵图添加我的kubernetes资源并使用dokerhub作为图像存储库。当我检查已部署的api的输出时,其未使用修改后的更改进行更新。
当我检查Jenkins的控制台输出时,它成功显示了所有内容。但是最新的Docker镜像并未通过使用标签“ latest”来获取。直到我得到了较旧的输出。
在我的掌舵图中,我按如下所示添加了values.yaml,
imageCredentials:
name: helmchartrepository
registry: <my-registry-name>
username: <my-username>
password: <my-password>
image:
repository: <my-repository>
tag: latest
pullPolicy: Always
我的deployment.yaml引用这些值,如下所示,
NB:即使我使用的配置是通过使用“ latest”从存储库中提取最新图像,但仍无法获得修改后的图像。而且也没有错误。唯一的问题是从dockerhub映像存储库中提取最新的docker映像。
有人可以帮助我解决此错误吗?
答案 0 :(得分:2)
在date: "{{ .Release.Time.Seconds }}"
下的deployment
中添加template/metadata/labels
并设置imagePullPolicy: Always
。 Helm将检测部署对象中的更改,并每次提取最新映像:
template:
metadata:
labels:
app.kubernetes.io/name: {{ .Values.app.frontendName }}
app.kubernetes.io/instance: {{ .Release.Name }}
date: "{{ .Release.Time.Seconds }}"
运行helm upgrade releaseName ./my-chart
升级您的版本
答案 1 :(得分:0)
Helm无法了解图像是否已更新。由于您使用的是最新的固定标签。您可以在元数据中添加一些标签,例如日期或时间戳,以识别更改。