SkillFlaw 在 Kubernetes 上的生产最佳实践
本指南说明在 Kubernetes 上更安全、更稳定地运行 SkillFlaw 的生产运维实践。
选择与真实场景匹配的最小拓扑
部署拓扑应以实际所需的服务能力为依据,而不是以仓库中是否提供镜像为依据。
请有意识地在以下模式中做选择:
- API 优先生产:backend + PostgreSQL + Redis
- 完整 Web 生产:backend + frontend + PostgreSQL + Redis
- 公开文档:只有在确实需要时,才额外增加 docs 服务
把拓扑定义得清楚,扩缩容、安全审查与故障处理都会容易得多。
扩容前先把状态外置
只有当状态不再绑定在单个 Pod 本地时,水平扩容才会真正可靠。
在提高后端(backend)副本数前,请确认以下条件都成立:
SKILLFLAW_DATABASE_URL指向真实可用的 PostgreSQL 服务SKILLFLAW_CACHE_TYPE=redis背后是可达的 Redis 部署SKILLFLAW_CONFIG_DIR已挂载到持久化存储SKILLFLAW_SECRET_KEY_FILE已通过 Secret 支持的文件方式挂载
其中任何一项仍然是 Pod 本地状态,都应先修复再扩容。
后端与前端分开扩缩容
后端(backend)与前端(frontend)的扩缩容行为完全不同。
后端(backend)
后端承担了流程执行、API 流量,以及大部分运维风险。
扩容后端时应依据:
- 请求并发量
- 流程复杂度
- 文件上传或大负载请求压力
- 高峰期排队或延迟情况
建议先设置明确的资源 requests,观察真实负载,再决定是否增加副本或 CPU / 内存。
前端(frontend)
前端是无状态服务,通常扩容成本更低。
它主要因以下场景扩容:
- 并发浏览器用户增多
- 高峰期页面加载变慢
- 希望与 backend 的发布节奏解耦
除非你已经测量出真实需求,否则不要把前端副本数和后端副本数强行绑定。
把 PostgreSQL 当作一等生产依赖
在 SkillFlaw 的生产环境里,PostgreSQL 不是附属件,而是运行契约的核心部分。
建议至少做到:
- 持久化存储
- 备份与恢复流程
- 可控的 schema 迁移方式
- 连接监控与告警
- 如果你运行高可用 PostgreSQL,要有明确的故障切换方案
如果你准备运行多个后端副本,数据库与存储策略必须先支撑这种形态。