Quick Start
This guide walks through creating a RestoreTest, triggering an immediate run, and checking the result. Total time: approximately 5 minutes, assuming Kymaros is already installed and Velero has at least one backup available.
Step 1 — Confirm Velero Has Backups
velero backup get
You need at least one backup in a Completed state. Note the backup name — you will reference it in the RestoreTest. If you want Kymaros to always pick the most recent backup automatically, use the special value latest.
Step 2 — Create a RestoreTest
Save the following manifest to a file named my-first-test.yaml. Replace my-app with the name of a namespace that exists in the backup.
apiVersion: restore.kymaros.io/v1alpha1
kind: RestoreTest
metadata:
name: my-first-test
namespace: kymaros-system
spec:
backupSource:
provider: velero
backupName: latest
namespaces:
- name: my-app
schedule:
cron: "0 3 * * *"
sandbox:
namespacePrefix: rp-test
ttl: 30m
networkIsolation: strict
sla:
maxRTO: "15m"
Apply it:
kubectl apply -f my-first-test.yaml
Key fields explained:
| Field | Value | Meaning |
|---|---|---|
backupSource.backupName | latest | Always restore from the most recent completed backup |
schedule.cron | 0 3 * * * | Run at 03:00 UTC every night |
sandbox.namespacePrefix | rp-test | Sandbox namespace will be named rp-test-<run-id> |
sandbox.ttl | 30m | Sandbox is deleted 30 minutes after the run completes |
sandbox.networkIsolation | strict | Sandbox cannot initiate outbound connections to production namespaces |
sla.maxRTO | 15m | A restore taking longer than 15 minutes fails the RTO check |
Step 3 — Trigger an Immediate Run
The RestoreTest is scheduled for 03:00 UTC, but you can force an immediate run now with an annotation:
kubectl annotate restoretest my-first-test \
kymaros.io/trigger=now \
-n kymaros-system
The controller detects the annotation and starts a run within a few seconds.
Step 4 — Watch Progress
kubectl get restoretest my-first-test -n kymaros-system -w
The STATUS column progresses through these phases:
| Phase | Meaning |
|---|---|
Pending | Run queued, waiting to start |
Restoring | Velero restore in progress |
Validating | Health checks running in the sandbox |
Scoring | Confidence score being calculated |
Completed | Run finished — check the report |
Failed | Run encountered a fatal error before scoring |
A typical run for a small application takes 3–8 minutes.
To watch the sandbox namespace appear and the pods start:
kubectl get pods -n rp-test-<run-id> -w
The exact sandbox namespace name is shown in the RestoreTest status:
kubectl get restoretest my-first-test -n kymaros-system -o jsonpath='{.status.currentSandboxNamespace}'
Step 5 — Read the Report
Once the RestoreTest reaches Completed, a corresponding RestoreReport is written:
kubectl get restorereports -n kymaros-system
NAME SCORE RESULT AGE
my-first-test-20240115-0300 94 Pass 2m
Get the full report:
kubectl get restorereport my-first-test-20240115-0300 \
-n kymaros-system \
-o yaml
See Your First Report for a complete explanation of every field in the report output.
Next Steps
- Your First Report — understand the score breakdown and validation levels
- Dashboard Access — view the same report in the web UI