文件从Docker容器上传到Google Cloud Storage

问题描述 投票:0回答:1

我正在根据以下内容在GKE上整合CI / CD管道this guideby Google。

一切正常,除了它是Django项目外,我还需要运行collectstatic命令并将文件上传到Google Storage。

在Dockerfile中,我有以下命令:

RUN python manage.py collectstatic --noinput
RUN gsutil rsync -R /home/vmagent/app/myapp/static gs://mystorage/static

Collectstatic正常工作,但是gsutil上传失败并显示以下错误消息:

ServiceException: 401 Anonymous caller does not have storage.objects.create access to mystorage/static/...

认证gsutil的最佳方法是什么?

django docker google-cloud-storage gcloud gsutil
1个回答
0
投票

如果您在GCP(GKE)上运行docker容器,则使用应用程序凭据对Pod进行身份验证,然后该Pod具有与该服务帐户相同的权限。有关此的更多信息,请参见here。 GKE和其他kubernetes集群都允许您将密钥文件作为机密文件导入。在所有Kubernetes平台上,这是通过以下命令完成的。完整指南可在here中找到。

kubectl create secret generic pubsub-key --from-file=key.json=PATH-TO-KEY-FILE.json

然后像这样在清单中设置环境变量:

 env:
    - name: GOOGLE_APPLICATION_CREDENTIALS
      value: /var/secrets/google/key.json

尚无法在某个角色下运行不良的吊舱。 GCP使用服务帐户运行,而不使用AWS等角色。在AWS中,您可以为任务分配一个角色,该任务将在该角色下授予容器权限。

© www.soinside.com 2019 - 2024. All rights reserved.