什么是 Testudo(玄龟阵)
Testudo 是一个面向 Kubernetes 的应用级容灾编排项目。它把“保护一个应用”“同步数据与资源”“执行故障切换”“做容灾演练”这些动作建模为 Kubernetes CRD,并由 operator 持续调谐到期望状态。
传统 Velero 更偏向备份与恢复工具;Testudo 在 Velero 之上增加了更高层的业务状态机、跨集群角色关系、同步历史、故障切换编排、演练与 API 聚合。用户不需要直接拼装多个 Velero Backup、Restore、Schedule,而是声明一个 DisasterInstance,让控制面创建和维护相关同步链路。
解决的问题
- 保护 Kubernetes 命名空间内的应用资源和 PVC 数据。
- 在源集群和目标集群之间保持可恢复的备份与 standby 资源。
- 在故障时按步骤执行 failover,避免源端与目标端同时对外服务。
- 在切换后通过 reprotect 建立反向保护关系。
- 在不影响生产源集群的前提下执行 DisasterDrill。
- 用 REST API、Watch 流、事件和统计接口支撑控制台与自动化系统。
典型场景
- 同城或异地两个 Kubernetes 集群之间做应用级灾备。
- 需要定期同步应用配置、工作负载、服务、Ingress、PVC 数据。
- 需要将多个应用按依赖层级统一故障切换。
- 需要周期性验证备份是否真的可以恢复。
- 需要通过 API 把容灾能力集成到平台控制台。
非目标
- 不替代底层存储阵列复制或数据库原生复制。
- 不直接承担业务流量调度、DNS 切换或全局负载均衡。
- 不假设所有工作负载都能无状态切换;状态一致性仍需结合应用自身能力设计。
- 不把 Velero 隐藏为黑盒;项目仍依赖 Velero 的备份恢复能力和兼容性边界。
两个仓库的关系
disaster-operator:定义 CRD 和控制器,是状态机和执行层。disaster-server:提供 REST API、Watch 流、认证、DTO 聚合、统计和 OpenAPI,是用户和控制台入口。