当相同的标签被推送到容器注册表时,Kubernetes自动滚动更新



我经常在Azure容器注册表上使用相同的标签更新Docker映像。当一个新标签被推送到我的ACR时,我想自动运行滚动更新,这样pod就会自动更新最新版本的图像。

ACR提供了一个Webhook特性,当一个新标签被推送时自动调用Webhook。

我的第一种方法是在Kubernetes中创建webhook,通过一个入口暴露,并可以从ACR调用。webhook将执行滚动更新,但它需要访问Kubernetes API。

有可能吗?我的方向是对的吗,还是有更方便的方法来回答我的要求?

谢谢!

是的,有可能。如果ACR可以在新图像被推送时调用webhook(即使是相同的标签),那么你可以在你的集群中调用webhook服务。例如,该服务可以更新部署的PodTemplateSpec中的注释,从而触发Pods的滚动更新。

但是,它要求容器的imagePullPolicy设置为Always,因为图像的标记保持不变。否则,Kubernetes会认为它仍然是相同的图像,并会使用它之前提取的图像。

要访问Kubernetes API,你可以通过一个ServiceAccount来实现,你可以通过role和RoleBindings为它分配必要的Kubernetes API权限。最后,您可以通过PodSpec中的serviceAccountName字段将这个ServiceAccount分配给您的pod。

最新更新