Google cloud build - Развертывание функции Cloud, передающей четкие переменные ENV, а также переменные KMS secretEnv за один шаг - PullRequest
1 голос
/ 06 ноября 2019

В шаблоне cloudbuild у меня есть шаг для развертывания функции Cloud. Я пытаюсь развернуть функцию, передавая чистые переменные среды, а также secretEnv на одном и том же шаге.

Я пробовал несколько вещей без успеха, и в документации ясно, что мы не можем использовать --set-env-vars и--env-vars-file или --update-env-vars в той же команде.

Кому-нибудь удалось отправить переменные обоих типов: чистые из файла и секретные с помощью secretEnv?

Следующее определение успешно создает переменные из .env.prod.yaml, но секреты USER и PASSWORD не создаются в функции Cloud.

  steps:
  - name: 'gcr.io/cloud-builders/gcloud'
    args: ['functions',
       'deploy', 'my-function',
       '--runtime', 'go111',
       '--entry-point', 'MyFunction',
       '--env-vars-file', '.env.prod.yaml',
       '--trigger-topic', 'my-topic']
    secretEnv: ['USER', 'PASSWORD']
  secrets:
  - kmsKeyName: projects/my-project/locations/global/keyRings/my-keyring/cryptoKeys/my-key
      secretEnv:
        USER: XXXXXXXXXXXXXXXXXXXXXXXXXXX
        PASSWORD: XXXXXXXXXXXXXXXXXXXXXXXXXXX

Любые идеи, лучшие практики или хорошиеОбходной путь?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Просто разверните функцию дважды. Сначала разверните изменения и установите переменные env из файла, а затем снова используйте --update-env-vars для добавления зашифрованных переменных.

Согласно документации Обновление переменных среды , --update-env-vars не удалит все существующие переменные среды перед добавлением новых.

Примером cloudbuild.yaml может быть:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['functions', 'deploy',  'my-function’,
     '--runtime', 'go111',
     '--entry-point', 'MyFunction',
     '--env-vars-file', 'env.prod.yaml',
     '--trigger-topic', 'my-topic']
- name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args: ['-c', 'gcloud functions deploy my-function --update-env-vars USER=$$USER,PASSWORD=$$PASSWORD']
  secretEnv: ['USER', 'PASSWORD']
secrets:
- kmsKeyName: projects/[PROJECT-ID]/locations/global/keyRings/[KEYRING-NAME]/cryptoKeys/[KEY-NAME]
  secretEnv:
    USER: XXXXXXXXXXXXXXXXXXXXXXXXX
    PASSWORD: XXXXXXXXXXXXXXXXXXXXX
0 голосов
/ 06 ноября 2019

Переменные текстового окружения должны быть установлены на самом этапе сборки в поле env:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  env:
  - USER=my-username
  secretEnv: ['PASSWORD']

secretEnv:
- kmsKeyName: projects/...
  secretEnv:
    PASSWORD: ajklddafjkalda....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...