Skip to content
LangSmith 文档版本 跟随上游 源快照 bf1da242 更新于 2026-10-18

Azure Terraform 变量参考

Azure AKS 上自托管 LangSmith 的 Terraform 变量完整参考。

Azure Terraform 模块公开的每个输入变量的完整参考。首次填写 terraform.tfvars 或调整现有部署时使用它。

变量分为两类:

  • 非敏感(区域、规模、功能标志):在 infra/terraform.tfvars 中设置。
  • 敏感(许可证密钥、密码、加密密钥):使用 make setup-env 设置,它会将它们写入 infra/secrets.auto.tfvars(被 gitignore,由 Terraform 自动加载)并存储在 Azure Key Vault 中。

有关端到端安装,请参阅部署指南。有关模块如何协同工作,请参阅架构参考。

核心

变量默认值必填描述
subscription_id—是部署的 Azure 订阅 ID。
locationeastus否部署的 Azure 区域。
identifier""否附加到每个资源名称的后缀,用于区分环境(例如 -prod、-staging)。必须以连字符开头或为空。
environmentdev否应用于所有资源的环境标签。
owner""否资源所有者的电子邮件或团队名称。作为标签应用。
cost_center""否成本中心或账单代码。作为标签应用。

网络

变量默认值必填描述
create_vnettrue否创建新的 VNet。设置为 false 以使用你自己的 VNet 和子网。
vnet_id""当 !create_vnet 时现有 VNet 资源 ID。
aks_subnet_id""当 !create_vnet 时AKS 集群的现有子网 ID。
postgres_subnet_id""当 !create_vnet 时PostgreSQL 服务器的现有子网 ID。
redis_subnet_id""当 !create_vnet 时Redis 实例的现有子网 ID。
postgres_subnet_address_prefix["10.0.32.0/20"]否PostgreSQL 子网的 CIDR 前缀。可以是不相交的范围。
redis_subnet_address_prefix["10.0.48.0/20"]否Redis 子网的 CIDR 前缀。可以是不相交的范围。
aks_authorized_ip_ranges[]否允许访问 AKS API 服务器的外部 CIDR。为空时,API 服务器可公开访问,因此 Terraform 驱动的 Helm 和 kubectl 步骤可以从任何 apply 主机运行。生产环境请填入运维人员和 CI 出口 CIDR。

AKS

变量默认值必填描述
default_node_pool_vm_sizeStandard_D8s_v3否默认节点池的 VM 大小。Standard_D8s_v3(8 vCPU / 32 GiB)是使用外部 Postgres 和 Redis 的核心平台的推荐基线。仅对使用集群内数据库的轻量或演示部署使用 Standard_D4s_v3(4 vCPU / 16 GiB)。
default_node_pool_min_count1否默认池的最小节点数。自动扩缩器永远不会缩减到此下限以下。生产环境设置为 3(核心平台需要约 14.4 vCPU,三个 Standard_D8s_v3 节点即可覆盖)。最小或开发部署设置为 1。
default_node_pool_max_count10否默认池的最大节点数。核心平台使用 4 到 6 个节点;启用附加组件时增加余量(LangSmith Deployment ~6,Agent Builder ~8,Insights 10 到 12)。提高此值会立即生效,无需重启节点。
default_node_pool_max_pods60否默认池中每个节点的最大 pod 数。Azure CNI 默认值 30 对 LangSmith 来说太低;60 可以在单个节点上容纳完整部署。不可变:更改它会重新创建节点池。
additional_node_poolslarge: Standard_D16s_v3, 0–2否附加节点池。默认 large 池(Standard_D16s_v3,16 vCPU / 64 GiB)是 ClickHouse(请求 3.5 vCPU / 15 GiB)和 LangSmith Deployment agent pod 所必需的。min_count = 0 会在空闲时将其缩容到零。对于具有多个同时部署的 Agent Builder,将 max_count 提高到 3 或更多。
aks_service_cidr10.0.64.0/20否Kubernetes 服务 CIDR。不得与 VNet 重叠。
aks_dns_service_ip10.0.64.10否CoreDNS 服务 IP。必须在 aks_service_cidr 内。
aks_deletion_protectiontrue否防止意外删除 AKS 集群。开发/测试设置为 false。
availability_zones["1"]否要部署到的可用区。使用 ["1", "2", "3"] 实现区域冗余高可用性。

