Google云构建-部署Cloud函数,在同一步骤中传递清晰的ENV变量和KMS secretEnv变量

在cloudbuild模板中,我有一个步骤来部署Cloud功能。 我尝试在同一步骤中部署传递清晰的环境变量和secretEnv的函数。

我已经尝试了好几种方法,但都没有成功,文档清楚地表明了我们不能在同一命令中使用--set-env-vars和--env-vars-file或--update-env-vars的事实。 / p>

是否有人能够成功发送两种变量类型:从文件中清除变量类型以及使用secretEnv秘密变量类型?

以下定义成功地从.env.prod.yaml创建了变量,但是USER和PASSWORD机密未创建到Cloud函数中。

  steps:
  - name: 'gcr.io/cloud-builders/gcloud'
    args: ['functions','deploy','my-function','--runtime','go111','--entry-point','MyFunction','--env-vars-file','.env.prod.yaml','--trigger-topic','my-topic']
    secretEnv: ['USER','PASSWORD']
  secrets:
  - kmsKeyName: projects/my-project/locations/global/keyRings/my-keyring/cryptoKeys/my-key
      secretEnv:
        USER: XXXXXXXXXXXXXXXXXXXXXXXXXXX
        PASSWORD: XXXXXXXXXXXXXXXXXXXXXXXXXXX

有什么想法,最佳做法或不错的解决方法吗?

jiajiadelan 回答:Google云构建-部署Cloud函数,在同一步骤中传递清晰的ENV变量和KMS secretEnv变量

纯文本环境变量应该在env字段中的构建步骤本身上设置:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  env:
  - USER=my-username
  secretEnv: ['PASSWORD']

secretEnv:
- kmsKeyName: projects/...
  secretEnv:
    PASSWORD: ajklddafjkalda....
,

只需将功能部署两次。首先部署更改并从文件中设置环境变量,然后再次使用--update-env-vars添加加密变量。

根据Updating environment variables文档,--update-env-vars不会在添加新环境变量之前删除所有现有环境变量。

cloudbuild.yaml的示例可能是:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['functions','deploy','my-function’,'--runtime','go111','--entry-point','MyFunction','--env-vars-file','env.prod.yaml','--trigger-topic','my-topic']
- name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args: ['-c','gcloud functions deploy my-function --update-env-vars USER=$$USER,PASSWORD=$$PASSWORD']
  secretEnv: ['USER','PASSWORD']
secrets:
- kmsKeyName: projects/[PROJECT-ID]/locations/global/keyRings/[KEYRING-NAME]/cryptoKeys/[KEY-NAME]
  secretEnv:
    USER: XXXXXXXXXXXXXXXXXXXXXXXXX
    PASSWORD: XXXXXXXXXXXXXXXXXXXXX
本文链接:https://www.f2er.com/3149843.html

大家都在问