我试图在GKE集群中运行的容器中使用独立的gsutil
工具,但我无法使其工作。我相信群集有足够的权限(见下文)。但是,运行
./gsutil ls gs://my-bucket/
产量
ServiceException: 401 Anonymous users does not have storage.objects.list access to bucket my-bucket.
我错过了什么吗?我没有.boto
档案,因为我认为它不应该是必要的 - 或者是它?这是群集和节点池具有的范围列表:
- https://www.googleapis.com/auth/compute
- https://www.googleapis.com/auth/devstorage.full_control
- https://www.googleapis.com/auth/logging.write
- https://www.googleapis.com/auth/monitoring.write
- https://www.googleapis.com/auth/pubsub
- https://www.googleapis.com/auth/servicecontrol
- https://www.googleapis.com/auth/service.management.readonly
- https://www.googleapis.com/auth/trace.append
答案 0 :(得分:1)
您可以使用service account或使用自己的凭据在GKE上的docker容器中使用gsutil。
服务帐户
1)将service-account.json
文件添加到您的项目中。
2)将.boto
文件添加到指向service-account.json
文件的项目中:
[Credentials]
gs_service_key_file = /path/to/service-account.json
3)在Dockerfile中,将BOTO_CONFIG
环境变量设置为指向此.boto
文件:
ENV BOTO_CONFIG=/path/to/.boto
自己的凭据
1)在本地,运行gcloud auth login。将在〜/ config / gcloud / legacy_credentials / your @ account.com / .boto 创建.boto
文件,其结构如下:
[OAuth2]
client_id = <id>.apps.googleusercontent.com
client_secret = <secret>
[Credentials]
gs_oauth2_refresh_token = <token>
2)将此.boto
文件复制到您的项目中
3)在Dockerfile中,将BOTO_CONFIG
环境变量设置为指向此.boto
文件:
ENV BOTO_CONFIG=/path/to/.boto
我使用pip install gsutil在Docker容器中安装了独立的gsutil
答案 1 :(得分:0)
简答:
是的,您需要一些类型的boto文件。
答案很长:
通常,对于GCE实例,您不需要~/.boto
文件,因为/etc/boto.cfg
文件已经存在 - GSUtil使用的Boto库默认情况下会查找此文件。在Debian图像上,它包含以下行:
# This file is automatically created at boot time by the /usr/lib/python
# 2.7/dist-packages/google_compute_engine/boto/boto_config.pyc script.
# Do not edit this file directly. If you need to add items to this file,
# create or edit /etc/boto.cfg.template instead and then re-run the
# script.
[GSUtil]
default_project_id = <PROJECT NUMBER HERE>
default_api_version = 2
[GoogleCompute]
service_account = default
[Plugin]
plugin_directory = /usr/lib/python2.7/dist-packages/google_compute_engine/boto
如果你想模仿你的GKE容器上的这种行为,你必须安装google-compute-engine
python包,以及一个boto文件告诉gsutil从哪里加载该插件安装到,如上所示。在GCE上(我也假设GKE,虽然我没有测试过),但这个插件允许VM与其元数据服务器通信以获取指定服务帐户的凭据。