数据源

变量默认值必填描述
postgres_sourceexternal否external 预配 Azure Database for PostgreSQL Flexible Server(私有 VNet)。in-cluster 使用 chart 管理的 Postgres pod(仅开发/演示)。
redis_sourceexternal否external 预配 Azure Managed Redis(私有 VNet)。in-cluster 使用 chart 管理的 Redis pod(仅开发/演示)。
clickhouse_sourcein-cluster否in-cluster(仅开发/POC)或 external 使用 LangChain Managed ClickHouse,生产环境推荐。

PostgreSQL

变量默认值必填描述
postgres_admin_usernamelangsmith否PostgreSQL 管理员用户名。
postgres_admin_password""当外部时PostgreSQL 管理员密码。通过 make setup-env 设置。
postgres_database_namelangsmith否LangSmith 连接的数据库名称。必须与服务器上存在的数据库匹配。
postgres_deletion_protectiontrue否防止意外删除 PostgreSQL 服务器。开发/测试设置为 false。
postgres_geo_redundant_backupfalse否为 PostgreSQL 启用异地冗余备份。
postgres_standby_availability_zone""否PostgreSQL 区域冗余高可用性的备用可用区。为空则禁用高可用备用。

Redis

变量默认值必填描述
amr_skuBalanced_B0否Azure Managed Redis SKU。Balanced_B0 是最小的。如果区域报告 AllocationFailed,请向上调整(Balanced_B1、Balanced_B3 等)。替代经典的 redis_capacity。

Blob 存储

变量默认值必填描述
blob_ttl_enabledtrue否在 blob 容器上启用生命周期 TTL 规则。
blob_ttl_short_days14否短期追踪 blob 的 TTL(天)。
blob_ttl_long_days400否长期追踪 blob 的 TTL(天)。
storage_allowed_ips[]否允许通过存储账户默认拒绝防火墙的公共 IP 或 CIDR。AKS pod 流量会通过 Microsoft.Storage 服务终结点自动加入允许列表。仅添加需要 blob 数据平面的外部客户端(运维工作站、CI runner)。

Key Vault

变量默认值必填描述
keyvault_name""否Key Vault 名称。必须全局唯一,3 到 24 个字符。为空时,main.tf 会计算 langsmith-kv<identifier>。覆盖以避免命名冲突。
keyvault_purge_protectiontrue否启用清除保护。开发/测试设置为 false,以允许销毁后立即重用名称。
keyvault_default_actionAllow否Key Vault 数据平面防火墙的默认操作。Allow 可保持首次 apply(通过数据平面创建密钥)正常工作。生产环境设置为 Deny 并填充 keyvault_allowed_ips。
keyvault_allowed_ips[]否当 keyvault_default_action = "Deny" 时,允许通过 Key Vault 防火墙的公共 IP 或 CIDR。AKS 子网会通过 Microsoft.KeyVault 服务终结点自动加入允许列表。

Ingress

变量默认值必填描述
ingress_controllernginx否Ingress 控制器:nginx、istio(自管理 Helm)、istio-addon(Azure 托管 Istio,Azure 上推荐)、agic(Application Gateway Ingress Controller)、envoy-gateway(Gateway API)或 none。有关 TLS 兼容性矩阵,请参阅 INGRESS_CONTROLLERS.md。
istio_version1.29.1否Istio Helm chart 版本。仅在 ingress_controller = "istio" 时使用。
istio_addon_revisionasm-1-27否Azure Service Mesh 修订版(asm-1-<minor>)。使用 az aks mesh get-upgrades 列出可用修订版。仅在 ingress_controller = "istio-addon" 时使用。
agic_subnet_address_prefix["10.0.96.0/24"]否Application Gateway 专用子网的 CIDR。必须为 /24 或更大。仅在 ingress_controller = "agic" 时使用。
agw_sku_tierStandard_v2否Application Gateway SKU 层级:Standard_v2 或 WAF_v2(启用 WAF)。仅在 ingress_controller = "agic" 时使用。
envoy_gateway_versionv1.2.0否Envoy Gateway Helm chart 版本。仅在 ingress_controller = "envoy-gateway" 时使用。
ingress_ip""否Ingress 负载均衡器的公共 IP,DNS 模块用于 A 记录。使用 kubectl get svc -n ingress-nginx 获取。

