3

我想在云构建步骤中使用 Secret Manager 将凭证存储到我们的工件。我让它使用类似于以下的构建工作:

steps:
- name: 'busybox:glibc'
  entrypoint: 'sh'
  args: ['-c', 'env']
  secretEnv: ['SECRET_VALUE']
availableSecrets:
  secretManager:
  - versionName: "projects/PROJECT_ID/secrets/TEST-SECRET/versions/1"
    env: 'SECRET_VALUE'

一切都很好,没有问题 - 然后我尝试稍微改进它:

steps:
- name: 'busybox:glibc'
  entrypoint: 'sh'
  args: ['-c', 'env']
  secretEnv: ['SECRET_VALUE']
availableSecrets:
  secretManager:
  - versionName: "projects/$PROJECT_ID/secrets/TEST-SECRET/versions/1"
    env: 'SECRET_VALUE'

但随后它抛出错误: ERROR: (gcloud.builds.submit) INVALID_ARGUMENT: failed to get secret name from secret version "projects/$PROJECT_ID/secrets/TEST-SECRET/versions/1"

我已经能够添加一个 TRIGGER 级别的环境变量(SECRET_MANAGER_PROJECT_ID),并且效果很好。唯一的问题是触发环境,它在重建时不可用,这会破坏很多东西。

有谁知道如何在不使用触发器参数的情况下从 CloudBuild 中获取 Secret Manager 的 PROJECT_ID?

4

3 回答 3

3

目前,无法在 secret 字段中设置动态值。我已经将此反馈直接提供给 Google Cloud PM,已考虑在内,但我没有更多信息可分享,尤其是可用性方面。


编辑 1

(1 月 22 日)。感谢 Seza443 的评论,我再次测试,现在它可以使用自动填充的变量(PROJECT_ID 和 PROJECT_NUMBER),但也可以使用客户定义的替换变量!

于 2021-03-08T12:26:16.163 回答
2

Cloud Build 现在似乎允许在availableSecrets构建配置字段中使用替换变量。

来自 Google Cloud关于使用机密的文档

在所有构建步骤之后,添加一个availableSecrets字段以指定要用于您的密钥的密钥版本和环境变量。您可以在字段的值中包含替换变量。secretVersion您可以在构建中指定多个密钥。

我能够$PROJECT_ID在自己的构建配置中使用该变量,如下所示:

...
availableSecrets:
  secretManager:
    - versionName: projects/$PROJECT_ID/secrets/api-key/versions/latest
      env: API_KEY

诚然,上面引用的文档和推荐的配置文件 schema之间似乎(至少目前)存在一些差异。在他们引用的文档中secretVersion,但似乎已更改为versionName. 无论哪种情况,它似乎都能正常工作。

于 2021-09-21T18:04:32.953 回答
0

改为使用$PROJECT_NUMBER

https://cloud.google.com/build/docs/configuring-builds/substitute-variable-values#using_default_substitutions

替换 GCB 中的内置环境变量

于 2021-04-02T16:36:14.463 回答