- 基础设施:Terraform 配置 VPC、GKE、Cloud SQL、Memorystore、GCS 和 Workload Identity。
- 应用程序:使用部署脚本或 Terraform
app层安装的 LangSmith 图表。
前提条件
所需工具
在 macOS 上安装:
所需的 GCP API
Terraform 在首次执行时会自动启用这些 API,但必须首先启用cloudresourcemanager.googleapis.com,以便 Terraform 能够启用其余 API。为了加速首次运行,请手动启用所有 API:
所需的 IAM 角色
运行 Terraform 的主体需要在目标项目上拥有以下角色。在初始部署稳定后,请裁减为最小权限。身份验证
快速入门
要以最快速度从零开始运行 LangSmith 实例,请按顺序运行以下命令:配置基础设施
Terraform 配置以下 GCP 资源:克隆并配置
modules/gcp/ 目录运行。运行 make help 可查看完整的目标列表。
使用交互式向导生成 terraform.tfvars:
infra/terraform.tfvars。重新运行时会预先选择现有值;在每个提示符下按 Enter 以保留当前配置。
也可以选择手动编辑:
将密钥加载到 Secret Manager
terraform.tfvars,推导密钥前缀,并对每个密钥进行如下处理:重用已导出的值、读取现有的 Secret Manager 密钥、自动生成一个(用于盐和 Fernet 密钥),或提示您输入。许可证密钥和管理员密码是您需要交互式提供的两个值。该脚本必须通过 source 执行,因为 make 无法将环境变量导出回父 shell。
验证密钥是否存在:
预检
make preflight 会验证当前活动的 gcloud 凭证是否具有执行每个所需操作的权限、所需的 GCP API 是否已启用,以及目标区域是否包含模块请求的 SKU。在此处发现缺失项比在 terraform apply 过程中发现要快。
执行
在干净的项目上配置 GCP 云基础需要 25 到 35 分钟。请勿中断 apply 过程。
make plan 显示建议的差异。在应用前请检查输出。make apply 按依赖顺序进行配置:VPC 和网络,然后是 GKE(约 10 到 15 分钟),私有服务连接,Cloud SQL(带高可用约 10 分钟),Memorystore,GCS,最后是引导工作负载。
等效的直接 Terraform 流程:
配置 kubectl
Ready 状态。
验证引导组件
部署 LangSmith
使用以下三种支持的部署方式之一:脚本驱动的 Helm 部署(推荐)
两条命令即可安装带有从 Terraform 输出连接而来的合理默认值的 LangSmith 图表:init-values.sh 会提示输入管理员邮箱,然后读取 terraform.tfvars 中的 sizing_profile 和 enable_* 标志,并将匹配的值文件从 helm/values/examples/ 复制到 helm/values/。它还会生成 values-overrides.yaml,其中包含您的主机名、Workload Identity 注解和 GCS 存储桶名称。
make deploy 运行 helm/scripts/deploy.sh,该脚本刷新 kubeconfig、运行预检、应用分层的值文件,并执行 helm upgrade --install。
图表安装和 Pod 就绪预计需要 8 到 12 分钟。
如果您已完成脚本驱动的部署,请跳转到验证并配置 DNS。以下两种方式是脚本驱动部署的替代方案。
Terraform 管理的 Helm 发布
将整个部署置于 Terraform 管理之下。app 层封装了与部署脚本相同的图表和分层值文件,并作为 helm_release 资源进行管理。
app/terraform.tfvars 中设置应用层输入(admin_email 是必需的;hostname、chart_version、sizing 和 enable_* 标志是可选的)。app 层使用自己的变量名:sizing(而不是 sizing_profile)和 enable_agent_deploys(而不是 enable_deployments)。make init-app 会将基础设施派生的输入(集群、存储桶、Workload Identity 注解)填充到 app/infra.auto.tfvars.json 中。
该发布使用 wait = false 进行应用,因为操作员生成的代理在冷启动的集群上可能需要 10 多分钟;terraform apply 成功意味着发布已被接受,但不代表每个 Pod 都已就绪。
如果您已完成 Terraform 管理的 Helm 发布,请跳转到验证并配置 DNS。以下是另一种方式。
手动 Helm 安装
最适合直接运行helm 而不使用脚本的团队。首先生成所需的密钥:
helm/values/values.yaml 设置了 config.blobStorage.engine: GCS(原生 GCS 模式),因此 blob 存储通过 Workload Identity 进行身份验证,无需 HMAC 密钥。每个组件的 Workload Identity 注解位于 values-overrides.yaml 中;使用 make init-values 生成它,或者手动为每个组件添加 serviceAccount.annotations."iam.gke.io/gcp-service-account"。
如果要使用兼容 S3 的 blob 存储代替 Workload Identity,请添加
--set config.blobStorage.engine=S3,并通过 --set config.blobStorage.accessKey=<key> 和 --set config.blobStorage.accessKeySecret=<secret> 传递 HMAC 密钥。在 Cloud Storage → 设置 → 互操作性下创建 HMAC 密钥。验证并配置 DNS
规模配置
在terraform.tfvars 中设置 sizing_profile,然后重新运行 make init-values && make deploy。
预期的 Pod
启用附加组件
每个附加组件都由infra/terraform.tfvars 中的一个标志控制。设置标志,重新应用 Terraform,然后重新运行 make init-values && make deploy。
LangSmith Deployment
添加host-backend、listener 和 operator。在启用 Agent Builder 或 Insights 之前需要此组件。当 enable_langsmith_deployment = true 时,KEDA 会自动安装。
Fleet
Fleet 是以前称为 Agent Builder 的功能的当前形式,作为独立服务部署(图表 v0.15+)。
enable_fleet 启用 Fleet。与已弃用的 enable_agent_builder 路径不同,它不需要 LangSmith Deployment。Terraform 在 Cloud SQL 上配置一个专用的 fleet 数据库,并将 langsmith-fleet-postgres 和 langsmith-fleet-redis 密钥连接到现有的 Cloud SQL 和 Memorystore 实例。Fleet 重用 langsmith_agent_builder_encryption_key,因此从 enable_agent_builder 迁移会保留相同的密钥和数据。
Fleet 需要 LangSmith Helm 图表
>=0.15.0 以及您许可证中的 Agent Builder 或 Fleet 权益。Agent Builder (已弃用)
在 GCP 上,
enable_agent_builder 已被 Fleet (enable_fleet, 图表 v0.15+) 取代。新部署请使用 Fleet。本节为现有安装记录旧路径。agent-builder-tool-server、agent-builder-trigger-server 和一个注册 Polly 代理 URL 的 agentBootstrap Job。
agentBootstrap 完成后重启前端,使其加载 langsmith-polly-config ConfigMap:
Insights 和 Polly
前提条件:Agent Builder 健康。Insights 启用基于 ClickHouse 的跟踪分析。Polly 是 AI 评估和监控代理。两者一起启用。按附加组件划分的预期 Pod
LangSmith Deployment 添加:langsmith-host-backend, langsmith-listener, langsmith-operator。
Fleet 添加: standalone-fleet-api-server, standalone-fleet-tool-server, standalone-fleet-trigger-server, standalone-fleet-queue。
Agent Builder 添加: langsmith-agent-builder-tool-server, langsmith-agent-builder-trigger-server, langsmith-agent-builder-bootstrap (已完成), agent-builder-<hash> (操作员生成)。
Insights 和 Polly 添加: clio-<hash> (Insights 分析), smith-polly-<hash> (Polly 代理), lg-<hash>-0 (LangGraph StatefulSet)。
关键注意事项
config.deployment.url必须包含https://。没有它,操作员生成的代理会停留在DEPLOYING状态。config.deployment.enabled: true对 LangSmith Deployment 是必需的。只设置 URL 而不设置enabled: true会导致图表静默跳过listener和operator。- 加密密钥在首次启用后绝不能更改。轮换
insights_encryption_key或polly_encryption_key会永久破坏现有的加密数据。 - 首次启用 Polly 后重启前端。
agentBootstrap在注册后创建langsmith-polly-configConfigMap。在引导完成之前启动的前端 Pod 不会自动加载它。 - Envoy Gateway IP 在销毁时会更改。Gateway 删除时 GCP 会释放外部 IP。重新应用后,会分配新的 IP,因此请更新您的 DNS A 记录。
langsmith-ksa注解不是永久的。操作员在运行时创建langsmith-ksa;它不会在命名空间删除后保留。deploy.sh会幂等地重新注解它。如果集群重建后操作员 Pod 失去 GCS 访问权限,请重新运行make deploy。
后续步骤
- 参考 GCP 变量和快速参考。
- 查阅 GCP 架构以了解模块结构、流量和 Workload Identity。
- 当出现问题时,请查阅 GCP 故障排除指南。
- 在 UI 中启用代理部署,请参阅 LangSmith Deployment。
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

