thc*_*ark 2 docker google-cloud-platform google-cloud-build google-secret-manager
我正在 GCB 上进行构建,其中需要安装私有依赖项,因此我使用 Google Secrets Manager。我的 cloudbuild.yaml 如下所示:
steps:
- name: gcr.io/cloud-builders/gcloud
entrypoint: 'bash'
args: [ '-c', "gcloud secrets versions access latest --secret=PERSONAL_ACCESS_TOKEN_GITHUB --format='get(payload.data)' | tr '_-' '/+' | base64 -d > decrypted-pat.txt" ]
- name: 'gcr.io/cloud-builders/docker'
args:
- build
- '--build-arg'
- PERSONAL_ACCESS_TOKEN_GITHUB=$(cat decrypted-pat.txt)
- '-t'
- 'gcr.io/$PROJECT_ID/$REPO_NAME:$TAG_NAME'
- .
images: [ gcr.io/$PROJECT_ID/$REPO_NAME:$TAG_NAME ]
Run Code Online (Sandbox Code Playgroud)
但是,$(cat decrypted-pat.txt)没有得到评估。插入:RUN echo https://${PERSONAL_ACCESS_TOKEN_GITHUB}@github.com到我的 dockerfile 中只是回显文字:当然,
https://$(cat decrypted-pat.txt)@github.com这不是我正在寻找的命令(是的,如果我得到的东西实际上成功回显,我将旋转令牌)。
gcb/secrets 文档中有一条注释
要在环境变量中使用机密,您需要在变量名称前添加下划线“_”前缀,并使用“(”对值进行转义。例如:_VARIABLE_NAME=$(cat password.txt) && echo -n )_VARIABLE_NAME。
但这对我来说在构建参数中使用没有多大意义。
如何将此秘密的实际值作为构建参数放入容器中?
自 2021 年 2 月 10 日起,您可以使用以下availableSecrets字段直接从 Cloud Build 访问 Secret Manager 密钥:
steps:
- name: 'gcr.io/cloud-builders/docker'
entrypoint: 'bash'
args: ['-c', 'docker login --username=$$USERNAME --password=$$PASSWORD']
secretEnv: ['USERNAME', 'PASSWORD']
availableSecrets:
secretManager:
- versionName: projects/PROJECT_ID/secrets/DOCKER_PASSWORD_SECRET_NAME/versions/DOCKER_PASSWORD_SECRET_VERSION
env: 'PASSWORD'
- versionName: projects/PROJECT_ID/secrets/DOCKER_USERNAME_SECRET_NAME/versions/DOCKER_USERNAME_SECRET_VERSION
env: 'USERNAME'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3181 次 |
| 最近记录: |