跳到主要内容

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
  • 多个 AppBackupAppRestore 历史对象。
  • 多个 DisasterOperation
  • 可选的 DisasterDrill
  • 可选的 DisasterGroup 归属关系。

状态设计

CRD status 通常包含:

  • 当前 state 或 fsmState。
  • reason 和 message。
  • 当前步骤 currentStep。
  • steps 明细。
  • 最近 backup/restore 名称。
  • history。
  • conditions。

这种设计让 Server、控制台、CLI 和排障脚本都可以从 Kubernetes API 读取同一份事实。