能够从GKE或CloudRun中的容器运行gcloud命令

时间:2019-09-24 16:39:30

标签: google-cloud-platform google-kubernetes-engine gcloud google-cloud-run google-iam

我刚刚在docker容器上安装了gcloud

当我尝试在本地运行命令时,出现以下错误(有意义)

root@3c4b9a147de7:/# gcloud projects list
ERROR: (gcloud.projects.list) You do not currently have an active account selected.
Please run:

  $ gcloud auth login

to obtain new credentials, or if you have already logged in with a
different account:

  $ gcloud config set account ACCOUNT

to select an already authenticated account to use.

如果我适当地设置了服务帐户(容器将运行的服务所基于的服务帐户),上述命令是否有效?

4 个答案:

答案 0 :(得分:1)

  

如果我适当地设置了服务帐户(对于   容器将从其运行)上述命令是否有效?

我不确定“到容器将要运行的服务”的含义。该服务可能已分配了凭据,但是容器内的任何内容都不知道这一点。

要在Google Cloud SDK CLI中使用服务帐户,您需要配置CLI以使用服务帐户。以下命令执行此操作。将SA_EMAIL替换为您的服务帐户的电子邮件地址。该电子邮件地址可以在服务帐户JSON密钥文件中找到。

gcloud auth activate-service-account SA_EMAIL --key-file=service_account.json

运行此命令后,保存容器,以便下次启动该容器时凭据仍将存在。

答案 1 :(得分:0)

在容器中不建议使用

gcloud auth login,因为它引用了您的身份。首选服务帐户。将其存储在您的容器中,并定义环境变量GOOGLE_APPLICATION_CREDENTIAL指向该文件。

在容器构建期间,您还可以在参数中使用服务帐户文件运行gcloud auth activate-service-account

如何,建议您不要在容器中使用此工具。使用Cloud Run,甚至可能会阻止此调用(我从没有尝试过,但要照顾沙盒环境的执行)。首选库或直接调用API。

答案 2 :(得分:0)

目前,是的,它失败了,因为您使用的根帐户正在本地运行,因此您对该项目没有任何权限。

通过Cloud Run运行某些内容时,默认情况下会使用Compute Engine服务帐户。如果该帐户具有所需的权限,则命令将成功。看看Cloud Build here中的身份验证,您可以在here中找到与服务帐户有关的GKE类似的东西。

答案 3 :(得分:-1)

如果Docker容器已安装gcloud sdk(google cloud SDK Shell),请运行google Cloud SDK以使用$ gcloud auth login进行身份验证,然后您可以运行gcloud命令行。检查gcloud目录的Enviroments变量中的路径