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

在K8s的Docker容器中运行需gcloud认证的Python应用:安装CLI后如何操作?

后续操作步骤

1. 安装Python依赖包

你的应用依赖Vertex AI服务,需在Dockerfile中添加对应Python SDK安装命令,google-cloud-aiplatform包已包含Gemini模型的调用支持:

# 安装Python依赖
RUN pip install --no-cache-dir google-cloud-aiplatform

2. 配置容器身份认证(核心步骤)

在K8s环境中,容器访问Google Cloud服务不建议用本地gcloud登录,推荐两种认证方式:

  • Workload Identity(推荐,安全无密钥)
    1. 在Google Cloud创建服务账号,分配Vertex AI User等必要权限
    2. 启用GKE集群的Workload Identity功能,将K8s服务账号与Google Cloud服务账号绑定
    3. 部署应用时指定绑定后的K8s服务账号,容器会自动获取认证凭据
  • 服务账号密钥文件(仅测试用,安全性低)
    1. 下载Google Cloud服务账号密钥文件
    2. 将密钥文件挂载到容器内,通过环境变量GOOGLE_APPLICATION_CREDENTIALS指定文件路径

3. 传递必要环境变量

代码中依赖的GOOGLE_CLOUD_PROJECT和GOOGLE_CLOUD_LOCATION,需在K8s部署YAML中配置:

env:
  - name: GOOGLE_CLOUD_PROJECT
    value: "你的GCP项目ID"
  - name: GOOGLE_CLOUD_LOCATION
    value: "us-central1" # 替换为实际使用的区域

4. 完善Dockerfile示例

结合已安装的gcloud CLI,整理完整Dockerfile:

# 基础镜像选择Python官方镜像
FROM python:3.11-slim

# 安装gcloud CLI(你已完成此步骤,此处为示例参考)
RUN apt-get update && apt-get install -y curl && \
    curl https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz > /tmp/google-cloud-sdk.tar.gz && \
    mkdir -p /usr/local/gcloud && \
    tar -C /usr/local/gcloud -xvf /tmp/google-cloud-sdk.tar.gz && \
    /usr/local/gcloud/google-cloud-sdk/install.sh --quiet && \
    rm /tmp/google-cloud-sdk.tar.gz && \
    apt-get remove -y curl && apt-get autoremove -y && rm -rf /var/lib/apt/lists/*

# 将gcloud加入环境变量
ENV PATH="/usr/local/gcloud/google-cloud-sdk/bin:${PATH}"

# 安装Python依赖
RUN pip install --no-cache-dir google-cloud-aiplatform

# 设置工作目录并复制应用代码
WORKDIR /app
COPY . /app

# 启动应用命令
CMD ["python", "你的应用入口文件.py"]

5. 构建并部署到K8s

  1. 构建Docker镜像:docker build -t gcr.io/[你的GCP项目ID]/vertexai-app:v1 .
  2. 推送镜像到GCR/Artifact Registry:docker push gcr.io/[你的GCP项目ID]/vertexai-app:v1
  3. 编写K8s部署YAML(示例deployment.yaml):
apiVersion: apps/v1
kind: Deployment
metadata:
  name: vertexai-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: vertexai-app
  template:
    metadata:
      labels:
        app: vertexai-app
    spec:
      serviceAccountName: [绑定后的K8s服务账号名] # 使用Workload Identity时需配置
      containers:
      - name: vertexai-app
        image: gcr.io/[你的GCP项目ID]/vertexai-app:v1
        env:
        - name: GOOGLE_CLOUD_PROJECT
          value: "[你的GCP项目ID]"
        - name: GOOGLE_CLOUD_LOCATION
          value: "us-central1"
  1. 部署到K8s集群:kubectl apply -f deployment.yaml

关键参考要点

  • 优先使用Workload Identity,避免密钥泄露风险
  • 确保服务账号拥有足够的Vertex AI权限,比如aiplatform.models.generateContent(调用Gemini模型所需)
  • 本地测试可通过挂载密钥文件、设置环境变量的方式,验证容器内应用是否能正常调用服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 21:22:47