在Kubernetes集群中部署的pod的google云凭据?

时间:2018-05-23 14:08:14

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

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

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

我可能在这里错了,当我在VM上运行这个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))

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

1 个答案:

答案 0 :(得分:1)

最好的方法是部署kubernetes秘密

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

对于Pod / Deployment

volumes: - name: GOOGLE_APPLICATION_CREDENTIALS secret: secretName: GOOGLE_APPLICATION_CREDENTIALS

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

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

这应该有效。