检索存储在秘密管理器中的 Google 云中的环境变量
Retrieving environment variables in Google Cloud stored in secret manager
我无法检索在我的 bitbucket 部署的应用程序中的代码中访问的环境变量。
当我的应用程序启动时,我想获取 db uri,如下所示:
const uri = process.env.MONGODB_CONNECTION_URI;
每当我从本地构建和推送工件时,我的环境变量都会从我本地存储在我机器上的 .env 文件成功传递。显然我不想提交这个文件。
当我使用 Bitbucket 管道将我的应用程序部署到 GCP 时。我能够成功地将新工件推送到 GCP。但是在应用程序启动时,它无法检索我的 db-uri。
This 文章非常接近描述我想要实现的目标,但我不明白这如何解决 属性 值是我无法承诺的实际秘密这一事实我的存储库,需要在应用程序启动时从 某处 .
访问
This 问题描述了如何从 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云平台访问环境变量的正确方法?
我建议您参考此文档 link 以便 创建和访问秘密管理器。
此文档 link 提供了有关 将 Secret Manager 与各种 Google 云服务结合使用的资源。
例如,访问 Secret Manager 机密并将它们公开为环境变量或通过 Cloud Functions 的文件系统公开。有关详细信息,请参阅使用 Secret Manager secrets with Cloud Functions。
确保添加机密版本需要机密、项目、文件夹或组织的机密管理员管理员角色 (roles/secretmanager.admin)。无法在机密版本上授予角色。
参考 this 对类似问题的讨论。
我在 this 指南的帮助下解决了这个问题
我觉得这个解决方案有点老套,但至少现在对我来说效果很好。基本上,我:
- 在我的存储库中创建一个 shell 脚本,定义我想要填充的变量的名称。
- 运行 bitbucket 管道中的脚本,填充了我的秘密 bitbucket 部署变量。
- 此脚本的结果是一个包含传递的秘密值的环境文件,并正确传递到我的应用程序。
我无法检索在我的 bitbucket 部署的应用程序中的代码中访问的环境变量。
当我的应用程序启动时,我想获取 db uri,如下所示:
const uri = process.env.MONGODB_CONNECTION_URI;
每当我从本地构建和推送工件时,我的环境变量都会从我本地存储在我机器上的 .env 文件成功传递。显然我不想提交这个文件。
当我使用 Bitbucket 管道将我的应用程序部署到 GCP 时。我能够成功地将新工件推送到 GCP。但是在应用程序启动时,它无法检索我的 db-uri。
This 文章非常接近描述我想要实现的目标,但我不明白这如何解决 属性 值是我无法承诺的实际秘密这一事实我的存储库,需要在应用程序启动时从 某处 .
访问This 问题描述了如何从 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云平台访问环境变量的正确方法?
我建议您参考此文档 link 以便 创建和访问秘密管理器。
此文档 link 提供了有关 将 Secret Manager 与各种 Google 云服务结合使用的资源。
例如,访问 Secret Manager 机密并将它们公开为环境变量或通过 Cloud Functions 的文件系统公开。有关详细信息,请参阅使用 Secret Manager secrets with Cloud Functions。
确保添加机密版本需要机密、项目、文件夹或组织的机密管理员管理员角色 (roles/secretmanager.admin)。无法在机密版本上授予角色。
参考 this 对类似问题的讨论。
我在 this 指南的帮助下解决了这个问题
我觉得这个解决方案有点老套,但至少现在对我来说效果很好。基本上,我:
- 在我的存储库中创建一个 shell 脚本,定义我想要填充的变量的名称。
- 运行 bitbucket 管道中的脚本,填充了我的秘密 bitbucket 部署变量。
- 此脚本的结果是一个包含传递的秘密值的环境文件,并正确传递到我的应用程序。