使用容器优化 OS 的 GCP 实例组上的自动 update/pull docker 图像

Auto update/pull docker image on GCP Instance Groups with Container-Optimized OS

我在 GCP 运行 的 实例组 中有一个实例,使用 Container-Optimized OS GCR 上托管的单个图像。

我想将一个新图像拉到 GCP,并使用该新图像刷新实例图像。我正在构建并推送 GitHub 个操作,并且可以在 CI 工作流程中调用一些 gcloud 命令。

我想说"hey Instance Group, do pull again the container imagens"。保持服务 运行.

这样做会很好

最好的方法是什么?什么完整的 gcloud 命令可以做到这一点?

步骤是:

  1. 准备新的 Docker 图片。
  2. Create an instance template based upon the new Docker image.
  3. Update the MIG(托管实例组)。

创建实例模板:

gcloud compute instance-templates create-with-container [TEMPLATE_NAME] --container-image [DOCKER_IMAGE]

更新 MIG:

gcloud compute instance-groups managed rolling-action start-update [MIG_NAME] --version template=[TEMPLATE_NAME]

您可以阅读更多关于为您的更新配置可用选项的信息here

我也有同样的问题。对于将来遇到它的任何人,滚动操作替换的另一个解决方案是使用 gcloud beta compute instances update-container 命令。

可以在此处找到文档 https://cloud.google.com/sdk/gcloud/reference/beta/compute/instances/update-container

这是他们的例子:

gcloud beta compute instances update-container instance-1 --zone us-central1-a --container-image=gcr.io/google-containers/busybox

在自动化的情况下,您需要知道一个实例名称并在注册表中有一个映像

为了将来参考,以下命令更新了 GCP 中实例组的所有实例。在这里,我在区域“europe-west3-c”中使用了我的实例组名称“app-backend-instance-group”。请替换这些值。

for i in $(gcloud compute instances list --filter NAME~"app-backend-instance-group" --format="value(NAME)");do gcloud beta compute instances update-container $i --zone europe-west3-c --container-image=gcr.io/deployments-337523/app-backend:latest;done