Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker image未使用Helm Chart使用标记“latest”从Docker Hub提取最新图像_Docker_Kubernetes - Fatal编程技术网

Docker image未使用Helm Chart使用标记“latest”从Docker Hub提取最新图像

Docker image未使用Helm Chart使用标记“latest”从Docker Hub提取最新图像,docker,kubernetes,Docker,Kubernetes,目前,我使用Jenkins、Docker和Kubernetes实现了一个测试CI/CD管道。我正在使用Kubernetes Helm图表添加我的Kubernetes资源,并使用Dockerhub作为图像存储库。当我检查我部署的api的输出时,它不会随着修改的更改而更新 当我检查Jenkins的控制台输出时,它成功地显示了所有内容。但是最新的Docker图像并不是通过使用标签latest来提取的。我仍然得到了旧的输出 在我的Helm Chart values.yaml中,我添加了如下内容: ima

目前,我使用Jenkins、Docker和Kubernetes实现了一个测试CI/CD管道。我正在使用Kubernetes Helm图表添加我的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
my deployment.yaml引用这些值,如下所示:

imageCredentials:
  name: helmchartrepository
  registry: <my-registry-name>
  username: <my-username>
  password: <my-password>

image:
  repository: <my-repository>
  tag: latest
  pullPolicy: Always
注意:即使我使用的配置是通过使用latest从存储库中提取最新映像,但我仍然没有得到修改后的映像。而且也没有错误。唯一的问题是从Dockerhub映像存储库中提取最新的docker映像


如何解决此错误?

Helm无法了解图像是否已更新。因为您使用的是最新的固定标记。您可以在元数据中添加一些标签,如日期或时间戳,以标识更改。

在部署中的template/metadata/labels下添加日期:{{.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升级您的版本

简短回答的可能重复:让Jenkins为每个构建分配一些唯一的标记,它知道当前提交ID和当前时间,然后helm upgrade-install-set image。标记=。。。当你部署的时候。不要使用最新的标签。感谢您的回复。我像这样添加了数据。但是仍然没有得到更新的结果。@Jacob我有相同的设置,它正在工作。不确定更改后会出现什么问题,无论是否更新新图像。所有的豆荚都会被重新创建,这与-重新创建豆荚标志相同。有没有办法仅在更新新图像时重新创建pod?