临时容器内的用户 Google Cloud 凭据?

Max*_*ian 6 google-cloud-platform google-cloud-sdk

我们的大部分工作都使用 Docker 容器,包括在我们自己的机器上进行开发。这些是短暂的(例如,每次我们运行测试时都开始)。

对于 AWS,身份验证很容易——我们在我们的环境中有我们的密钥,这些密钥被传递到容器。

我们开始使用 Google Cloud 服务,认证路径似乎比 AWS 更难。在进行本地开发时,gcloud auth login效果很好。但是在临时容器中工作时,每次都需要登录过程,而且我还没有找到一种使用 a) 环境变量或 b) 映射卷来持久化用户凭据的方法——这是将数据传递给的两种方式容器。

据我所知,唯一的途径是使用服务帐户。但我认为每个人都需要自己的服务帐户,并且需要不断更新该帐户的权限以使其与自己的保持一致。

有没有更好的办法?

Ale*_*rov 5

让本地容器看到 gcloud 凭据的最简单方法可能是将应用程序默认凭据的文件系统位置映射到容器中。

首先,做

gcloud auth application-default login
Run Code Online (Sandbox Code Playgroud)

然后,运行你的容器

docker run -ti -v=$HOME/.config/gcloud:/root/.config/gcloud test
Run Code Online (Sandbox Code Playgroud)

这应该有效。我用 Dockerfile 试了一下

FROM node:4
RUN npm install --save @google-cloud/storage
ADD test.js .
CMD node ./test.js
Run Code Online (Sandbox Code Playgroud)

test.js文件一样

var storage = require('@google-cloud/storage');
var gcs = storage({
    projectId: 'my-project-515',
});

var bucket = gcs.bucket('my-bucket');
bucket.getFiles(function(err, files) {
  if (err) {
    console.log("failed to get files: ", err)
  } else {
    for (var i in files) {
      console.log("file: ", files[i].name)
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

它按预期工作。