DNS 和 TLS

变量默认值必填描述
dns_label""否Ingress 负载均衡器的 Azure 公共 IP DNS 标签。结果为 <label>.<region>.cloudapp.azure.com。适用于 nginx、istio、istio-addon 和 envoy-gateway。为空则跳过。
langsmith_domain""否LangSmith 的自定义主机名(例如 langsmith.example.com)。用于 Helm values 和 ingress TLS。优先于 dns_label。
tls_certificate_sourceletsencrypt否letsencrypt(通过 cert-manager 的 HTTP-01)、dns01(通过 cert-manager 的 DNS-01)、existing(自带证书)或 none(仅 HTTP,演示/开发)。
letsencrypt_email""当 letsencrypt 或 dns01 时用于 Let's Encrypt 证书通知的电子邮件。
create_dns_zonefalse否为 LangSmith 域创建 Azure DNS 区域和 A 记录。DNS-01 签发所必需。

LangSmith 应用

变量默认值必填描述
langsmith_namespacelangsmith否LangSmith 的 Kubernetes 命名空间。用于限定 blob 存储的 Workload Identity 作用域。
langsmith_release_namelangsmith否Helm release 名称。用于 Workload Identity 联合凭据主体。
langsmith_domain""否请参阅 DNS 和 TLS。
langsmith_helm_chart_version""否固定 chart 版本以实现可复现部署。部署脚本的优先级是 CHART_VERSION 环境变量,然后是此变量,最后是固定行默认值 ~0.15.1(最新的 0.15.x 补丁)。
langsmith_admin_email""否初始组织管理员电子邮件(Helm values 中的 initialOrgAdminEmail)。通过 make setup-env 设置。

规模和附加组件标志

init-values.sh 和 deploy.sh 读取这些标志;Terraform 会忽略它们。它们控制脚本生成哪些 Helm overlay。

变量默认值必填描述
sizing_profileproduction否Helm 规模 overlay:minimum、dev、production 或 production-large。
enable_deploymentsfalse否启用 LangSmith Deployment(host-backend、listener、operator)。
enable_agent_builderfalse否启用 Agent Builder UI。需要 enable_deployments = true。
enable_insightsfalse否启用 Insights(由 ClickHouse 支持的分析)。需要 enable_deployments = true。
enable_pollyfalse否启用 Polly(AI 评估和监控)。需要 enable_deployments = true。

安全和审计

变量默认值必填描述
create_waffalse否部署 Azure WAF 策略(OWASP 3.2 加机器人保护)。创建后附加到 Application Gateway 或 Front Door。
waf_modePrevention否WAF 强制模式:Detection(仅记录)或 Prevention(阻止)。
create_diagnosticsfalse否为 AKS、Key Vault 和 PostgreSQL 部署 Log Analytics 工作区和诊断设置。
log_retention_days90否Log Analytics 工作区保留天数。
create_bastionfalse否部署一个跳板 VM,用于通过 az ssh vm 访问私有 AKS。
bastion_vm_sizeStandard_B2s否堡垒主机的 VM SKU。
bastion_admin_ssh_public_key""否用于紧急管理员访问堡垒主机的 SSH 公钥。
bastion_allowed_ssh_cidrs["0.0.0.0/0"]否允许入站 SSH 到堡垒主机的 CIDR。生产环境限制为 VPN 或企业范围。

