google-cloud-platform - 检索存储在 Secret Manager 中的 Google Cloud 中的环境变量
问题描述
我无法检索在我的 bitbucket 部署应用程序中的代码中访问的环境变量。当我的应用程序启动时,我想获取 db uri,如下所示:
const uri = process.env.MONGODB_CONNECTION_URI;
每当我从本地构建和推送工件时,我的环境变量都会从我本地存储在我的机器上的 .env 文件成功传递。显然我不想提交这个文件。
当我使用 Bitbucket Pipelines 将我的应用程序部署到 GCP 时。我能够成功地将新工件推送到 GCP。但是在应用程序启动时,它无法检索我的 db-uri。
这篇文章非常接近描述我想要实现的目标,但我看不出这是如何解决属性值是我无法提交到我的存储库的实际秘密,并且需要在应用程序启动时从某个地方访问的事实。
此问题描述了如何从 Cloud Pipeline 中的秘密管理器访问变量,而不是在应用程序本身中。
我使用预定义的google-app-engine-deploy-pipe
. 我的 bitbucket-pipelines.yml 的相关部分如下所示:
branches:
develop:
- step:
name: Deploy
deployment: test
script:
- pipe: atlassian/google-app-engine-deploy:1.0.0
variables:
KEY_FILE: $GCP_SECRET
PROJECT: 'test-project'
DEPLOYABLES: 'test.yaml'
PROMOTE: 'false'
STOP_PREVIOUS_VERSION: 'false'
这GCP_SECRET
是 base-64 编码的 GCP 服务帐户,从 Bitbucket 内部的秘密中获取,运行良好。
在里面test.yml
,我有以下内容:
runtime: nodejs
env: flex
instance_class: B1
manual_scaling:
instances: 1
env_variables:
NODE_ENV: "test"
MONGODB_CONNECTION_URI: $MONGODB_CONNECTION_URI
所以我的问题是MONGODB_CONNECTION_URI
. 我尝试在 GCP Secret Manager 中添加一个新密钥,其中有一个MONGODB_CONNECTION_URI
带有实际连接字符串的条目,但我的应用程序在启动时无法找到此属性。
我哪里错了?如何传递我误解的秘密有什么基本的吗?
我可以在 Bitbucket 部署管道中定义和传递变量吗?还是直接从 Google Cloud Platform 访问环境变量的正确方法?
解决方案
我建议您参考此文档链接以创建和访问秘密管理器。
此文档链接提供了将 Secret Manager 与各种 Google Cloud 服务结合使用的资源。
例如,访问 Secret Manager 机密并将它们作为环境变量或通过 Cloud Functions 中的文件系统公开。有关详细信息,请参阅将Secret Manager 密钥与 Cloud Functions 一起使用。
确保添加密钥版本需要密钥、项目、文件夹或组织的 Secret Manager 管理员角色 ( roles/secretmanager.admin )。不能在机密版本上授予角色。
请参阅有关类似问题的讨论。
推荐阅读
- ios - 我应该如何重构我的自定义 UITableView 以提高可维护性
- reactjs - 测试 React 组件时忽略 HOC
- jquery - HighMaps 未定义的 ZoomTo()
- android - 以编程方式为旧 API 创建形状背景
- c# - ListView 未添加项目
- http - 使用单位 LazUTF8 时 TIdURI.URLDecode 的错误结果
- chatbot - 使用botium box从bot获取变量输出时测试用例失败
- networking - 是否需要在 SPF 记录本身中添加相同的域名?
- opengl - 无法创建超过 8 个渲染缓冲区的 FBO
- html - 尽管使用了@media 查询,但文本拒绝调整大小