使用不同的服务帐户并行调用 gcloud 并自动使用其项目 ID
Calling gcloud with different service accounts in parallel and automatically using its project ID
我知道这个问题已经被问过很多次了,因为 Google 已经把身份验证弄得一团糟,但我找不到答案。我正在尝试创建一个可以使用文件中的服务帐户凭据的 CI 管道。我希望能够在本地或从服务器 运行 它。根据我的阅读,gcloud 莫名其妙地忽略了 GOOGLE_APPLICATION_CREDENTIALS
env var,因此我必须使用以下内容全局设置我的信用,这意味着我可以告别任何类型的并行化:
gcloud auth activate-service-account --key-file=$(GOOGLE_APPLICATION_CREDENTIALS)
当然可以 运行 使用不同的 SA 凭据并行执行多个命令?
此外,上述方法忽略了密钥文件中指定的项目 ID,因此 gcloud 尝试以我个人为自己设置的最后一个项目 ID 为目标。
有没有解决这个荒谬的办法?我正在寻找一种非交互式、非破坏性(即不会破坏我的个人信誉)的方式来与不同的服务帐户并行调用 gcloud 并自动使用它们的项目 ID。这可能吗?
嗯,这实际上是可能的:
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=$(GOOGLE_CREDENTIALS_FILE) \
CLOUDSDK_CORE_PROJECT=$(GCP_PROJECT) \
gcloud run deploy --allow-unauthenticated $(CLOUD_RUN_CONFIG) --image $(GCR_DOCKER_IMAGE)
很遗憾文档太差了,我花了很长时间才找到这些信息。为什么 gcloud 不只是使用相同的环境变量,因为所有库对外部的每个人来说仍然是个谜 Google...
我知道这个问题已经被问过很多次了,因为 Google 已经把身份验证弄得一团糟,但我找不到答案。我正在尝试创建一个可以使用文件中的服务帐户凭据的 CI 管道。我希望能够在本地或从服务器 运行 它。根据我的阅读,gcloud 莫名其妙地忽略了 GOOGLE_APPLICATION_CREDENTIALS
env var,因此我必须使用以下内容全局设置我的信用,这意味着我可以告别任何类型的并行化:
gcloud auth activate-service-account --key-file=$(GOOGLE_APPLICATION_CREDENTIALS)
当然可以 运行 使用不同的 SA 凭据并行执行多个命令?
此外,上述方法忽略了密钥文件中指定的项目 ID,因此 gcloud 尝试以我个人为自己设置的最后一个项目 ID 为目标。
有没有解决这个荒谬的办法?我正在寻找一种非交互式、非破坏性(即不会破坏我的个人信誉)的方式来与不同的服务帐户并行调用 gcloud 并自动使用它们的项目 ID。这可能吗?
嗯,这实际上是可能的:
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=$(GOOGLE_CREDENTIALS_FILE) \
CLOUDSDK_CORE_PROJECT=$(GCP_PROJECT) \
gcloud run deploy --allow-unauthenticated $(CLOUD_RUN_CONFIG) --image $(GCR_DOCKER_IMAGE)
很遗憾文档太差了,我花了很长时间才找到这些信息。为什么 gcloud 不只是使用相同的环境变量,因为所有库对外部的每个人来说仍然是个谜 Google...