我正在根据以下内容在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的最佳方法是什么?
如果您在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中,您可以为任务分配一个角色,该任务将在该角色下授予容器权限。