我刚刚在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.
如果我适当地设置了服务帐户(容器将运行的服务所基于的服务帐户),上述命令是否有效?
答案 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变量中的路径