【问题标题】:How to properly use a secret from the Secret Manager in a Cloud Run deployment via gcloud shell如何通过 gcloud shell 在 Cloud Run 部署中正确使用 Secret Manager 中的密钥
【发布时间】:2021-06-03 22:28:58
【问题描述】:

我正在尝试构建一个 gcloud 脚本来部署我的云运行服务。该服务可以访问托管的 MongoDB,因此我必须通过环境变量提供密码凭据。

我想通过秘密管理器传递此密码。我通过 GCP 控制台这样做:

所以秘密名称是mongodb-password,值是mypassword。现在我按照 gcloud run 文档 (https://cloud.google.com/sdk/gcloud/reference/run/deploy) 了解如何将密钥添加到运行服务部署中。

在设置密码部分解释如下:

指定要挂载或作为环境变量提供的机密。钥匙 以正斜杠“/”开头的是挂载路径。所有其他键 对应环境变量。与每个相关的值 其中应采用 SECRET_NAME:KEY_IN_SECRET 的形式;你可以省略 密钥中的密钥,用于指定密钥中所有密钥的安装 秘密。例如: '--update-secrets=/my/path=mysecret,ENV=othersecret:key.json' 将 创建一个带有秘密“mysecret”的卷并将该卷安装在 '/我自己的路'。因为没有指定密钥,所以所有密钥都在 'mysecret' 将被包括在内。名为 ENV 的环境变量将 也被创建,其值是'key.json'的值 '其他秘密'。最多可以指定其中之一

这让我有些困惑。我不知道 KEY_IN_SECRET 是什么意思。 秘密名称显然是mongodb-password,但我不知道我现在如何引用秘密的值。

我试图弄清楚是否有关于如何定义秘密值的约定。也许像key=value 这样的东西。但没有任何规定我必须那样做。

所以现在我想知道我应该为gcloud run deploy 命令的--set-secrets=[KEY=VALUE,…] 标志做什么。

根据给出的信息,我只能这样做:

--set-secrets=[mongodb-password=*]

我知道这是错误的,但我想解释一下现在让我感到困惑的地方

【问题讨论】:

    标签: gcloud google-cloud-run google-secret-manager


    【解决方案1】:

    你很困惑,这很正常。目前,Secret Manager 集成仅适用于 Cloud Run on Anthos(例如,部署在 GKE 集群上)。

    如果您使用完全管理版本,Cloud Run 尚不支持 Secret Manager 集成(Alpha 版本应该很快开始,您可以期待在今年晚些时候公开推出)。

    因此,您需要直接在代码中获取您的秘密。或者,我创建了一个包装器来帮助您load the secret from secret manager and to set them in environment variable


    在 GKE 中,秘密在 Kubernetes secrets documentation 中描述。您可以在 linux 目录树 /path/to/mysecret 的路径中挂载秘密。这是一个最佳实践,它应该与完全管理版本相同(以确保可移植性和 Knative 合规性)。

    这就是为什么您可以在文档 --update-secrets=/my/path=mysecret 中添加这样的内容

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-02
      • 2021-09-13
      • 2021-04-27
      • 1970-01-01
      • 2020-06-18
      • 2021-06-07
      • 2020-03-01
      • 2021-04-11
      相关资源
      最近更新 更多