如何通过 gcloud cli args 或环境变量将 secretEnv 指定为 cloudbuild.yaml
How to specify secretEnv to cloudbuild.yaml via gcloud cli args or environment variables
如果我遵循云构建 document,我必须在 cloudbuild.yaml 上指定加密密钥。
secrets:
- kmsKeyName: projects/[PROJECT-ID]/locations/global/keyRings/[KEYRING-NAME]/cryptoKeys/[KEY-NAME]
secretEnv:
MY_SECRET: <base64-encoded encrypted secret>
即使它是加密的,我也不会在代码中提交秘密值。请告诉我另一种方式。
例如。通过来自 gcloud 的 args 构建提交命令或环境变量,...等等
您可以改用 Google Secret Manager。我们仍在更新文档,但有一个示例说明如何将其与 Cloud Build 一起使用:
首先,创建一个秘密:
$ echo -n "my-secret-data" | gcloud beta secrets create "my-api-key" \
--replication-policy "automatic" \
--data-file -
授予 Cloud Build 服务帐户访问您的机密的权限:
$ gcloud beta secrets add-iam-policy-binding "my-api-key" \
--member "serviceAccount:<project-number>@cloudbuild.gserviceaccount.com" \
--role "roles/secretmanager.secretAccessor"
更新(2021 年 2 月)
然后在您的构建步骤中检索秘密:
steps:
- name: 'my-step'
args:
- '--secret=$$MY_SECRET'
secretEnv:
- 'MY_SECRET'
availableSecrets:
secretManager:
- env: 'MY_SECRET'
versionName: 'projects/my-project/secrets/my-secret/versions/latest'
旧答案(2021 年 2 月之前)
然后在您的构建步骤中检索秘密:
steps:
- name: 'gcr.io/cloud-builders/gcloud@sha256:c1dfa4702cae9416b28c45c9dcb7d48102043578d80bfdca57488f6179c2211b'
entrypoint: 'bash'
args:
- '-c'
- |
gcloud beta secrets versions access --secret=my-api-key latest > /secrets/my-api-key
volumes:
- name: 'secrets'
path: '/secrets'
- name: 'my-step'
volumes:
- name: 'secrets'
path: '/secrets'
args: # ... /secrets/my-api-key contains the secret
如果我遵循云构建 document,我必须在 cloudbuild.yaml 上指定加密密钥。
secrets:
- kmsKeyName: projects/[PROJECT-ID]/locations/global/keyRings/[KEYRING-NAME]/cryptoKeys/[KEY-NAME]
secretEnv:
MY_SECRET: <base64-encoded encrypted secret>
即使它是加密的,我也不会在代码中提交秘密值。请告诉我另一种方式。
例如。通过来自 gcloud 的 args 构建提交命令或环境变量,...等等
您可以改用 Google Secret Manager。我们仍在更新文档,但有一个示例说明如何将其与 Cloud Build 一起使用:
首先,创建一个秘密:
$ echo -n "my-secret-data" | gcloud beta secrets create "my-api-key" \
--replication-policy "automatic" \
--data-file -
授予 Cloud Build 服务帐户访问您的机密的权限:
$ gcloud beta secrets add-iam-policy-binding "my-api-key" \
--member "serviceAccount:<project-number>@cloudbuild.gserviceaccount.com" \
--role "roles/secretmanager.secretAccessor"
更新(2021 年 2 月)
然后在您的构建步骤中检索秘密:
steps:
- name: 'my-step'
args:
- '--secret=$$MY_SECRET'
secretEnv:
- 'MY_SECRET'
availableSecrets:
secretManager:
- env: 'MY_SECRET'
versionName: 'projects/my-project/secrets/my-secret/versions/latest'
旧答案(2021 年 2 月之前)
然后在您的构建步骤中检索秘密:
steps:
- name: 'gcr.io/cloud-builders/gcloud@sha256:c1dfa4702cae9416b28c45c9dcb7d48102043578d80bfdca57488f6179c2211b'
entrypoint: 'bash'
args:
- '-c'
- |
gcloud beta secrets versions access --secret=my-api-key latest > /secrets/my-api-key
volumes:
- name: 'secrets'
path: '/secrets'
- name: 'my-step'
volumes:
- name: 'secrets'
path: '/secrets'
args: # ... /secrets/my-api-key contains the secret