You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes集群部署的Flask应用如何配置Google Cloud凭证?

在Kubernetes中为Flask-GCS应用配置Google凭证的最佳实践

首先得解释你之前在VM上不用手动配置凭证就能创建桶的原因:如果那台VM是GCP Compute Engine实例,它默认会关联一个GCP服务账号,并且通过元数据服务器提供凭证——Google的客户端库会自动通过**应用默认凭证(ADC)**机制获取这些凭证,所以你不用手动指定密钥文件。

但把应用容器化部署到Kubernetes(尤其是非GKE集群,或者未配置相关权限的GKE)时,默认不会自动获取到GCP凭证,需要按以下最佳实践配置:

1. 优先使用Workload Identity(GKE专属,推荐)

这是GCP官方针对Google Kubernetes Engine(GKE)的最佳安全实践,无需管理任何密钥文件,直接通过K8s服务账号(ServiceAccount)与GCP IAM服务账号绑定来实现凭证自动注入:

  • 创建一个GCP IAM服务账号,给它分配操作GCS所需的权限(比如roles/storage.admin或者更细粒度的roles/storage.bucketCreator)
  • 在你的GKE集群中创建一个K8s服务账号
  • 使用gcloud iam service-accounts add-iam-policy-binding命令,将GCP服务账号的roles/iam.workloadIdentityUser角色授予K8s服务账号
  • 在Pod的部署配置中,指定serviceAccountName为你创建的K8s服务账号
  • 此时Pod内的应用会自动通过ADC获取到GCP凭证,你的代码完全不用修改,storage.Client()会正常工作

2. 挂载服务账号密钥文件到Pod(通用方案)

如果你的集群不是GKE,或者暂时无法使用Workload Identity,可以通过K8s Secret来安全管理服务账号密钥:

  • 下载你的GCP服务账号JSON密钥文件(本地开发用的那个就行)
  • 在K8s集群中创建一个Secret:
    kubectl create secret generic gcp-service-account --from-file=key.json=/path/to/your/service-account-key.json
    
  • 在你的Deployment配置中,将这个Secret挂载到Pod的某个目录(比如/secrets/gcp),并设置环境变量GOOGLE_APPLICATION_CREDENTIALS指向密钥文件的路径:
    spec:
      containers:
      - name: your-flask-app
        image: your-docker-image
        env:
        - name: GOOGLE_APPLICATION_CREDENTIALS
          value: /secrets/gcp/key.json
        volumeMounts:
        - name: gcp-secret
          mountPath: /secrets/gcp
          readOnly: true
      volumes:
      - name: gcp-secret
        secret:
          secretName: gcp-service-account
    
  • 这样Google客户端库会自动读取这个环境变量指定的密钥文件,代码无需修改

3. 需要避免的不安全方式

  • 不要将服务账号密钥硬编码到Docker镜像中,镜像一旦泄露,密钥也会暴露
  • 不要直接将密钥内容通过环境变量传递(比如GOOGLE_APPLICATION_CREDENTIALS直接设为密钥JSON内容),这种方式容易在日志或集群配置中泄露密钥

总结一下:只要正确配置了Workload Identity或者挂载了密钥Secret,你的现有代码(storage.Client())就能在K8s中正常使用GCP凭证,和本地开发时的逻辑一致。

内容的提问来源于stack exchange,提问作者Ross

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:48:46