【问题标题】:Docker image not pulling the latest image from Docker Hub using tag "latest" using Helm ChartDocker 映像未使用 Helm Chart 使用标签“最新”从 Docker Hub 提取最新映像
【发布时间】:2019-11-12 17:51:34
【问题描述】:

目前我使用 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 镜像。

我该如何解决这个错误?

【问题讨论】:

标签: docker kubernetes


【解决方案1】:

deployment 下的template/metadata/labels 下添加date: "{{ .Release.Time.Seconds }}" 并设置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 以升级您的版本

【讨论】:

  • 感谢您的回复。我添加了这样的数据。但仍然没有得到更新的结果。
  • @Jacob 我有相同的设置并且它正在工作。不知道是什么问题
  • 本次改动后,无论是否更新新图片。所有 pod 都被重新创建,这与 --recreate-pods 标志相同。有没有办法仅在更新新图像时重新创建 pod?
【解决方案2】:

Helm 无法了解图像是否已更新。由于您使用的是最新的固定标签。您可以在元数据中添加一些标签(例如日期或时间戳)来识别更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 2020-10-26
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    相关资源
    最近更新 更多