当前位置: 首页 > 面试题库 >

Google容器引擎:访问云存储

姬翰林
2023-03-14
问题内容

我无法在Google Container Engine中使用“应用程序默认凭据”。这些文档说,它们是为App Engine和Compute
Engine设计的,但是有人告诉我,它们应该透明地传递给在Container Engine上运行的容器。

这是失败的代码:

credentials = GoogleCredentials.get_application_default()
service = discovery.build('storage', 'v1', credentials=credentials)

失败的错误: AssertionError: No api proxy found for service "memcache"

期望Application Default Credentials与Container
Engine一起使用是否正确?如果不是,那么谁能推荐从容器引擎上运行的容器连接到云存储的正确方法?

谢谢。

编辑: 运行后gcloud beta auth application-default activate-service-account --key-file <my_key>.jsoncredentials在上述Python示例与数据填充对象。但是我仍然遇到相同的错误。


问题答案:

在Container
Engine上访问云存储最简单的方法似乎是gcloud库。

如果在容器上安装了App Engine SDK,则该配置将无法使用零配置(gcloud找到它并假定它正在App
Engine上运行)。所以我停止使用官方的Google容器。

在python容器上,只需将 gcloud 添加到您的
requirements.txt中 (或运行pip install gcloud)。只要容器位于Google Compute
Engine实例上,您就可以访问同一项目中的任何存储桶。

例:

from gcloud import storage
client = storage.Client()
bucket = client.get_bucket('<bucket_name>')
blob = bucket.blob('test_file.txt')
blob.upload_from_string('test content')

gcloud库也适用于Java,Node和Ruby。



 类似资料:
  • 我在docker容器中运行gunicorn flask服务,并使用Google容器引擎。我在下面的教程中设置了集群http://kubernetes.io/docs/hellonode/ 环境变量在Kubernetes集群中始终包含一个内部地址。我要找的是HTTP_X_FORWARDED_for,但请求头中缺少它。是否可以将服务配置为在请求中保留外部客户端ip?

  • 我一直在尝试使用Traefik作为Google云容器引擎的入口控制器。 我让我的超文本传输协议部署/服务启动并运行(当我用普通的负载均衡器公开它时,它回答得很好)。 然后我删除了LoadBalancer,并遵循本教程:https://docs.traefik.io/user-guide/kubernetes/ 因此,我得到了一个新的traefik入口控制器部署和服务,以及一个traefik ui入

  • 出身背景 在Google Kubernetes引擎上,我们一直在使用云endpoint和可扩展服务代理(v2)进行服务到服务的身份验证。 这些服务通过在HTTP请求的头中包含承载JWT令牌来进行身份验证。 服务的标识已通过GCP服务帐户维护,并且在部署期间,Json服务帐户密钥被挂载到容器的预定义位置,该位置被设置为env var的值。 这些服务是在C#和ASP. NET Core中实现的,为了生

  • 我有一个使用Firebase身份验证的node.js客户端。现在我想访问谷歌云存储,但是node.js的Firebase SDK不包括GCS。使用@google-云/存储工作,但只有匿名访问。如何将Firebase凭据应用到@google-Cloud/存储,以便在登录用户的上下文中访问GCS?

  • 我正在谷歌容器引擎上运行Kubernetes集群。默认情况下,我的指标不会推送到Stackdriver。 我需要显式启动Heapster服务,还是由容器引擎本身自动管理?