【问题标题】:Where to store environment variables in App Engine for CI/CD Pipeline?在 App Engine for CI/CD Pipeline 中存储环境变量的位置?
【发布时间】:2021-04-25 08:52:22
【问题描述】:

我正在云上部署我的第一个应用程序,并且我正在尝试设置我的环境变量。

据我了解,它们是在app.yaml 文件中设置的。但是如果该文件被推送到 repo,那么它将包含错误的秘密 API 密钥..

我可以像对待 .env 一样对待 app.yaml,但问题是,如何在 CI/CD 管道中为 prod 设置环境变量?

我正在使用 Cloud Build 来运行我的构建管道。我来自 Bitbucket 和 Heroku,似乎没有办法像在这两个平台上那样为构建环境“设置”环境变量。

那么,我怎样才能让我的 .env 变量在我的应用程序中可用,而不会冒险将其推送到我的 repo 上呢?

感谢您的帮助

【问题讨论】:

标签: node.js google-app-engine google-cloud-platform google-cloud-build app.yaml


【解决方案1】:

对于那些正在寻找的人,这是我解决这个问题的方法。

我按照this blog post 中列出的步骤进行操作。

基本上我们在.yaml 文件中设置变量,然后在构建过程中将其编译成.env 文件。我们可以通过 Cloud Build 配置设置这些变量的值,这样我们就可以限制对它们的访问并隐藏它们。

【讨论】:

  • 这不是很好,它有点hacky和手动。无论项目设置如何,您都可以使用公开的环境自动访问机密管理器。通过 App Engine Standard 提供了特殊的 Google 授权图片
  • @OliverDixon - 您能否向像我这样的其他人指出如何正确执行此操作的文档/文章。
  • 当您通过 Standard 部署到 App Engine 时,您可以默认访问环境和“Secrets Manager”。所以没有必要手动修改环境变量。这非常适合部署到多个环境而无需考虑任何事情。如果您使用 Flex,则必须使用官方的 Google Docker Image,他们总是更改链接,因此不宜留在这里。
【解决方案2】:

我有一个“部署”脚本,它克隆了我的 app.yaml,从 google-secret-manager 下载 api-keys,并将它们作为环境变量注入到 app.yamlenv_variables 部分,然后运行部署命令使用新的app.yaml 而不是原来的。

对我来说,这个脚本是本地的,但我想你可以在 google-cloud-build 中做类似的事情

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-31
    • 2020-11-13
    • 1970-01-01
    • 2014-04-23
    • 2019-08-07
    • 2021-12-01
    • 2020-01-10
    • 2015-11-15
    相关资源
    最近更新 更多