每当某些代码提交到github时,我都会尝试使用Azure Kubernetes Service上的最新图像内容更新我的部署。我在构建管道中取得了一个阶段,可以在完美运行的docker hub上构建和推送映像。但是,在我的发布管道中,该映像被用作工件,并被部署到Azure Kubernetes服务,但是问题是AKS上的映像未根据最新代码在Docker Hub上推送的映像进行更新。
现在,每次发生某些提交时,我都必须通过Command手动更新AKS上的映像
kubectl设置映像部署/演示-微服务demo-microservice = customerandcontact:contact
我的Yaml文件
任何人都可以告诉我的yaml文件中的错误/更改以自动更新AKS上的图像。
当您使用相同标签在容器注册表中使用新映像时,对于Kubernetes而言没有任何意义。如果运行kubectl apply -f ...
并且图像名称和标签保持不变,则由于配置没有更改,它仍然不会执行任何操作。有两个选项:
在每个构建中提供一个新标签,并将:contact
更改为yaml中的新标签,然后运行kubectl apply
仅适用于开发环境(不在Stage或Prod中执行此操作),并且在将新映像部署到注册表运行:latest
之后,保留相同的标签(通常使用标签kubectl delete pod demo-microservice
)。由于您已将图片提取策略设置为始终,因此这将导致Kubernetes从注册表中提取新图片并重新部署Pod。
第二种方法是仅用于测试的解决方法。
当您使用特定标签指定图像时,Kubernetes将默认为imagePullPolicy
IfNotPresent
。请检查您模板上的实际政策。
尝试修补部署
kubectl patch deployment demo-microservice -p '{"spec": { "template" : { "spec" : { "containers" : [{"name" : "demo-microservice", "image" : "repo/image:tag"}]}}}}'
还要确保您的spec.imagePullPolicy设置为Always