首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建一个能够从容器注册表中提取的码头就绪计算引擎

创建一个能够从容器注册表中提取的码头就绪计算引擎
EN

Stack Overflow用户
提问于 2019-07-29 17:51:53
回答 1查看 636关注 0票数 1

我们使用terraform设置GCE实例,然后使用来提供它们并将我们的服务放到机器上。

我在我们的组织中运行一个项目,需要从一个不同的项目中提取一个码头形象。图像托管在另一个项目的容器注册表中。

我理想的活动顺序是:

  1. 使用具有正确配置的服务帐户的terraform在我的项目中创建一个GCE。
  2. 使用ansible在GCE上安装码头。
  3. 使用ansible模块docker_container从容器注册表中提取所需的图像。

这个看似简单的工作流并不简单。一开始,我发现只运行docker_container就会失败,因为需要先对docker进行身份验证。考虑到我不想登录到机器并使用凭据助手设置它,我唯一的方法就是尝试运行命令docker login -u _json_key -p<jsonkeyfile> http://gcr.io

如果登录到有问题的机器,我可以让它直接在命令行上运行,但试图让它使用ansible docker-login运行会给我带来噩梦,单独问题,所以我想完全避免它。GCE实例是使用在创建过程中预先配置的专用服务帐户创建的(使用terraform)。如果使用命令行中的服务帐户键,所有角色都已授予帐户,因为如果我使用服务帐户键,我可以登录和提取图像。

我真正期望的是,在上面的第1步中,如果我使用具有所有正确凭据的google服务帐户,GCE实例应该已经设置为与容器注册表对话。是否有一种方法可以使这项工作完全作为启动配置的一部分?我查看了https://cloud.google.com/container-optimized-os/docs/,但我还不想使用chromeOS,而且我也不知道这是否会被打开,尽管从文档中可以感觉到这一点。

是否有一种方法可以预先设置一个已准备好的GCE实例?如果没有,是否有人使用docker login尝试过基于ansible的工作流并使其工作?

EN

回答 1

Stack Overflow用户

发布于 2019-07-29 19:50:01

您应该利用GCE本地码头能力 (使用容器优化的OS!)而不是手动安装Docker并配置它。这允许将映像作为引导过程的一部分来提取和启动。对于身份验证,您应该能够授权您的计算引擎默认服务帐户访问GCR中的映像,即使是从另一个项目。或者创建和使用专用服务帐户,请参阅这位医生中如何在实例中激活它。还请参阅关于将IAM角色分配给服务帐户的这里

若要创建带有Docker映像的Compute实例,可以使用此Gcloud命令 (不确定Ansible是否有等效的)

代码语言:javascript
复制
gcloud beta compute instances create-with-container

注意:考虑在ServerFault中发布这类问题,因为它将针对网络和系统管理员受众。StackOverflow更适合开发人员社区。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57259054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档