Kubernetes 与 Helm
通过官方 OPL 数据空间 Helm Chart 部署到任意 Kubernetes 发行版,例如 EKS、AKS、GKE、OpenShift、Rancher 或自建 K8s。
前置条件
在开始之前,请确保已经准备好 共享基础设施要求。
何时选择这种模式
- 组织已经有 Kubernetes 平台与平台工程能力
- 需要声明式 IaC 和 GitOps 工作流
- 需要更高级的自动扩缩、滚动更新和 PDB
- 面向数百到数千用户的关键业务场景
架构
Helm Chart 安装
helm repo add open-webui https://open-webui.github.io/helm-charts
helm repo update
helm install openwebui open-webui/open-webui -f values.yaml你的 values.yaml 需要把默认值改成指向实际共享基础设施。常见关键配置包括:
replicaCountdatabaseUrlwebsockettikaollamapersistenceingressextraEnvVars
Kubernetes 场景中,仍然要注意:
- 使用统一的
WEBUI_SECRET_KEY - 使用 PostgreSQL 而不是 SQLite
- 使用对象存储或 RWX 共享卷
- 多副本时 Redis 必不可少
- 数据库迁移只允许单实例执行
扩缩策略
- 用 HPA 依据 CPU 或内存扩缩
- 每个 Pod 保持
UVICORN_WORKERS=1 - 设置合理的 requests / limits
- 配置 Pod Disruption Budget,保证维护期间最小可用实例数
更新流程
多副本更新的关键步骤
每次更新都应遵循:
- 先缩到 1 个副本
- 在这个副本上应用新镜像,并允许它执行迁移
- 等待 Pod 完全 ready
- 再扩回目标副本数,并关闭其余副本的迁移能力
否则存在并发迁移损坏数据库的风险。
关键考虑点
| 考虑项 | 说明 |
|---|---|
| 存储 | 多 Pod 需 要 RWX 共享卷,或对象存储 |
| 密钥 | 使用 K8s Secrets,并可结合 External Secrets / Sealed Secrets |
| 数据库 | 生产环境优先使用托管 PostgreSQL |
| Redis | 大多数部署一个 Redis 就足够,除非 Redis 本身也要求高可用 |
| 网络 | 保持服务间低延迟,审计 NetworkPolicy |
更多内容可参考: