跳到主要内容

什么是 Testudo(玄龟阵)

Testudo 是一个面向 Kubernetes 的应用级容灾编排项目。它把“保护一个应用”“同步数据与资源”“执行故障切换”“做容灾演练”这些动作建模为 Kubernetes CRD,并由 operator 持续调谐到期望状态。

传统 Velero 更偏向备份与恢复工具;Testudo 在 Velero 之上增加了更高层的业务状态机、跨集群角色关系、同步历史、故障切换编排、演练与 API 聚合。用户不需要直接拼装多个 Velero BackupRestoreSchedule,而是声明一个 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,是用户和控制台入口。

建议新用户先阅读 系统架构,再按 安装 完成第一个容灾实例。