0

我经常使用 Azure Container Registry 上的相同标记更新 Docker 映像。我想在将新标签推送到我的 ACR 时自动运行滚动更新,以便使用最新版本的图像自动更新 pod。

ACR 提供 Webhook 功能,可在推送新标签时自动调用 Webhook。

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

可能吗?我的方向是正确的,还是有更方便的方法来满足我的要求?

谢谢!

4

1 回答 1

0

是的,这是可能的。如果 ACR 可以在推送新图像时调用 webhook(即使具有相同的标签),您可以在集群中调用 webhook 服务。例如,该服务可以更新 Deployment 的PodTemplateSpec中的注释,这会触发 Pod 的滚动更新。

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

要访问 Kubernetes API,您可以使用ServiceAccount执行此操作,您可以使用Roles 和 RoleBindings为其分配必要的 Kubernetes API 权限。最后,您通过serviceAccountNamePodSpec 中的字段将此 ServiceAccount 分配给您的 Pod。

于 2021-08-07T11:55:26.970 回答