了解 AWS Terraform 模块 会预配置什么以及各个部分如何协同工作,以便在运行 make apply 之前,您可以对 LangSmith 部署进行规模调整、安全设置和自定义。 在规划部署或排查现有部署问题时,可将此页面作为参考。它涵盖:
  • 平台层和应用核心服务。
  • AWS 托管服务、IRSA 角色和集群基础设施。
  • 网络拓扑、入口选项和 TLS/DNS 策略。
  • LangSmith 部署附加组件。
  • 模块依赖关系图和可选的安全模块。
如果您准备开始安装,请从 部署演练 开始。

平台层

LangSmith 在 AWS 上的部署分为两个阶段,并有一个可选的附加组件。基础设施阶段预置云基础。应用程序阶段安装 LangSmith Helm chart。LangSmith 部署附加组件是可选的,它添加了 host-backend、listener 和 operator 服务,用于从 UI 管理 LangGraph 应用程序。 AWS 上的 LangSmith 服务布局

组件与存储映射

应用核心服务

这些 Pod 在每次部署中都会运行。所有服务都会写入日志和指标;较繁忙的组件(backend, queue, ingest-queue)支持水平扩缩。
集群内的 ClickHouse 仅用于开发/POC(单 Pod,无复制,无备份)。生产环境请使用 LangChain 托管的 ClickHouse 或自管理的外部集群。
SmithDB 是 LangSmith 专用的可观测性后端,从自托管版本 0.16.0 起可用于自托管环境(参见自托管支持)。这些 Terraform 模块预配置了 ClickHouse,因此前面章节的指导适用于当前部署。

一次性任务

Helm chart 在安装和升级时运行三个任务:

LangSmith 部署附加组件

当 enable_deployments = true 时,将安装三个额外服务,并注册一个 LangGraphPlatform CRD。用户在 LangSmith UI 中创建的每个部署都会在 langsmith 命名空间中生成一个 Kubernetes Deployment,由 operator 管理。

AWS 托管服务

当 postgres_source = "external" 且 redis_source = "external"(推荐的生产设置)时,Terraform 会预配置以下 AWS 托管服务:

RDS PostgreSQL

  • 默认大小:db.t3.large,私有子网,端口 5432。
  • 存储组织、用户、项目、API 密钥、设置。
  • 密钥流:SSM /langsmith/{base_name}/postgres-password → ESO → langsmith-config。

ElastiCache Redis

  • 默认大小:cache.m6g.xlarge,私有子网,TLS 端口 6379。
  • Trace 摄取队列、发布/订阅、短期缓存。
  • 密钥流:SSM /langsmith/{base_name}/redis-auth-token → ESO → langsmith-config。

S3 存储桶

  • Trace 有效负载:大型输入和输出、附件。
  • 通过 langsmith_irsa_role 的 IRSA(无静态密钥)。VPC 网关端点,无公网互联网访问。
  • 前缀:ttl_s/(短 TTL)和 ttl_l/(长 TTL)。
  • 无论何种层级,S3 存储桶始终是必需的。禁用 blob 存储会在大型有效负载时导致集群故障。

SSM 参数存储

  • 所有 LangSmith 密钥的集中式密钥存储。
  • 流程:source infra/scripts/setup-env.sh 将密钥写入 SSM。ESO ClusterSecretStore 读取它们并投射一个 langsmith-config Kubernetes Secret,Helm chart 通过 config.existingSecretName 挂载该 Secret。
  • 前缀:/langsmith/{name_prefix}-{environment}/。

集群基础设施

两个 Terraform 模块安装 LangSmith 所依赖的集群级服务。eks 模块通过 eks-blueprints-addons 安装 AWS 集成控制器;k8s-bootstrap 模块安装工作负载依赖项和可选的入口网关(参见入口选项):

IRSA 角色

IRSA 取代了静态凭证。EKS 集群的 OIDC 颁发者是信任锚点;langsmith 和 kube-system 中的服务账户通过角色 ARN 进行注解,Pod 通过 EKS 令牌 webhook 接收临时凭证。

网络拓扑

默认 ALB 入口

Envoy 网关(可选)

