【问题标题】:google cloud credentials for pods deployed in Kubernetes cluster?Kubernetes集群中部署的Pod的谷歌云凭证?
【发布时间】:2018-11-02 13:43:18
【问题描述】:

我正在开发一个使用 python 客户端库与谷歌云存储通信的 Flask 应用程序。目前,在本地开发中,我使用服务帐户来验证应用程序并进行交互。

我计划构建应用程序的 docker 映像并将其部署在 kubernetes 集群上。我担心的是,我应该如何提供 Google 凭据?

我可能错了,当我在虚拟机上运行这个 python 文件时,它能够创建一个新的存储桶,而不需要凭据或服务帐户。

# Imports the Google Cloud client library
from google.cloud import storage

# Instantiates a client
storage_client = storage.Client()

# The name for the new bucket
bucket_name = 'my-new-bucket'

# Creates the new bucket
bucket = storage_client.create_bucket(bucket_name)

print('Bucket {} created.'.format(bucket.name))

如果我将相同的代码 dockerize 到烧瓶应用程序中并将其部署在集群上,它是否仍会使用默认的 google 凭据? 我想知道在 Kubernetes 集群上执行此操作的最佳实践。

【问题讨论】:

    标签: docker kubernetes google-cloud-platform google-cloud-storage


    【解决方案1】:

    最好的方法是部署一个 kubernetes secret

    apiVersion: v1 kind: Secret metadata: name: GOOGLE_APPLICATION_CREDENTIALS data: key.json: "Your service acount key.json"

    对于 Pod/部署

    volumes: - name: GOOGLE_APPLICATION_CREDENTIALS secret: secretName: GOOGLE_APPLICATION_CREDENTIALS

    然后,对于图像,您可以将变量设置为 os.['GOOGLE_APPLICATION_CREDENTIALS'] 将获取容器内的 os 变量,python 代码将使用该键。

    构建镜像后,将其推送到容器注册表。

    应该可以的。

    【讨论】:

    • 您也可以使用GKE集群的服务账号。您需要确保正确设置范围以允许对 GCS 进行读/写访问。它不像使用秘密那么安全,但它会起作用
    • @Nicolae,你如何添加 GoogleStorageCredential.json。我的意思是在您的回答“您的服务帐户 key.json”中,这是指文件路径吗?或粘贴整个文件内容?还是粘贴文件内容的base64encoded?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 2018-06-22
    • 2020-07-17
    • 2019-03-11
    相关资源
    最近更新 更多