CRD 模型
Testudo 使用 CRD 作为控制面契约。所有用户意图、执行过程和观测状态都尽量落在 Kubernetes API 中,而不是只保存在 Server 内存或数据库。
分层模型
配置类资源
Cluster:远端集群访问配置和健康状态。StorageRepository:对象存储和 BSL 配置。DisasterPolicy/DisasterConfig:策略与兼容配置。
保护类资源
DisasterInstance:核心保护对象。DisasterGroup:多实例编排对象。
同步类资源
DataSync:PVC 数据同步。ResourceSync:Kubernetes 资源同步。AppBackup:Velero Backup 封装。AppRestore:Velero Restore 封装。
操作类资源
DisasterOperation:所有长流程操作的统一载体。DisasterDrill:演练的用户入口和状态视图。
观测类资源
BackupRestoreStatistics:备份、恢复、操作和实例统计。- Kubernetes Event:全局事件、资源事件和历史记录来源。
核心关系
一个 DisasterInstance 会派生或引用:
- 一个
DataSync。 - 一个
ResourceSync。 - 多个
AppBackup和AppRestore历史对象。 - 多个
DisasterOperation。 - 可选的
DisasterDrill。 - 可选的
DisasterGroup归属关系。
状态设计
CRD status 通常包含:
- 当前 state 或 fsmState。
- reason 和 message。
- 当前步骤 currentStep。
- steps 明细。
- 最近 backup/restore 名称。
- history。
- conditions。
这种设计让 Server、控制台、CLI 和排障脚本都可以从 Kubernetes API 读取同一份事实。