严苛 CI/CD · 零停机升级 · 模块化安全治理
本项目是 Chatwoot Helm Chart 的 v3.4 深度进化版本。我们摒弃了传统 Chart 的臃肿,实现了高度抽象与自动化。
为了兼顾“极简”与“可维护性”,我们将应用解构为以下四个核心维度:
base.yaml(基础单元):管理 Secret 环境变量与 ServiceAccount 身份。web.yaml(应用单元):将 Web Deployment 与其访问 Service 垂直整合,确保组件自治。worker.yaml(任务单元):独立的 Sidekiq 异步处理单元,支持独立扩缩容。policy.yaml(治理网格):一站式管控 HPA 弹性、PDB 鲁棒性与 NetworkPolicy 零信任安全。
我们将“安全”贯穿于 Chart 设计的每一行:
- 原子化升级:建议使用
helm upgrade --atomic。我们在strategy中强制设置了maxUnavailable: 0,确保新 Pod 就绪前旧 Pod 不会下线。 - 优雅停机:设置了
terminationGracePeriodSeconds: 60,给 Rails 和 Sidekiq 充足的时间处理残留请求或任务。 - 动态就绪检测:精细化配置了
liveness和readiness探针,通过failureThreshold缓冲启动抖动。 - 分阶段迁移:数据库迁移任务具备独立的
nslookup检查,确保基础设施完全就绪后再执行 DDL。
global.mode(环境双态):一键切换production(高可用)与lite(轻量级)模式。- 智能存储引擎:通过
values.yaml中的对象化配置,自动生成 S3/GCS 等存储环境。 - 自动资源优化:内嵌 VPA (Vertical Pod Autoscaler) 支持,让应用具备“新陈代谢”般的自愈能力。
- 终极严密测试 (v3.8):构建了覆盖“边界值测试、存储推导、资源配额稳定性、多主机流量治理”的全方位测试矩阵,单元测试量提升 300%。
- 严苛 CI/CD (v3.6):集成合一的
Lint -> Test -> Release流水线,任何单元测试失败都将强制中止发布,确保生产环境 100% 可用。 - 持续版本管理:流转自动执行版本号语义化自增,无需手动干预。
# 智能部署
helm upgrade chatwoot ./charts/chatwoot \
--install --wait --atomic \
--set global.mode=production基于 MIT 协议分发。详见 LICENSE。