首页 > 解决方案 > Docker 映像未使用 Helm Chart 使用标签“最新”从 Docker Hub 提取最新映像

问题描述

目前我使用 Jenkins、Docker 和 Kubernetes 实现了一个测试 CI/CD 管道。我正在使用 Kubernetes Helm Chart 添加我的 Kubernetes 资源并使用 Dockerhub 作为图像存储库。当我检查我部署的 api 的输出时,它没有通过修改后的更改进行更新。

当我检查 Jenkins 的控制台输出时,它显示一切成功。但是最新的 Docker 镜像并没有通过使用标签“latest”来拉取。我仍然得到较旧的输出。

在我的 Helm Chart 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 引用了这些值,如下所示:

在此处输入图像描述

注意:即使我使用“latest”从存储库中提取最新图像的配置,我仍然没有得到修改后的图像。而且也没有错误。唯一的问题是从 Dockerhub 镜像存储库中提取最新的 docker 镜像。

如何解决此错误?

标签: dockerkubernetes

解决方案


添加date: "{{ .Release.Time.Seconds }}"在您的deploymenttemplate/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以升级您的版本


推荐阅读