gcloud - 将多个 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
) 和凭据?
解决方案
我建议使用配置以外的名称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 的设置(在同一台机器上)。