Установить конфигурацию функций firebase с секретной переменной среды - PullRequest
1 голос
/ 27 июня 2019

Каков рекомендуемый способ установить переменную окружения для функции firebase, которая исходит из Google KMS?

В моем cloudbuild.yaml у меня есть следующий шаг:

  # Set env
  - name: 'gcr.io/$_PROJECT_ID/firebase'    
    args: ['functions:config:set', 'env.environment=$_ENV', 'env.build=$BUILD_ID','api_key=$API_KEY', '--project', '$_PROJECT_ID']
    dir: 'functions'    
    secretEnv: ['API_KEY','FIREBASE_TOKEN']

Дляпользовательский Google Cloud Builder. Я следовал инструкциям из «Следуйте инструкциям» из https://github.com/GoogleCloudPlatform/cloud-builders-community/

. Cloudbuild.yaml либо недействителен, либо замена не работает.

Редактировать:

Сообщение об ошибке

ERROR: (gcloud.builds.submit) INVALID_ARGUMENT: invalid build: key in the template "API_KEY" is not a valid built-in substitution

Если я получаю среду Firebase через firebase functions:config:get Я вижу $API_KEY или $$API_KEYили API_KEY в зависимости от выбранной стратегии замещения.Если я добавлю незашифрованный API_KEY к переменным среды в Google Cloud Build Trigger, подстановка будет работать, как и ожидалось.

1 Ответ

0 голосов
/ 28 июня 2019

Я следовал ссылке на инструкции GitHub, как и вы:

https://github.com/GoogleCloudPlatform/cloud-builders-community/

У меня все работало нормально.Просто чтобы подтвердить, что вы не пропустили ни одного шага, вы повторили те же шаги, которые были необходимы для создания маркера firebase и применили их к API_KEY?

#### create a key for the api token
gcloud kms keys create api-token --location global --keyring cloudbuilder --purpose encryption

#### create the encrypted token
echo -n $API_TOKEN | gcloud kms encrypt \
  --plaintext-file=- \
  --ciphertext-file=- \
  --location=global \
  --keyring=cloudbuilder \
  --key=api-token | base64

Также мне пришлось добавить еще один секрет в cloudbuild.yaml:

Secrets:
- kmsKeyName: 'projects/[PROJECT_ID]/locations/global/keyRings/cloudbuilder/cryptoKeys/firebase-token'
  secretEnv:
    FIREBASE_TOKEN: '<YOUR_ENCRYPTED_TOKEN>'

- kmsKeyName: 'projects/[PROJECT_ID]/locations/global/keyRings/cloudbuilder/cryptoKeys/api-token'
  secretEnv:
    API_TOKEN: '<YOUR_ENCRYPTED_TOKEN>'

Надеюсь, это поможет!

...