使用 Terraform 默认值(enable_envoy_gateway = true)时,预先配置的 ALB 保持在前端,并通过 TargetGroupBinding 在端口 8080 绑定到 Envoy 服务,如入口选项表所示。下面的独立网络负载均衡器路径是一个变体(helm/values/examples/langsmith-values-ingress-envoy-gateway.yaml),其中 NLB 直接终止 TLS: langsmith 和 langsmith-agents 都通过一个设置了 allowedRoutes: All 的 HTTPRoute 附加到共享的 langsmith-gateway。

带有网络防火墙的出口路径

当 create_firewall = true 时,所有来自私有子网的出站互联网流量在到达 NAT 网关前都会被检查:
Pod 到 Pod、Pod 到 RDS、Pod 到 ElastiCache 的流量使用本地 VPC 路由,永远不会接触防火墙。

入口选项

模块提供四种互斥的入口选项。该选择决定了是否支持拆分数据平面(智能体 Pod 在单独的命名空间中)。

为什么 ALB 不能支持拆分数据平面

标准的 Kubernetes Ingress 是命名空间范围的。ALB 控制器仅路由到与 Ingress 资源在同一命名空间中的服务。langsmith-agents 中的智能体 Pod 对于 langsmith 中的 Ingress 是不可见的。Envoy 网关和 Istio 都通过 Kubernetes Gateway API 支持跨命名空间路由。

ALB 加 Envoy 网关(链式)

当现有 ALB 已提供 SSO(Okta 或 Cognito OIDC)、WAF 和 TLS 时,Envoy 网关会插在它后面而不是替换它:
与默认 ALB 路径的唯一变化是将 ALB 目标组重新指向 Envoy NLB。有关值覆盖,请参阅模块仓库中的 helm/values/examples/langsmith-values-ingress-envoy-gateway.yaml。

TLS 和 DNS

tls_certificate_source 变量控制证书策略:

为什么 ACM 与 cert-manager 不同

ACM 证书不可导出。AWS 将它们直接附加到 ALB,这使得 ACM 在 TLS 在 ALB 处终止时成为正确选择。当 TLS 在集群内终止(Istio Gateway, Envoy Gateway)时,无法使用 ACM,因为这些网关需要将证书材料作为 Kubernetes Secret。 letsencrypt 源是 ALB 路径的参考实现:它安装了带有绑定到 ALB 入口类的 Let’s Encrypt HTTP-01 ClusterIssuer 的 cert-manager。对于 Istio 或 Envoy 上的集群内 TLS,请改用设置 create_cert_manager_irsa = true,这将使用通过 Route 53 验证的 DNS-01 ClusterIssuer。HTTP-01(通过 ALB)和 DNS-01(通过 Route 53)是互斥的。在生产环境中,可将 ClusterIssuer 替换为任何兼容 cert-manager 的颁发者。 Terraform 模块预配置 cert-manager IRSA 角色和 Route 53 权限。只有 ClusterIssuer 清单会在不同颁发者之间变化。

自动配置的 DNS

当设置了 langsmith_domain 且 acm_certificate_arn 为空时,Terraform 将激活 dns 模块,该模块会创建:
  • 一个用于该域名的 Route 53 托管区域。
  • 一个带有 DNS 验证记录的 ACM 证书。
  • 一个 Route 53 别名记录,将域名指向 ALB。
分阶段部署模式: 先设置 langsmith_domain 并将 tls_certificate_source 设为 "none"。Terraform 会创建托管区域和证书,而不会在验证时阻塞。在您的域名注册商处委派 NS 记录,然后在后续应用中切换到 tls_certificate_source = "acm"。Terraform 将阻塞直到证书验证通过并将其接入 HTTPS 侦听器。

自带证书

直接设置 acm_certificate_arn 可以跳过 dns 模块。对于集群内网关,请手动创建一个 Kubernetes TLS Secret,并在 Gateway 或 VirtualService 中引用它。

模块依赖关系图

可选安全模块

默认资源大小

有关生产环境规模调整建议,请参见扩展指南和 AWS 部署指南。

已验证的行为和已知约束

这些约束在 2026 年 4 月的网关排列测试运行期间得到了验证。

验证命令