terraform.tfvars 或调整现有部署时请使用此参考。
变量分为两类:
- 非敏感型 (区域、规格、功能开关):在
infra/terraform.tfvars中设置。 - 敏感型 (许可证密钥、密码、加密密钥):通过
infra/scripts/setup-env.sh获取,该脚本将它们写入 AWS SSM 参数存储;然后,External Secrets Operator 会将它们同步到集群中。
核心
| 变量 | 默认值 | 是否必需 | 描述 |
|---|---|---|---|
name_prefix | — | 是 | 所有资源名称的前缀。最多15个字符:小写字母、数字和连字符,以字母开头。格式:{前缀}-{环境}-{资源}。 |
environment | dev | 否 | 环境标签:dev、staging、prod、test 或 uat。 |
region | us-west-2 | 否 | 所有资源的 AWS 区域。 |
owner | "" | 否 | 负责部署的团队或个人。作为标签应用。 |
cost_center | "" | 否 | 成本中心或计费标签。非空时作为标签应用。 |
tags | {} | 否 | 应用于所有资源的附加标签。 |
网络
| 变量 | 默认值 | 是否必需 | 描述 |
|---|---|---|---|
create_vpc | true | 否 | 创建一个新的 VPC。设置为 false 以使用现有 VPC。 |
vpc_id | null | 当 !create_vpc 时 | 现有 VPC ID。 |
private_subnets | [] | 当 !create_vpc 时 | 现有私有子网 ID。 |
public_subnets | [] | 当 !create_vpc 时 | 现有公有子网 ID。 |
vpc_cidr_block | null | 当 !create_vpc 时 | 现有 VPC CIDR 块。 |
vpc_private_subnets | [] | 否 | 当 create_vpc = true 时,覆盖私有子网的 CIDR。为空则使用模块默认值。 |
vpc_public_subnets | [] | 否 | 当 create_vpc = true 时,覆盖公有子网的 CIDR。为空则使用模块默认值。 |
EKS
| 变量 | 默认值 | 是否必需 | 描述 |
|---|---|---|---|
enable_public_eks_cluster | true | 否 | 启用公有 EKS API 端点。设置为 false 以创建私有集群,并启用 create_bastion 以便通过 SSM 从堡垒机运行 Terraform 和 Helm。 |
eks_public_access_cidrs | ["0.0.0.0/0"] | 否 | 允许访问公有 EKS API 端点的 CIDR。限制为公司 VPN 出口 CIDR 以锁定访问。 |
eks_cluster_version | 1.33 | 否 | EKS Kubernetes 版本。 |
eks_managed_node_group_defaults | {ami_type = "AL2023_x86_64_STANDARD"} | 否 | 应用于所有托管节点组的默认配置。 |
eks_managed_node_groups | 一个 default 组:m5.4xlarge,最小 3 / 最大 10 | 否 | 托管节点组定义。当省略 desired_size 时,其默认值为 min_size。 |
create_gp3_storage_class | true | 否 | 创建 gp3 存储类并将其设置为默认 StorageClass,同时启用卷扩展。 |
eks_cluster_enabled_log_types | ["api", "audit", "authenticator", "controllerManager", "scheduler"] | 否 | 发送到 CloudWatch 的 EKS 控制平面日志类型。设置为 [] 可禁用。 |
eks_addons | {} | 否 | EKS 托管插件配置(coredns、kube-proxy、vpc-cni 等)。 |
create_langsmith_irsa_role | true | 否 | 为 LangSmith Pod 创建 IRSA 角色(用于 S3 访问)。 |
PostgreSQL (RDS)
| 变量 | 默认值 | 是否必需 | 描述 |
|---|---|---|---|
postgres_source | external | 否 | external (通过私有访问的 RDS) 或 in-cluster (通过 Helm 部署)。 |
postgres_instance_type | db.t3.large | 否 | RDS 实例类型。 |
postgres_storage_gb | 10 | 否 | 初始 RDS 存储空间 (GB)。 |
postgres_max_storage_gb | 100 | 否 | 最大 RDS 存储空间 (GB)(自动扩展)。 |
postgres_username | langsmith | 否 | RDS 数据库用户名。 |
postgres_engine_version | 16 | 否 | PostgreSQL 引擎版本。PG 14 将于2026年11月终止支持;新部署建议使用 16。 |
postgres_password | "" | 当 external 时 | RDS 密码。通过 TF_VAR_postgres_password 设置,或由 setup-env.sh 自动生成并存储到 SSM。 |
postgres_iam_database_authentication_enabled | true | 否 | 在 RDS 上启用 IAM 数据库认证。 |
postgres_iam_database_user | null | 否 | 用于 IAM 认证的数据库用户。该用户必须存在于 PostgreSQL 中并拥有 GRANT rds_iam TO <user> 权限。 |
postgres_deletion_protection | true | 否 | 防止意外删除 RDS。对于开发/测试环境设置为 false。 |
postgres_backup_retention_period | 7 | 否 | 保留自动 RDS 备份的天数。0 表示禁用备份。 |
Redis (ElastiCache)
| 变量 | 默认值 | 是否必需 | 描述 |
|---|---|---|---|
redis_source | external | 否 | external (通过私有访问的 ElastiCache) 或 in-cluster (通过 Helm 部署)。 |
redis_instance_type | cache.m6g.xlarge | 否 | ElastiCache 节点类型。 |
redis_auth_token | "" | 当 external 时 | ElastiCache 认证令牌。由 setup-env.sh 自动生成并存储到 SSM。通过 TF_VAR_redis_auth_token 设置。 |
S3
| 变量 | 默认值 | 是否必需 | 描述 |
|---|---|---|---|
s3_ttl_enabled | true | 否 | 启用 S3 生命周期规则以过期追踪数据块。 |
s3_ttl_short_days | 14 | 否 | 短期对象(ttl_s/ 前缀)过期前的天数。 |
s3_ttl_long_days | 400 | 否 | 长期对象(ttl_l/ 前缀)过期前的天数。 |
s3_kms_key_arn | "" | 否 | 用于 S3 加密的 KMS CMK ARN。为空则使用 SSE-S3 (AES256)。 |
s3_versioning_enabled | false | 否 | 启用 S3 存储桶版本控制。由于会保留先前版本,这会增加存储成本。 |
TLS 和 DNS
| 变量 | 默认值 | 是否必需 | 描述 |
|---|---|---|---|
tls_certificate_source | acm | 否 | TLS 来源:acm、letsencrypt (通过 ALB 解决的 cert-manager HTTP-01 ACME 验证) 或 none。对于通过 Route 53 进行的 DNS-01 验证(集群内网关),请改用 create_cert_manager_irsa;两者互斥。 |
acm_certificate_arn | "" | 当 acm 时 | 现有 ACM 证书 ARN。 |
letsencrypt_email | "" | 当 letsencrypt 时 | 用于 Let’s Encrypt ACME 注册的电子邮件。 |
langsmith_domain | "" | 否 | 自定义域名。设置后(且 acm_certificate_arn 为空时),将配置一个 Route 53 托管区域、ACM 证书和别名记录。为空则使用 ALB 主机名。 |
dns_include_wildcard_san | false | 否 | 在 ACM 证书中添加通配符 SAN (*.<langsmith_domain>)。子域名需要 HTTPS 时必需。 |
langsmith_namespace | langsmith | 否 | LangSmith 的 Kubernetes 命名空间。 |
入口
| 变量 | 默认值 | 是否必需 | 描述 |
|---|---|---|---|
alb_scheme | internet-facing | 否 | ALB 方案:internet-facing (公有子网) 或 internal (私有子网,可通过 VPN、对等连接或 PrivateLink 访问)。 |
alb_allowed_cidr_blocks | ["0.0.0.0/0"] | 否 | 允许通过 HTTP/HTTPS 访问 ALB 的 CIDR。限制为 VPN 或办公网络 CIDR 以用于受限访问部署。 |
alb_access_logs_enabled | false | 否 | 启用 ALB 访问日志记录到专用 S3 存储桶。 |
enable_envoy_gateway | false | 否 | 安装 Envoy Gateway (Kubernetes Gateway API) 以替代 ALB Ingress。多命名空间数据平面部署必需。 |
enable_nginx_ingress | false | 否 | 安装 NGINX 入口控制器。ALB 通过 TargetGroupBinding 转发到 NGINX 控制器 Pod。 |
enable_istio_gateway | false | 否 | 为 istiod sidecar-injector webhook 在节点安全组上开放端口 15017。在 EKS 上运行 Istio 时必需。 |
istio_nlb_scheme | internet-facing | 否 | Istio 入口网关 NLB 的方案:internet-facing 或 internal。由设置向导写入 tfvars,但目前尚未被任何模块使用;Istio 路径当前使用位于 ALB TargetGroupBinding 后面的 ClusterIP 服务。 |
create_cert_manager_irsa | false | 否 | 为 cert-manager 通过 Route 53 进行 DNS-01 验证创建 IRSA 角色。使用 Istio Gateway 的 Let’s Encrypt 时必需。应用后运行 make tls。 |
cert_manager_hosted_zone_id | "" | 当 create_cert_manager_irsa 时 | 用于 cert-manager DNS-01 TXT 记录的 Route 53 托管区域 ID。 |
ClickHouse
| 变量 | 默认值 | 是否必需 | 描述 |
|---|---|---|---|
clickhouse_source | in-cluster | 否 | in-cluster (仅用于开发/概念验证) 或 external (LangChain 托管 ClickHouse,推荐用于生产环境)。 |
堡垒机(私有集群)
| 变量 | 默认值 | 是否必需 | 描述 |
|---|---|---|---|
create_bastion | false | 否 | 在公有子网中创建一个 EC2 堡垒机,用于通过 SSM 会话管理器或 SSH 访问私有集群。 |
bastion_instance_type | t3.micro | 否 | 堡垒机的 EC2 实例类型。 |
bastion_key_name | null | 否 | 用于 SSH 的 EC2 密钥对。为空则仅使用 SSM 会话管理器。 |
bastion_enable_ssh | false | 否 | 在堡垒机安全组上开放端口 22。 |
bastion_ssh_allowed_cidrs | [] | 否 | 允许 SSH 访问堡垒机的 CIDR。仅当 bastion_enable_ssh = true 时使用。 |
bastion_root_volume_size_gb | 20 | 否 | 堡垒机的根 EBS 卷大小 (GB)。 |
安全与审计
| 变量 | 默认值 | 是否必需 | 描述 |
|---|---|---|---|
create_cloudtrail | false | 否 | 创建一个 CloudTrail 跟踪,将 AWS API 调用记录到 S3。如果账户级别或组织级别已有跟踪,则跳过。 |
cloudtrail_multi_region | true | 否 | 记录所有区域的 API 调用。 |
cloudtrail_log_retention_days | 365 | 否 | 在 S3 中保留 CloudTrail 日志的天数。0 表示无限期保留。 |
create_waf | false | 否 | 为 ALB 附加 WAFv2 Web ACL (AWS 托管规则,涵盖 OWASP Top 10、IP 信誉、恶意输入)。成本:基础约 $8 到 $10/月。 |
create_firewall | false | 否 | 部署 AWS 网络防火墙,用于基于 FQDN 的出站流量过滤。需要 create_vpc = true。成本:每个端点约 $0.395/小时,外加 $0.065/GB。 |
firewall_allowed_fqdns | ["beacon.langchain.com"] | 否 | 当 create_firewall = true 时,允许出站流量的域名。匹配 TLS SNI 和 HTTP Host 头。所有其他目的地将被丢弃。 |
firewall_subnet_cidr | 10.0.64.0/21 | 否 | 防火墙子网的 CIDR。必须在 VPC CIDR 范围内,且不能与私有或公有子网重叠。 |
规格与功能开关
sizing_profile 和大部分 enable_* 开关由 init-values.sh 和 deploy.sh 读取;Terraform 不会直接对其做出反应。它们影响脚本生成的 Helm 覆盖层文件。三个独立的开关(enable_fleet、enable_standalone_polly、enable_standalone_insights)是例外:Terraform 会读取它们以创建数据库初始化 Job 和 Kubernetes Secret,并在规划阶段对其所需的外部 PostgreSQL 和 Redis 输入强制执行前提条件。
| 变量 | 默认值 | 是否必需 | 描述 |
|---|---|---|---|
sizing_profile | default | 否 | Helm 规格:production、production-large、dev、minimum 或 default。 |
enable_deployments | false | 否 | 启用 LangSmith 部署(监听器、operator、host-backend)。需要部署许可证权限。 |
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_usage_telemetry | false | 否 | 启用扩展的使用情况遥测报告。 |
enable_fleet | false | 否 | 启用 Fleet 独立部署 (chart v0.15+)。需要 enable_deployments = true 以及外部 PostgreSQL 和 Redis。 |
enable_standalone_polly | false | 否 | 启用 Polly 独立部署 (chart v0.15+)。不需要 enable_deployments。需要外部 PostgreSQL 和 Redis。 |
enable_standalone_insights | false | 否 | 启用 Insights 独立部署 (chart v0.15+)。不需要 enable_deployments。需要外部 PostgreSQL 和 Redis。 |
敏感值(通过 setup-env.sh 设置)
执行 infra/scripts/setup-env.sh 脚本会将这些值写入 AWS SSM 参数存储。External Secrets Operator 将它们作为 Kubernetes Secret 同步到集群中。这些不是已声明的 Terraform 变量,不应出现在 terraform.tfvars 中;只能通过 SSM 设置。
| 变量 | 描述 |
|---|---|
langsmith_license_key | LangSmith 企业版许可证密钥。 |
langsmith_admin_password | 初始组织管理员密码。至少12个字符,包含小写字母、大写字母和一个符号。 |
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.

