Skip to main content

FAQ

Testudo uses Velero for backup and restore, but users do not need to manually orchestrate multiple Velero Backup, Restore, and Schedule resources. Users declare CRDs such as DisasterInstance, DataSync, ResourceSync, and DisasterOperation; the operator creates and observes Velero resources.

Does Failover Switch DNS Or Global Traffic Automatically?

No. Testudo orchestrates Kubernetes application-level disaster recovery. It does not replace DNS, gateway, Ingress, GSLB, or business traffic routing. After failover, switch external traffic according to your runbook.

Is Active A Failure State?

No. After successful failover, the instance usually becomes Active. In the current console this is shown as unprotected. It means the application is running in the target cluster, but reverse protection has not been established yet. After confirming takeover, run Reverse protection.

Why Does Final Sync Time Out?

Final sync duration depends on data size, object storage throughput, Velero status, and network. If FinalSync exceeds the operation timeout, the operator records the failure and compensates when available. For production failover, set a timeout that fits real data volume or use the latest successful sync point if the runbook allows it.

Does The Target Cluster Need The Application Installed First?

Usually no full application installation is required, but runtime dependencies must exist: StorageClasses, IngressClasses, image pull Secrets, required CRDs, networking, and object storage access. ResourceSync restores application resources in standby form.

Can I Use Backup/Restore Without Disaster Recovery?

Yes. AppBackup and AppRestore can be used for application backup and restore without creating a DisasterInstance.

Which Kubernetes And Velero Versions Are Supported?

The current code depends on Kubernetes v0.34.x clients and Velero v1.17.0 Go modules. Actual support should follow the Compatibility Matrix and release validation.

What If The Console Cannot Open After Installation?

Start with:

kubectl -n disaster-system get pods,svc
curl -I http://<NodeIP>:30087
kubectl -n disaster-system port-forward svc/disaster-web 8087:80

See Install Troubleshooting.

Why Does The API Return 401?

Business APIs require JWT in production. Use /login to get a token, then call APIs with Authorization: Bearer <accessToken>. See API Authentication.

How Do I Report Security Issues?

Report vulnerabilities through GitHub Security Advisories. Do not disclose suspected vulnerabilities in public issues. See Security Overview.