terraform.tfvars 或调整现有部署时使用此文档。
变量分为两类:
- 非敏感变量(区域、规格、功能开关):在
infra/terraform.tfvars中设置。 - 敏感变量(许可证密钥、密码、加密密钥):通过
infra/scripts/setup-env.sh获取,该脚本会将它们写入 Google Secret Manager 并为 Terraform 和 Helm 步骤导出。
核心
| 变量 | 默认值 | 必需 | 描述 |
|---|---|---|---|
project_id | — | 是 | 用于创建资源的 GCP 项目 ID。 |
region | us-west2 | 否 | 用于区域性资源的 GCP 区域。 |
zone | us-west2-a | 否 | 用于分区资源的 GCP 可用区。 |
environment | prod | 否 | 应用于标签的环境名称:dev、staging 或 prod。 |
name_prefix | ls | 否 | 所有资源名称的前缀。1 到 11 个字符,以小写字母开头;仅限小写字母、数字和连字符。 |
unique_suffix | true | 否 | 在资源名称后追加随机后缀。建议用于多租户项目。 |
owner | platform-team | 否 | 应用于所有资源的所有者标签。 |
cost_center | "" | 否 | 用于计费归属的成本中心标签。 |
labels | {} | 否 | 应用于所有资源的附加标签。 |
网络
| 变量 | 默认值 | 必需 | 描述 |
|---|---|---|---|
subnet_cidr | 10.0.0.0/20 | 否 | GKE 子网的 CIDR。不得与现有范围重叠。 |
pods_cidr | 10.4.0.0/14 | 否 | GKE Pod 的 CIDR。不得与子网或服务范围重叠。 |
services_cidr | 10.8.0.0/20 | 否 | GKE 服务的 CIDR。不得与子网或 Pod 范围重叠。 |
gke_master_authorized_cidrs | [] | 否 | 允许访问 GKE 控制平面端点的外部 CIDR。留空将使控制平面可公开访问,以便 Terraform 管理的 Helm 和 kubectl 步骤可以从任何应用主机运行。在生产环境中,请填入运维和 CI 出口的 CIDR。 |
GKE
| 变量 | 默认值 | 必需 | 描述 |
|---|---|---|---|
gke_use_autopilot | false | 否 | 使用 GKE Autopilot 模式。Autopilot 始终使用 Dataplane V2。 |
gke_node_count | 2 | 否 | 每个可用区的初始节点数(仅限标准模式)。 |
gke_min_nodes | 2 | 否 | 自动缩放时每个可用区的最少节点数。 |
gke_max_nodes | 10 | 否 | 自动缩放时每个可用区的最多节点数。 |
gke_machine_type | e2-standard-4 | 否 | GKE 节点机器类型(例如 e2-standard-4、n2-standard-8)。 |
gke_disk_size | 100 | 否 | 节点磁盘大小(GB)。 |
gke_release_channel | REGULAR | 否 | GKE 发布通道:RAPID、REGULAR 或 STABLE。 |
gke_deletion_protection | true | 否 | 在 GKE 集群上启用删除保护。 |
gke_network_policy_provider | DATA_PLANE_V2 | 否 | 网络策略提供商:CALICO(旧版)或 DATA_PLANE_V2(基于 Cilium,推荐)。 |
PostgreSQL (Cloud SQL)
| 变量 | 默认值 | 必需 | 描述 |
|---|---|---|---|
postgres_source | external | 否 | external(具有私有 IP 的 Cloud SQL)或 in-cluster(通过 Helm 部署)。 |
postgres_version | POSTGRES_15 | 否 | Cloud SQL PostgreSQL 版本。 |
postgres_tier | db-custom-2-8192 | 否 | Cloud SQL 机器层级(例如 db-f1-micro、db-custom-2-8192)。 |
postgres_disk_size | 50 | 否 | Cloud SQL 磁盘大小(GB)。 |
postgres_high_availability | true | 否 | 启用 Cloud SQL 高可用性(区域备用)。 |
postgres_deletion_protection | true | 否 | 在 Cloud SQL 上启用删除保护。 |
postgres_database_flags | 参见描述 | 否 | 在 Cloud SQL 实例上设置的数据库标志。默认为 max_connections = 500 以及检查点和连接日志标志。 |
postgres_ssl_mode | ENCRYPTED_ONLY | 否 | Cloud SQL SSL 强制执行策略。ENCRYPTED_ONLY 要求每个连接都使用 TLS。ALLOW_UNENCRYPTED_AND_ENCRYPTED 接受明文。TRUSTED_CLIENT_CERTIFICATE_REQUIRED 还需要客户端证书。 |
postgres_password | "" | 当 external 时 | Cloud SQL 密码。通过 TF_VAR_postgres_password 设置,或由 setup-env.sh 存储在 Secret Manager 中。 |
Redis (Memorystore)
| 变量 | 默认值 | 必需 | 描述 |
|---|---|---|---|
redis_source | external | 否 | external(具有私有 IP 的 Memorystore)或 in-cluster(通过 Helm 部署)。 |
redis_version | REDIS_7_0 | 否 | Memorystore Redis 版本。 |
redis_memory_size | 5 | 否 | Memorystore Redis 内存大小(GB)。 |
redis_high_availability | true | 否 | 启用 Memorystore 高可用性(标准高可用层级)。 |
redis_prevent_destroy | false | 否 | 防止 Terraform 意外销毁 Redis 实例。 |
ClickHouse
| 变量 | 默认值 | 必需 | 描述 |
|---|---|---|---|
clickhouse_source | in-cluster | 否 | in-cluster(仅用于开发/POC)、langsmith-managed(推荐用于生产)或 external(自托管)。 |
clickhouse_host | "" | 当 managed 或 external 时 | ClickHouse 主机。 |
clickhouse_port | 9440 | 否 | ClickHouse 原生协议端口(TLS 为 9440,非 TLS 为 9000)。 |
clickhouse_http_port | 8443 | 否 | ClickHouse HTTP 端口(TLS 为 8443,非 TLS 为 8123)。 |
clickhouse_user | default | 否 | ClickHouse 用户名。 |
clickhouse_password | "" | 当 managed 或 external 时 | ClickHouse 密码。 |
clickhouse_database | default | 否 | ClickHouse 数据库名称。 |
clickhouse_tls | true | 否 | 为 ClickHouse 连接启用 TLS。 |
clickhouse_ca_cert | "" | 否 | 用于 TLS 验证的 ClickHouse CA 证书 (PEM)。留空将使用系统 CA。 |
GCS 存储
| 变量 | 默认值 | 必需 | 描述 |
|---|---|---|---|
storage_ttl_short_days | 14 | 否 | ttl_s/ 前缀的 GCS TTL(天数)。 |
storage_ttl_long_days | 400 | 否 | ttl_l/ 前缀的 GCS TTL(天数)。 |
storage_force_destroy | false | 否 | 允许在桶内有对象时删除存储桶。请谨慎使用。 |
LangSmith 应用程序
| 变量 | 默认值 | 必需 | 描述 |
|---|---|---|---|
langsmith_namespace | langsmith | 否 | LangSmith 的 Kubernetes 命名空间。 |
langsmith_domain | langsmith.example.com | 否 | LangSmith 的完全限定域名。 |
langsmith_license_key | "" | 否 | 许可证密钥。使用 TF_VAR_langsmith_license_key。 |
langsmith_helm_chart_version | "" | 否 | 建议的图表版本,作为 Terraform 输出公开。部署脚本通过 CHART_VERSION 环境变量固定图表行(默认 ~0.15.1,即最新的 0.15.x 补丁)。导出 CHART_VERSION 以覆盖。 |
入口和 TLS
| 变量 | 默认值 | 必需 | 描述 |
|---|---|---|---|
install_ingress | true | 否 | 通过 Terraform 安装入口控制器。网关仅支持 HTTPS,因此 tls_certificate_source 必须是 letsencrypt 或 existing。 |
ingress_type | envoy | 否 | 入口类型:envoy(已实现)或 istio / other(保留)。 |
tls_certificate_source | none | 否 | none、letsencrypt(通过 cert-manager 自动配置)或 existing(提供您自己的证书)。 |
install_cert_manager | false | 否 | 安装 cert-manager 以获取 Let’s Encrypt 证书。 |
letsencrypt_email | "" | 当 letsencrypt 时 | 用于 Let’s Encrypt 通知的电子邮件地址。 |
tls_certificate_crt | "" | 当 existing 时 | TLS 证书 (PEM)。使用 file() 加载。 |
tls_certificate_key | "" | 当 existing 时 | TLS 私钥 (PEM)。使用 file() 加载。 |
tls_secret_name | langsmith-tls | 否 | Kubernetes 中 TLS Secret 的名称。 |
KEDA
| 变量 | 默认值 | 必需 | 描述 |
|---|---|---|---|
enable_langsmith_deployment | true | 否 | 安装 KEDA 以实现 LangSmith 工作线程的队列驱动自动缩放。这是 KEDA 安装开关,不是 LangSmith 部署功能(参见 enable_deployments)。 |
可选 GCP 模块
| 变量 | 默认值 | 必需 | 描述 |
|---|---|---|---|
enable_gcp_iam_module | true | 否 | 连接 modules/iam 以用于 Workload Identity 和存储桶 IAM 绑定。 |
enable_secret_manager_module | false | 否 | 连接 modules/secrets 以将生成的引导凭据存储在 Secret Manager 中。 |
enable_dns_module | false | 否 | 连接 modules/dns 以用于 Cloud DNS 和托管证书。 |
dns_create_zone | true | 否 | 启用 DNS 模块时创建新的 Cloud DNS 托管区域。 |
dns_existing_zone_name | "" | 当 !dns_create_zone 时 | 要使用的现有 Cloud DNS 区域。 |
dns_create_certificate | true | 否 | 启用 DNS 模块时创建 Google 托管的 SSL 证书。 |
规格和功能开关
app Terraform 层和 Helm 部署脚本读取这些开关以启用匹配的图表组件并配置每个功能的数据库。sizing_profile 由部署脚本读取以选择 Helm 规格覆盖。
| 变量 | 默认值 | 必需 | 描述 |
|---|---|---|---|
sizing_profile | default | 否 | Helm 规格:production(约 20 用户,约 100 条轨迹/秒)、production-large(约 50 用户,约 1000 条轨迹/秒)、dev(单副本)、minimum(成本停放下限,不适用于生产)或 default(图表默认值)。 |
enable_deployments | false | 否 | 启用 LangSmith 部署(监听器、操作员、主机后端)。需要部署许可证授权。 |
enable_agent_builder | false | 否 | 启用 Agent Builder。需要 enable_deployments = true 和 Agent Builder 授权。 |
enable_insights | false | 否 | 启用 Insights(由 ClickHouse 支持的分析)。需要 Insights 授权。 |
enable_polly | false | 否 | 启用 Polly(AI 评估和监控)。需要 enable_deployments = true 和 Polly 授权。 |
enable_fleet | false | 否 | 启用 Fleet 独立部署(图表 v0.15+)。不需要 enable_deployments。从 enable_agent_builder 迁移时,重用 langsmith_agent_builder_encryption_key。 |
enable_standalone_polly | false | 否 | 启用 Polly 独立部署(图表 v0.15+)。不需要 enable_deployments。重用 langsmith_polly_encryption_key。 |
enable_standalone_insights | false | 否 | 启用 Insights 独立部署(图表 v0.15+)。不需要 enable_deployments。重用 langsmith_insights_encryption_key。 |
enable_usage_telemetry | false | 否 | 启用扩展的使用遥测报告 (PHONE_HOME_USAGE_REPORTING_ENABLED)。 |
敏感值(通过 setup-env.sh 设置)
调用 infra/scripts/setup-env.sh 会将这些值写入 Google Secret Manager 并将它们导出到当前 shell,供 Terraform 和 Helm 步骤使用。切勿在 terraform.tfvars 中内联设置这些值。
| 变量 | 描述 |
|---|---|
langsmith_license_key | LangSmith 企业许可证密钥。 |
langsmith_admin_password | 初始组织管理员密码。 |
langsmith_api_key_salt | 用于哈希 API 密钥的盐值。首次部署后必须保持稳定。 |
langsmith_jwt_secret | 用于基本身份验证会话的 JWT 密钥。必须保持稳定。 |
langsmith_deployments_encryption_key | 用于 LangSmith 部署的 Fernet 密钥。绝不能更改。 |
langsmith_agent_builder_encryption_key | 用于 Agent Builder 的 Fernet 密钥。绝不能更改。 |
langsmith_insights_encryption_key | 用于 Insights 的 Fernet 密钥。绝不能更改。 |
langsmith_polly_encryption_key | 用于 Polly 的 Fernet 密钥。绝不能更改。 |
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

