Cloud Build で Cloud Run へ deploy する際に Secret Manager から環境変数を設定したい
Cloud Build で Secret Manager 利用する
まず、Cloud Build で Secret Manager を利用する方法調べる
availableSecrets
に利用したい secret の情報を指定すれば良いのか
steps:
- name: 'gcr.io/cloud-builders/docker'
entrypoint: 'bash'
args: ['-c', 'docker login --username=$$USERNAME --password=$$PASSWORD']
secretEnv: ['USERNAME', 'PASSWORD']
availableSecrets:
secretManager:
- versionName: projects/PROJECT_ID/secrets/DOCKER_PASSWORD_SECRET_NAME/versions/DOCKER_PASSWORD_SECRET_VERSION
env: 'PASSWORD'
- versionName: projects/PROJECT_ID/secrets/DOCKER_USERNAME_SECRET_NAME/versions/DOCKER_USERNAME_SECRET_VERSION
env: 'USERNAME'
IAM の permission 付与
Grant the Secret Manager Secret Accessor (roles/secretmanager.secretAccessor) IAM role for the secret to the Cloud Build service account:
Secret Manager Secret Accessor roles/secretmanager.secretAccessor
role を付与。
In the New principals textbox, enter the email address of your Cloud Build service account of the form PROJECT_NUMBER@cloudbuild.gserviceaccount.com. PROJECT_NUMBER is the project number of the project where you are running builds. You can find the project number in your Project settings page.
対象の service account は PROJECT_NUMBER@cloudbuild.gserviceaccount.com
。
Cloud Run deploy 時に Secret Manager を指定する
公式 Doc 見てく。
secret を環境変数として公開する形で deploy
--update-secrets
option で指定可能。
指定の仕方は、
--update-secrets=ENV_VAR_NAME=SECRET_NAME:VERSION
deploy コマンドの全体像↓
gcloud run deploy my-service --image my-image-url --update-secrets=DATABASE_URL=DATABASE_URL:latest
Secret Manager で管理している DATABASE_URL
を、Cloud Run の実行環境の環境変数 DATABASE_URL
として設定している。
version は latest
とすることで常に最新の version を指定可能。
Cloud Run の deploy コマンドの option で指定できるのなら、Cloud Build で Secret Manager の値を利用する必要ないな...
ただ、個人的には、Docker buiid 時に Secret Manager の値が必要なので、Cloud Build で Secret Manager の値を受け渡す必要はある。