首页 > 解决方案 > 将多个 GCP 帐户添加到 gcloud,配置它们并在它们之间切换,例如

问题描述

我有两个不同的 GCP 项目,由两个不同的组织管理,它们都与我的电子邮件相关联。这意味着当我登录 GCP 控制台时,我会在我的项目下拉列表中看到它们。

我以某种方式(在加入第一个组织时)将我的gcloud安装配置为成功连接到第一个组织/项目:

myuser ~ % gcloud config list
[compute]
region = us-east4
zone = us-east1-b
[core]
account = myemail@example.com
disable_usage_reporting = True
project = project-1

Your active configuration is: [default]


Updates are available for some Cloud SDK components.  To install them,
please run:
  $ gcloud components update



To take a quick anonymous survey, run:
  $ gcloud survey

我现在正在尝试将配置/项目添加到我的gcloud配置中,以便我可以根据需要全天在两个项目之间来回切换:

myuser ~ % gcloud config configurations create project-2
Created [project-2].
Activated [project-2].

但是现在,当我列出我的可用配置时,我只看到project-2

myuser ~ % gcloud config list                               
[core]
disable_usage_reporting = True

Your active configuration is: [project-2]

我现在可以运行什么命令来查看两个项目配置?以及如何连接project-2到我的电子邮件 ( myemail@example.com) 和凭据?

标签: gcloud

解决方案


我建议使用配置以外的名称project-2,因为这可能会让人感到困惑。

注意我的原始答案不正确。在配置之间切换会在活动帐户之间切换,但经过身份验证的帐户列表会跨配置保留。

一个配置封装了一个gcloud“环境”。因此,在创建配置后,您需要gcloud config set account将任何现有(经过身份验证的)帐户设置为活动帐户或gcloud auth login将新帐户添加到列表中

注意一旦您gcloud auth login在任何配置下运行,帐户列表将在所有配置中保留,但活动帐户将在每个配置中保留。

设置配置的一个挑战是gcloud命令变得隐含,例如,gcloud compute instances delete my-instance如果您不小心处理gcloud config设置,则使用管理员帐户可以从生产项目中删除使用配置。

configs 的替代方法(也是我的偏好)是始终明确指定配置。是的,它更乏味,是的,你仍然可以自满,但我发现它更方便:

即总是等。

gcloud do-something \
--project=${PROJECT} \
--account=${ACCOUNT}

我强烈建议您在编写gcloud命令时设置标志而不是使用配置。在这种情况下,额外的打字是一种前期成本,具有长期的精度优势。

使用配置的另一个原因。配置是全局适用的。如果您gcloud在多个 shell 中使用,在一个 shell 中更改配置,因为它是全局的,将更改跨 shell 的设置(在同一台机器上)。


推荐阅读