google-cloud-platform - 在 Google Container Builder 请求 YAML 中为 docker build 设置带有 secret 的 env var

标签 google-cloud-platform google-kubernetes-engine google-container-registry google-container-builder

我们使用 Sinopia对于我们的 npm repo 和凭据(主页或当前目录中的 .npmrc 文件。)是 nec。用于构建.... 直到今天,我一直避免在代码中保留这些凭据,当然,还通过传递使用 .npmrc 凭据文件的内容设置的 env var 将它们排除在 docker 镜像层之外.然后在构建过程中:
RUN cat $NPMRC>.npmrc && npm install ; rm .npmrc
...一次 RUN 避免了一层持久存在的 secret .....

但是我正在尝试使用 YAML 文件设置容器构建请求来设置 env。 var 但失败了。 build-request.yaml 必须在代码中,所以我不能把它放在那里,我试图添加 --build-arg NPMRC="$(<.npmrc)" ...从桶中复制后....没有错误但身份验证失败

我正在尝试使用这样的咒语创建构建参数: [..., '--build-arg', 'NPMRC=\""$(< ./.npmrc)"\"', ....] 这在构建历史中显示为
... build --build-arg "NPMRC=\""$(cat ./.npmrc)"\"" -t
...如果 bash 像我认为的那样获得子shell,那么这是正确的:
echo "NPMRC=\""$(cat ./.npmrc)"\"" -> NPMRC="_auth=...."
寻找其他人可能已经找到的解决方案

最佳答案

我认为这个页面是正确的,所以我会说引用它来回答我自己的问题是安全的(我不会接受,我猜?):

https://cloud.google.com/container-builder/docs/tutorials/using-encrypted-files

摘要:
使用 Cloud Key Management Service 加密 .npmrc 并提交 src 主目录中的加密文件(或复制到存储桶并添加 gsutil 构建步骤)。然后添加解密作为构建步骤: steps: - name: gcr.io/cloud-builders/gcloud args: - kms - decrypt - --ciphertext-file=npmrc.enc - --plaintext-file=.npmrc - --location=global - --keyring=[KEYRING-NAME] - --key=[KEY-NAME]

关于google-cloud-platform - 在 Google Container Builder 请求 YAML 中为 docker build 设置带有 secret 的 env var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45179454/

相关文章:

kubernetes - 子网掩码与kubernetes master ip mask的关系

docker - 无法从 Google Compute Engine 访问 Google Container Registry

python - 从 AI 笔记本访问 GCP Cloud SQL?

google-cloud-platform - 无法在 Google 容器引擎上的 Stackdriver 中访问 Kubernetes 指标

networking - 如何为 GKE 上的 Kubernetes v1.2 Ingress 资源分配自定义外部/公共(public) IP?

docker - 在 kubernetes (GKE) 上手动删除未使用的图像

javascript - 如何在 Google Cloud Compute node.js getVMs 中使用正则表达式进行过滤

kubernetes - 有没有办法在一定的空闲时间后将 GKE 集群的大小调整为 0 个节点?

kubernetes - 如何使用 kubernetes API 获取图像列表?

docker - 从 GCR (Google Container Registry) 导出 Docker 镜像