【问题标题】:Recommended GCE service account authentication inside Docker container?Docker 容器内推荐的 GCE 服务帐户身份验证?
【发布时间】:2015-02-12 07:30: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 上并执行相同的命令,它似乎巧妙地配置了凭据的继承(可能来自主机 container-vm 的凭据?)。在 GCE 上运行容器以访问私有资源时,这似乎绕过了运行“gsutil config”。

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

【问题讨论】:

  • 您的问题是关于如何轻松地从 GCE 到 GCS 的身份验证,或者关于如何拥有一个最小的 gcloud SDK 容器,或者其他什么?为什么你认为它有利于开发而不是生产?当您拥有许多这些容器时,您遇到了什么问题?另外,请考虑将帖子的第二部分拆分为一个单独的问题。
  • 为试图澄清而在上面编辑。

标签: docker google-cloud-storage google-compute-engine kubernetes google-kubernetes-engine


【解决方案1】:

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


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

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

【讨论】:

  • 谢谢。这实际上是我所做的,但是它没有按项目内部的权限工作。我将使用 GS 存储作为示例,因为它是基本的。容器引擎是使用 --scopes googleapis.com/auth/devstorage.read_write 创建的。然后我部署基础 ubuntu 容器和 google/cloud-sdk 容器。只有 google/cloud-sdk 容器可以执行“gsutil ls”。您看到的 ubuntu 容器“您正在尝试执行需要项目 id 的操作,但未配置任何操作”
  • 您是使用gcloud config set project PROJECT设置默认项目,还是通过gsutil ls -p PROJECT gs://bucket明确指定项目?
【解决方案2】:

跟进。

我结束了使用 /.config 和 /.gce 目录和极少的 GCE SDK 组件集(没有 JDK/PHP/等)。 wheezy-cloudtools Dockerfile 被证明是我能找到的最好的例子。

【讨论】:

    【解决方案3】:

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

    Container-Registry Advance Authentication

    它包含使用 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

    【讨论】:

      猜你喜欢
      • 2012-04-02
      • 2021-04-27
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      • 2020-04-15
      • 2021-03-22
      • 1970-01-01
      • 2015-09-16
      相关资源
      最近更新 更多