学习笔记 · Obsidian

自托管架构、Kubernetes 与安全安装

LangChainLangSmithPostgreSQL

基础平台组成

Self-hosted 基础 Helm 安装包含 Frontend/Nginx、Backend、Platform Backend、Queue/Ingest Queue、Playground、ACE,以及 PostgreSQL、Redis/Valkey、ClickHouse;Blob Storage 可选但生产强烈推荐。Frontend 是主要用户入口,内部服务不应直接暴露公网。

生产优先使用云托管外部数据库和对象存储,Helm 内置 datastore 更适合试用或小规模验证。最低依赖基线:PostgreSQL 14、Redis 5 或 Valkey 8;ClickHouse 版本应匹配 Helm chart,降级不受支持。

AWS、Azure、GCP 参考映射

能力AWSAzureGCP
KubernetesEKSAKSGKE
PostgreSQLRDS/AuroraFlexible ServerCloud SQL
RedisElastiCacheAzure Managed RedisMemorystore
BlobS3Azure BlobGCS
Secret/身份Secrets/SSM + IRSAKey Vault + Workload IdentitySecret Manager + Workload Identity
入口ALB/EnvoyAGIC/Istio/EnvoyEnvoy/GCLB

三云都应跨可用区部署节点与托管数据库、私网访问存储、用工作负载身份取代长期云密钥,并把平台指标送入各云监控或 OTel/Prometheus。

Helm 安装顺序

  1. 获取 Enterprise license,准备符合版本要求的集群、DNS、TLS 与存储。
  2. 先安装基础 LangSmith,验证 UI/API、Trace ingestion、数据库迁移和用户登录。
  3. 再按需启用 Deployment、Fleet、Insights、Chat、Sandboxes、Engine;不要一次开启所有 add-on 后再定位故障。
  4. Queue/Deployment 自动扩容安装 KEDA;验证 CRD 与 Metrics API 后再启用 HPA/KEDA。
  5. 记录实际 Helm chart、appVersion、镜像 digest、values 与数据库 schema 版本。

附加能力会增加 Host Backend、Listener、Operator、Tool/Trigger servers、Sandbox/Engine 组件和额外密钥。Engine 依赖 Sandboxes,且 Self-hosted Engine 仍需访问 LangSmith Intelligence;“自托管”不自动等于“完全无出站”。

环境变量注入

  • commonEnv 进入绝大多数 Deployment/StatefulSet,但不会进入隔离的 playground 与 aceBackend。
  • 服务专属 extraEnv 用于精确注入;同一服务不得同时出现重复变量名,否则结果可能不确定。
  • 模型 provider 凭据需单独给 Playground,优先 Secret/Workload Identity。
  • Feature flag 需记录 chart/app 最低版本,不能只复制新文档到旧 chart。

Ingress 与 TLS

默认 Frontend LoadBalancer 可能获得公网 IP。生产改为 ClusterIP,并使用 Ingress、Gateway API 或 Istio;统一定义 hostname、basePath、IngressClass 与 TLS termination。

内部 CA 应以 Kubernetes Secret 挂载到系统 trust store;PostgreSQL 使用 sslmode=verify-full,Redis 使用 rediss://。Playground mTLS 的 client cert/key 与全局 CA 是两套配置。证书轮换必须验证所有 Backend、Queue、Playground 和 migration Job,而不仅是浏览器入口。

身份模式的不可逆边界

模式用途约束
None仅基础设施验证功能受限,禁止生产
Basic Auth试用/无外部 IdP单一 Default Organization;初始密码需安全旁路传递
OAuth2/OIDC SSO生产推荐Authorization Code + Client Secret;需 OIDC compliant IdP
  • Basic 可升级到 OAuth Client Secret,但不能再切回 Basic。
  • 不能同时启用 Basic 与 OAuth。
  • OAuth Client Secret 与旧 PKCE 模式不能互转;PKCE 已 deprecated。
  • 从 Basic 切 OAuth 前,必须确认同一邮箱能通过 IdP 登录,否则会锁死管理员。

Secret 与供应链

可让 Helm 引用预建的 langsmith-secrets、PostgreSQL、Redis、ClickHouse Secret,结构与 key 必须完全符合 chart。api_key_salt 一旦启用不可更换;变更会永久使组织内现有 API key 全部失效。

Air-gapped/私有 Registry 可镜像所有 chart 引用的镜像。0.16.21(chart 0.16.0-rc.17)以后多个服务合并到 langsmith-backend,旧版本仍需旧镜像集合。应固定 digest,验证 Cosign 签名与 SBOM,而非只复制 tag。

FIPS/air-gapped rollout 必须先与 LangChain 确认 entitlement 和支持矩阵。v15 起 LangChain 自有镜像有 -fips 变体;这只证明镜像密码模块边界,不自动证明整套客户环境或业务流程已通过 FIPS 认证。

Mission Control

Mission Control 是集群内运维控制台,默认通过 kubectl port-forward 访问,无需公网 Ingress。可用安装脚本或逐条手工 Helm 命令;受控环境应先审阅脚本、values、RBAC 权限和镜像。卸载控制台不应删除 LangSmith 数据,但仍需先核对 Helm release 与 namespace target。

安装验收

  1. 外部服务连通、TLS 主机名校验、工作负载身份和最小权限。
  2. Migration Job 完成,Frontend/Backend/Queue/Playground/ACE 全部 Ready。
  3. 登录、API key、Trace 写入与查询、模型 Playground smoke test。
  4. 节点/AZ 故障、Pod 驱逐、数据库 failover 和队列重试。
  5. Ingress 仅暴露预期端点,内部 Service/metrics 不可公网访问。
  6. Secret 未出现在 values、日志、命令历史或镜像层。
  7. 备份、恢复、升级与证书轮换均有演练记录。