我有一个在 GCP 上运行的实例,该实例使用 GCR 上托管的单个映像在Container-Optimized OS中运行。
我想将新图像拉到 GCP,并使用该新图像刷新实例图像。我正在构建和推送 GitHub Actions,并且可以gcloud
在 CI 工作流程中调用一些命令。
我想说“嘿实例组,请再次拉动容器图像”。这样做会很好地保持服务运行。
最好的方法应该是什么?什么完整gcloud
的命令来做到这一点?
我有一个在 GCP 上运行的实例,该实例使用 GCR 上托管的单个映像在Container-Optimized OS中运行。
我想将新图像拉到 GCP,并使用该新图像刷新实例图像。我正在构建和推送 GitHub Actions,并且可以gcloud
在 CI 工作流程中调用一些命令。
我想说“嘿实例组,请再次拉动容器图像”。这样做会很好地保持服务运行。
最好的方法应该是什么?什么完整gcloud
的命令来做到这一点?
步骤是:
创建实例模板:
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]
您可以在此处阅读有关配置更新可用选项的更多信息。
我有同样的问题。对于将来遇到它的任何人,滚动操作替换的另一个解决方案是使用该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