0

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

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

我想说“嘿实例组,请再次拉动容器图像”。这样做会很好地保持服务运行。

最好的方法应该是什么?什么完整gcloud的命令来做到这一点?

4

3 回答 3

5

步骤是:

  1. 准备一个新的 Docker 镜像。
  2. 根据新的 Docker 镜像创建实例模板
  3. 更新 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]

您可以在此处阅读有关配置更新可用选项的更多信息。

于 2020-03-13T17:47:48.583 回答
2

我有同样的问题。对于将来遇到它的任何人,滚动操作替换的另一个解决方案是使用该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

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

于 2020-10-07T18:59:10.503 回答
1

为了将来参考,以下命令会更新 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
于 2022-02-25T18:43:54.153 回答