使用Container Optimized OS在GCP实例组上自动更新/提取docker映像



我有一个GCP上的实例运行在实例组中,该实例使用GCR上托管的单个映像运行容器优化操作系统

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

我想说"嘿,实例组,再拉一次容器镜像"。这样做有利于保持服务的运行。

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

步骤为:

  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]

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

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

最新更新