Как передать секрет из Google Secrets Manager (GSM) в облачную функцию при использовании Cloud Build? Ниже cloudbuild.yaml имеет три шага. Кроме того, я использую volumes
для создания постоянного хранилища между этапами сборки. Я могу подтвердить получение GSM с помощью Cloud Build. Однако, когда я пытаюсь передать секрет в формате yaml, используя --env-vars-file
, я сталкиваюсь со следующей ошибкой ...
Already have image (with digest): gcr.io/cloud-builders/gcloud
ERROR: gcloud crashed (AttributeError): 'str' object has no attribute 'items'
cloudbuild.yaml:
steps:
- name: 'gcr.io/cloud-builders/gcloud'
volumes:
- name: 'secrets'
path: '/secrets'
entrypoint: "bash"
args:
- "-c"
- |
echo -n 'gsm_secret:' > /secrets/my-secret-file.txt
- name: 'gcr.io/cloud-builders/gcloud'
volumes:
- name: 'secrets'
path: '/secrets'
entrypoint: "bash"
args:
- "-c"
- |
gcloud components update
gcloud beta secrets versions access --secret=MySecret latest >> /secrets/my-secret-file.txt
cat /secrets/my-secret-file.txt
- name: 'gcr.io/cloud-builders/gcloud'
volumes:
- name: 'secrets'
path: '/secrets'
args: [
'functions', 'deploy', 'gsm-foobar',
'--project=[...]',
'--trigger-http',
'--runtime=go111',
'--region=us-central1',
'--memory=256MB',
'--timeout=540',
'--entry-point=GSM',
'--allow-unauthenticated',
'--source=https://source.developers.google.com/[...]',
'--service-account', '[...]@appspot.gserviceaccount.com',
'--env-vars-file', '/secrets/my-secret-file.txt'
]
Обновление: Использование томов не требуется, поскольку /workspace
- это постоянное хранилище между этапами в Cloud Build. Кроме того, gcloud components update
больше не требуется, поскольку версия Cloud SDK по умолчанию на сегодняшний день составляет 279.0.0
A Решение:
steps:
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: "bash"
args:
- "-c"
- |
echo "gsm_secret: $(gcloud beta secrets versions access --secret=MySecret latest)" > /workspace/my-secret-file.txt
cat /workspace/my-secret-file.txt
- name: 'gcr.io/cloud-builders/gcloud'
args: [
'functions', 'deploy', 'gsm-foobar',
[...]
'--entry-point=GSM',
'--allow-unauthenticated',
'--source=https://source.developers.google.com/[...]',
'--service-account', '[...]@appspot.gserviceaccount.com',
'--env-vars-file=/workspace/my-secret-file.txt'
]