10

在自定义构建的 CentOS Docker 容器中部署 Google 服务帐户凭据以在 Google 的 Container Engine 或其“container-vm”上运行的最佳方法是什么?这种行为在google/cloud-sdk容器上自动发生,该容器运行 debian 并包含我不使用的东西,例如 app-eng/java/php。理想情况下,我正在尝试访问我的项目中的非公共资源,例如 Google Cloud Storage 存储桶对象,而无需在每次启动大量这些容器时都登录和授权。

例如,在 GCE 上运行并安装了自定义代码和 gcloud/gsutil 的基本 Centos 容器上,当您运行时:

docker run --rm -ti custom-container gsutil ls

系统会提示您运行“gsutil config”以获得授权,这是我所期望的。

但是,将 google/cloud-sdk 容器拉到同一个 GCE 上并执行相同的命令,它似乎巧妙地配置了凭据的继承(可能来自主机容器-vm 的凭据?)。在 GCE 上运行容器以访问私有资源时,这似乎绕过了运行“gsutil config”。

我希望在最小构建 Centos 容器中复制该行为以进行大规模部署。

4

3 回答 3

5

更新:截至 2016 年 12 月 15 日,更新现有 VM 范围的功能现在处于测试阶段;有关更多详细信息,请参阅此 SO 答案


旧答案:一种方法是创建具有适当范围的 VM (例如,Google Cloud Storage 只读或读写),然后 VM 上的所有进程(包括容器)都可以访问他们可以通过 OAuth 2.0 使用的凭据; 请参阅Google Cloud StorageGoogle Compute Engine的文档。

请注意,一旦创建了具有某些范围集的 VM,以后就无法更改它们(既不添加也不删除),因此您必须确保在创建 VM 实例时设置正确的范围集。

于 2015-02-12T16:25:56.873 回答
2

跟进。

我最终使用了 /.config 和 /.gce 目录和一组非常少的 GCE SDK 组件(没有 JDK/PHP/etc)。wheezy-cloudtools Dockerfile被证明是我能找到的最好的例子 。

于 2015-03-03T22:20:07.033 回答
0

您的回答可能是本文档中的内容:

容器注册表高级身份验证

它包含使用 Docker 容器的身份验证方法

  • 独立凭证助手
  • 访问令牌
  • JSON 密钥文件
  • gcloud 凭证助手(推荐)

对于 gcloud,它指出:

使用 gcloud 工具在Cloud Shell或安装了Cloud SDK的任何环境中配置身份验证。Cloud Shell 包含当前版本的 Docker。

  1. 要配置身份验证:

以将运行 Docker 命令的用户身份登录到 gcloud。要使用用户凭据配置身份验证,请运行以下命令:

gcloud auth login
  1. 要使用服务帐户凭据配置身份验证,请运行以下命令:
gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE

在哪里

  1. 使用以下命令配置 Docker:
gcloud auth configure-docker

您的凭据保存在您的用户主目录中。
Linux: $HOME/.docker/config.json
Windows: %USERPROFILE%/.docker/config.json

于 2021-04-14T22:23:51.323 回答