【问题标题】:How do I pass a Google service account key as one of the environment variable using a Dockerfile to deploy on Google Cloud Run如何使用 Dockerfile 将 Google 服务帐户密钥作为环境变量之一传递以在 Google Cloud Run 上部署
【发布时间】:2020-05-18 00:54:21
【问题描述】:

我正在尝试通过 Dockerfile 在 Google Cloud Run 上部署 python 脚本。该脚本将服务帐户密钥作为变量之一。将服务密钥挂载为环境变量以便在 Google Cloud Run 上部署的最佳做法是什么?为了在 Google Kubernetes 引擎上部署相同的东西,我尝试使用 Configmap 来存储密钥并在部署时调用它。 Google Cloud Run 有这样的规定吗?

【问题讨论】:

  • 您应该使用分配给 Cloud Run 服务的服务帐号,而不是尝试将服务帐号 JSON 密钥文件数据作为环境变量传递。如果您真的想传递服务帐户,请使用 Google Cloud Secret Manager 存储服务帐户材料。 cloud.google.com/solutions/secrets-management
  • 同意@JohnHanley。如果您在 google Cloud 环境中,请避免使用密钥文件。很难将它们保密,您必须定期轮换它们,...在实例化 Google 库时使用默认凭据。

标签: google-cloud-platform dockerfile service-accounts google-cloud-run


【解决方案1】:

正如 John HanleyGuillaume Blaquiere 已经建议的那样,将密钥文件作为环境变量传递并不是一个好习惯。不过,针对您的问题,我将解释如何在 Cloud Run 中使用环境变量。


为 Cloud Run 服务定义环境变量

您可以在 Cloud Console 中创建 Cloud Run 服务时为其指定环境变量,也可以使用特定的flags 为现有服务设置它们命令行。

或者,可以使用ENV statement容器中设置环境变量。


在 Cloud Run 中使用环境变量

为了检索Python中环境变量的值,您可以使用OS模块的os.environ参数:

import os

os.environ['<name-of-the-env-variable>']

示例

如果您在 Dockerfile 中设置名为 ‘testENV’ 的环境变量:

ENV testENV="my variable"

您将能够像这样检索它:

import os

sample = os.environ['testENV']

【讨论】:

    猜你喜欢
    • 2021-05-19
    • 2022-10-02
    • 2019-10-24
    • 2021-02-13
    • 2022-01-03
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 2019-11-20
    相关资源
    最近更新 更多