将多个 GCP 帐户添加到 gcloud,配置它们并在它们之间切换,例如

Adding multiple GCP accounts to gcloud, configuring them and switching between them, by example

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

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

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

我现在正尝试将 configuration/project 添加到我的 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) 和凭据?

我建议使用 project-2 以外的名称进行配置,因为这可能会造成混淆。

NOTE My original answer was incorrect. Switching between configurations switches between active accounts but the list of authenticated accounts is preserved across configurations.

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

NOTE Once you've run gcloud auth login under any configuration, the list of accounts is preserved across all configurations but the active account is retained per configuration.

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

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

即总是等等

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

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

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