我正在使用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集群上执行此操作的最佳实践。
答案 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代码将使用该密钥。
构建映像后,将其推送到容器注册表。
这应该有效。