Cloudbuild 中的秘密环境变量(没有文件),如何?

cjt*_*cjt 6 google-app-engine environment-variables node.js google-cloud-platform google-cloud-build

我正在 Cloud Build 中创建一个非常基本的 Node.js 应用程序的 CI/CD 管道,并部署到 GCP appengine 标准。

非秘密环境变量存储在app.yaml文件中。但我当然不想把我的秘密放在那里。事实上,我不想将它们放在任何文件中(加密与否),因为这个文件最终会出现在 AppEngine 实例上,并且可以被“坏管理员”“查看”。有很多示例建议加密/解密完整文件(有时甚至是代码),但我不想走这条路。

我正在寻找一种方法来在“内存中”设置秘密环境变量作为 CI/CD 管道的一部分。任何人?

我在app.yaml文件(env_variables)中没有添加任何秘密- 工作正常将加密的秘密添加到我的cloudbuild.yaml文件中(秘密) - 没有错误添加了secretEnv:到构建步骤但值不会在应用程序引擎中作为process.env.[KEY]结束

云构建.yaml

steps:
- name: 'gcr.io/cloud-builders/npm'
  args: ['install']
  dir: "appengine/hello-world/standard"
 - name: "gcr.io/cloud-builders/gcloud"
  args: ["app", "deploy", "test-app.yaml"]
  dir: "appengine/hello-world/standard"
  secretEnv: ['API_KEY', 'API_URL']

secrets:
- kmsKeyName: projects/XXXXXXXX/locations/global/keyRings/customintegrations-secrets/cryptoKeys/integration-secrets
  secretEnv:
    API_KEY: XXQAoHgKKoHBKOURrUU2RqU+ki8XyqmTjz+ns+MEWp5Kx3hQBpgSQgATFQ5yRdW4m1TLNqNRIdHIqVJi8tn8jFrtlHIEouOzNDe/ASlOT0ZQBfl9Rf7xlvOHAa667poBq2hEoMNvOclxUQ==
    API_URL: YYQAoHgKKklo08ZsQF+/8M2bmi9nhWEtb6klyY4rNthUhSIhQ8oSQQATFQ5ywKOxaM/TLwGDmvMtCpl/1stXOOK0kgy42yipYbw/J/QZL68bMat1u4H3Hvp/GMbUVIKEb9jwUtN2xvbL
Run Code Online (Sandbox Code Playgroud)

我希望这secretEnv: ['API_KEY', 'API_URL']将使解密的值可以process.env.API_KEY在应用程序引擎中的代码 ( ) 中访问。

hig*_*ian 3

这是有关如何在云构建(触发器)设置中安全存储环境变量并将其导入应用程序的完整教程。

基本上有三个步骤:

  1. 将您的环境变量添加到构建触发器设置之一的“变量”部分

    在构建触发器中添加变量的位置的屏幕截图

    按照约定,构建触发器中设置的变量必须以下划线 (_) 开头

  2. 配置cloudbuild.yaml(在代码示例的第二步)从构建触发器读取变量,将它们设置为环境变量,并将所有环境变量写入本地 .env 文件

    添加couldbuild.yaml(如下)到您的项目根目录

steps:
- name: node:10.15.1
  entrypoint: npm
  args: ["install"]
- name: node:10.15.1
  entrypoint: npm
  args: ["run", "create-env"]
  env:
    - 'MY_SECRET_KEY=${_MY_SECRET_KEY}'
- name: "gcr.io/cloud-builders/gcloud"
  args: ["app", "deploy"]
timeout: "1600s"
Run Code Online (Sandbox Code Playgroud)

添加create-env脚本到package.json

"scripts": {
  "create-env": "printenv > .env"
},
Run Code Online (Sandbox Code Playgroud)

  1. 将环境变量从 .env 读取到您的应用程序 (config.js)

    安装 dotenv 包

    npm i dotenv -S

    添加config.js到您的应用程序

// Import all env vars from .env file
require('dotenv').config()

export const MY_SECRET_KEY = process.env.MY_SECRET_KEY

console.log(MY_SECRET_KEY) // => Hello
Run Code Online (Sandbox Code Playgroud)

完毕!现在您可以通过触发云构建来部署您的应用程序,并且您的应用程序将可以访问环境变量。