如何通过Azure管道使用相同的映像标签更新Azure Kubernetes Service上的部署映像?

问题描述 投票:0回答:2

每当某些代码提交到github时,我都会尝试使用Azure Kubernetes Service上的最新图像内容更新我的部署。我在构建管道中取得了一个阶段,可以在完美运行的docker hub上构建和推送映像。但是,在我的发布管道中,该映像被用作工件,并被部署到Azure Kubernetes服务,但是问题是AKS上的映像未根据最新代码在Docker Hub上推送的映像进行更新。

现在,每次发生某些提交时,我都必须通过Command手动更新AKS上的映像

kubectl设置映像部署/演示-微服务demo-microservice = customerandcontact:contact

我的Yaml文件

enter image description here

任何人都可以告诉我的yaml文件中的错误/更改以自动更新AKS上的图像。

azure docker kubernetes continuous-deployment azure-kubernetes
2个回答
0
投票

当您使用相同标签在容器注册表中使用新映像时,对于Kubernetes而言没有任何意义。如果运行kubectl apply -f ...并且图像名称和标签保持不变,则由于配置没有更改,它仍然不会执行任何操作。有两个选项:

  1. 在每个构建中提供一个新标签,并将:contact更改为yaml中的新标签,然后运行kubectl apply

  2. 仅适用于开发环境(不在Stage或Prod中执行此操作),并且在将新映像部署到注册表运行:latest之后,保留相同的标签(通常使用标签kubectl delete pod demo-microservice)。由于您已将图片提取策略设置为始终,因此这将导致Kubernetes从注册表中提取新图片并重新部署Pod。

第二种方法是仅用于测试的解决方法。


0
投票

当您使用特定标签指定图像时,Kubernetes将默认为imagePullPolicy IfNotPresent。请检查您模板上的实际政策。

尝试修补部署

kubectl patch deployment demo-microservice -p '{"spec": { "template" : { "spec" : { "containers" : [{"name" : "demo-microservice", "image" : "repo/image:tag"}]}}}}'

还要确保您的spec.imagePullPolicy设置为Always

© www.soinside.com 2019 - 2024. All rights reserved.