make apply 之前规划、保护和自定义您的 LangSmith 部署。
在规划部署或排查现有部署问题时,可将此页作为参考。内容涵盖:
- 平台层级和部署层级(轻量级与生产级)。
- 模块描述及依赖关系。
- 网络、工作负载标识和流量。
- 附加组件:LangSmith Deployment、Fleet、Insights 和 Polly。
- GCP 托管服务与 Secret Manager 集成。
平台层级
LangSmith 在 GCP 上的部署最多分为五个阶段。每个阶段在上一个阶段的基础上增加一个能力层。所有层共享同一个 GKE 集群和langsmith 命名空间。
Fleet(chart v0.15+)是原先称为 Agent Builder 的功能的当前版本。通过
enable_fleet 启用。与已弃用的 enable_agent_builder 路径不同,它不需要 LangSmith Deployment 层。这两个标志互斥且共享相同的加密密钥。详情请参见部署指南中的启用附加组件。模块描述
部署层级
轻量级部署(全部在集群内)
terraform.tfvars 中设置:
生产级(外部托管服务)
应用核心服务
一次性任务
LangSmith Deployment 附加组件
在 UI 中创建的每个 LangGraph 部署都会在
langsmith 命名空间中生成一个 Kubernetes Deployment,其 Pod 以 langsmith-ksa ServiceAccount 运行。该 ServiceAccount 必须带有 iam.gke.io/gcp-service-account 注解,deploy.sh 会幂等地应用此注解。
GCP 托管服务
当postgres_source = "external" 且 redis_source = "external"(推荐的生产设置)时,Terraform 会配置:
Cloud SQL PostgreSQL
- 默认大小
db-custom-2-8192(2 vCPU, 8 GB),私有 IP,端口 5432。 - 区域性高可用,支持自动故障转移。
- 存储组织、用户、项目、API 密钥、设置。
- Terraform 直接将连接 URL 写入
langsmith-postgres-credentialsKubernetes Secret。
Memorystore Redis
- 默认 5 GB,STANDARD_HA 层级,私有 IP,端口 6379。
- 用于 trace 摄取队列、发布/订阅、短期缓存。
- 无需认证令牌。访问仅通过 VPC 私有 IP 控制。
- Terraform 直接将连接 URL 写入
langsmith-redis-credentialsKubernetes Secret。
Cloud Storage 存储桶
- 存储 trace 负载:大型输入和输出、附件。
- 提供的 Helm 值使用原生 GCS 模式(
engine: GCS,apiURL: https://storage.googleapis.com),通过工作负载标识认证,无需 HMAC 密钥。 - 也支持 S3 兼容模式(
engine: S3),在helm/values/examples/langsmith-values.yaml中展示。它需要 HMAC 密钥:在 Cloud Storage → 设置 → 互操作性下创建一个,并通过config.blobStorage.accessKey和config.blobStorage.accessKeySecret传递给 Helm。 - 生命周期规则:
ttl_s/前缀(默认 14 天),ttl_l/前缀(默认 400 天)。 - 无论哪个层级,GCS 存储桶始终是必需的。
Secret Manager(可选模块)
- 当
enable_secret_manager_module = true时,存储一个 JSON 密钥包(生成的 LangSmith 密钥、Postgres 密码、Redis 密码)。 - 核心密钥(
langsmith-postgres-credentials,langsmith-redis-credentials)无论是否启用此模块,都始终由k8s-bootstrap存储在 Kubernetes Secrets 中。Secret Manager 为必须在集群重建后仍然存在的密钥提供了一个额外的持久化存储。
集群基础设施
Gateway 资源由 Terraform 管理;HTTPRoute 由 Helm 管理。请勿手动删除 Gateway 资源。GCP 会在 Gateway 删除时释放外部 IP,然后在重新创建时分配一个新的 IP。工作负载标识
GKE Pod 通过工作负载标识访问 GCS。Kubernetes ServiceAccount 通过 IAM 绑定与 GCP 服务账户关联;Pod 接收临时凭证,无需在 Secrets 或环境变量中存储静态密钥。
GSA 由
iam 模块定义并输出为 workload_identity_annotation。init-values.sh 会自动将这些注解写入 values-overrides.yaml。
在原生 GCS 模式(默认提供)下,上述 GSA 绑定已足够。可选的 S3 兼容模式(engine: S3)还需要 HMAC 密钥:在 Cloud Storage → 设置 → 互操作性下创建一个,并将其传递给 Helm。
网络拓扑
Cloud SQL 和 Memorystore 仅通过私有 IP 访问。当
postgres_source = "external" 或 redis_source = "external" 时,网络模块会建立专用服务连接(VPC 对等连接到 Google 的托管网络)。
流量走向
组件与存储映射
Secret Manager 集成
不使用 Secret Manager 时:Terraform 模块依赖图
infra 层不安装 LangSmith chart。应用层通过以下两种方式之一安装它,两者都使用 helm/values/ 下相同的分层值文件:
- 部署脚本:
make init-values && make deploy运行helm upgrade --install。 - Terraform
app层:make init-values && make init-app && make apply-app将 chart 作为helm_release资源管理。make init-app将infra输出(集群、存储桶、工作负载标识注解)拉入app/infra.auto.tfvars.json,因此app层无需远程状态数据源即可读取它们。
验证命令
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