敏感变量(使用 setup-env.sh 设置)

make setup-env 会将这些写入 secrets.auto.tfvars,Terraform 会将它们存储在 Azure Key Vault 中。切勿在 terraform.tfvars 中内联设置这些变量。

make setup-env 还管理 postgres_admin_password 和 langsmith_admin_email,记录在 PostgreSQL 和 LangSmith 应用部分。此表仅列出本参考中未出现在其他位置的敏感变量。

变量描述
langsmith_license_keyLangSmith 企业许可证密钥。
langsmith_admin_password初始组织管理员密码。
langsmith_api_key_salt用于哈希 API 密钥的盐。首次部署后必须保持稳定。
langsmith_jwt_secret用于 Basic Auth 会话的 JWT 密钥。必须保持稳定。
langsmith_deployments_encryption_key用于 LangSmith Deployment 的 Fernet 密钥。绝不能更改。
langsmith_agent_builder_encryption_key用于 Agent Builder 的 Fernet 密钥。绝不能更改。
langsmith_insights_encryption_key用于 Insights 的 Fernet 密钥。绝不能更改。
langsmith_polly_encryption_key用于 Polly 的 Fernet 密钥。绝不能更改。

App 模块变量(Terraform 路径)

Terraform 路径(make init-app 然后 make apply-app)在 Terraform state 中管理 LangSmith Helm release、其 Kubernetes Secret 和 Workload Identity ServiceAccount,而不是通过 Helm shell 脚本。其变量位于 app/terraform.tfvars。将此路径用作 make init-values && make deploy 的替代方案。有关何时选择此路径,请参阅 Azure 部署指南。

make init-app 会从 infra 模块输出自动填充基础设施透传变量(subscription_id、resource_group_name、cluster_name、keyvault_name、storage_account_name、storage_container_name、workload_identity_client_id、langsmith_namespace、tls_certificate_source、ingress_controller 和 dns_label)。每个变量默认为 null,并在 plan 时失败,前置条件错误会指出缺少的内容。仅当你针对单独预配的基础设施运行 app 模块时才覆盖它们。

在 app/terraform.tfvars 中设置以下内容:

变量默认值必填描述
sizingproduction否资源规模配置文件:production、production-large、dev 或 none(chart 默认值)。
postgres_sourceexternal否external(Azure Database for PostgreSQL)或 in-cluster(Helm)。与 infra 值保持一致。
redis_sourceexternal否external(Azure Managed Redis)或 in-cluster(Helm)。与 infra 值保持一致。
hostnamenull否LangSmith 主机名。未设置时从 dns_label 自动检测。
admin_emailadmin@example.com否初始组织管理员电子邮件地址。
release_namelangsmith否Helm release 名称。
chart_version""否LangSmith Helm chart 版本。空则使用最新版本。
helm_timeout1200否Helm 安装和升级超时时间(秒)。
helm_force_updatefalse否每次 apply 时强制进行 Helm 升级,即使值未更改。
enable_agent_deploysfalse否启用 LangSmith Deployment。
enable_agent_builderfalse否启用 Agent Builder。需要 enable_agent_deploys = true。
enable_insightsfalse否启用 Insights。需要外部 ClickHouse。
enable_pollyfalse否启用 Polly AI 评估和监控。需要 enable_agent_deploys = true。
enable_usage_telemetryfalse否启用扩展使用遥测报告。
tls_enabled_for_deploysnull否agent 部署端点是否使用 HTTPS。未设置时从 tls_certificate_source 自动检测。
clickhouse_host""当 enable_insights 时ClickHouse 主机名或端点。
clickhouse_port8123否ClickHouse HTTP 端口。
clickhouse_databasedefault否ClickHouse 数据库名称。
clickhouse_usernamedefault否ClickHouse 用户名。
clickhouse_password""否ClickHouse 密码。为需要身份验证的 ClickHouse 设置。
clickhouse_tlstrue否为 ClickHouse 连接启用 TLS。

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。