我有一个GCP上的实例运行在实例组中,该实例使用GCR上托管的单个映像运行容器优化操作系统。
我想将一个新图像拉到GCP,并使用该新图像刷新实例图像我正在构建和推进GitHub操作,可以在CI工作流中调用一些gcloud
命令。
我想说"嘿,实例组,再拉一次容器镜像"。这样做有利于保持服务的运行。
做到这一点的最佳方法应该是什么?什么完整的gcloud
命令可以做到这一点?
步骤为:
- 准备一个新的Docker镜像
- 根据新的Docker镜像创建一个实例模板
- 更新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]
您可以在此处阅读有关配置更新可用选项的更多信息。
我也有同样的问题。对于将来遇到它的任何人,滚动操作替换的另一个解决方案是使用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中实例组的所有实例。在这里,我使用了我的实例组名称";应用后端实例组";在"区域"中;欧洲西部3-c";。请替换这些值。
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