Как использовать несколько учетных записей служб с gcloud?

у меня есть два аккаунта Google Cloud service; по одному для каждого из моих двух проектов.

# ACCOUNTS
editor@someproj-1.iam.gserviceaccount.com
editor@someproj-2.iam.gserviceaccount.com

Я могу сказать gcloud на счету которой мне нужно использовать перед выполнением команды:

gcloud set account [ACCOUNT]

вопрос: есть ли способ настроить gcloud и gsutil так что они будут использоваться для операций, выполняемых в их соответствующем проекте, без необходимости переключаться между этими учетными записями вручную все время?


Я управляю экземпляры в одном проекте, и я загружаю / загружаю файлы из ведер в другом проекте. Это становится довольно утомительным, чтобы выполнить gcloud set_account [ACCOUNT] все время между командами.

мне нужно запускать длительные команды в обоих проектах одновременно, что заставляет меня думать, что я упаду в яму, если я активирую/деактивирую учетные записи, используемые для этих команд.

возможно, мой единственный вариант-запустить google-cloud-sdk из двух разных контейнеров Docker?

1 ответов


у вас есть несколько вариантов здесь:

  • Cloud SDK уважает переменные среды, задающие свойства. gcloud config set account - это сокращение для gcloud config set core/account, поэтому соответствующее свойство CLOUDSDK_CORE_ACCOUNT.

    вы можете сделать что-то вроде:

    $ CLOUDSDK_CORE_ACCOUNT=email1@domain1.com gcloud ...
    $ CLOUDSDK_CORE_ACCOUNT=email2@domain2.com gcloud ...
    

    который должен дать вам результат, который вас интересует.

  • Если вам нужно изменить более одного свойства, Cloud SDK предлагает имени настройки абстракция. См. документы для получения полной информации, но вы можете запустить:

    $ gcloud config configurations create my-project1-config
    $ gcloud config configurations activate my-project1-config
    $ gcloud auth login  # or activate-service-account
    $ gcloud config set project project1  # and any other configuration you need to do
    $ 
    $ gcloud config configurations create my-project2-config
    $ gcloud config configurations activate my-project2-config
    $ gcloud auth login  # or activate-service-account
    $ gcloud config set project project2  # and any other configuration you need to do
    $
    $ CLOUDSDK_ACTIVE_CONFIG_NAME=my-project1-config gcloud ...
    $ CLOUDSDK_ACTIVE_CONFIG_NAME=my-project2-config gcloud ...
    
  • в самом крайнем случае вы можете поддерживать отдельные каталоги конфигурации Cloud SDK. Значение по умолчанию (on *nix) -~/.config/gcloud:

    $ CLOUDSDK_CONFIG=/tmp/tmpconfig1 gcloud auth login
    $ CLOUDSDK_CONFIG=/tmp/tmpconfig2 gcloud auth login