Skip to main content

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:

FieldValueMeaning
backupSource.backupNamelatestAlways restore from the most recent completed backup
schedule.cron0 3 * * *Run at 03:00 UTC every night
sandbox.namespacePrefixrp-testSandbox namespace will be named rp-test-<run-id>
sandbox.ttl30mSandbox is deleted 30 minutes after the run completes
sandbox.networkIsolationstrictSandbox cannot initiate outbound connections to production namespaces
sla.maxRTO15mA 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:

PhaseMeaning
PendingRun queued, waiting to start
RestoringVelero restore in progress
ValidatingHealth checks running in the sandbox
ScoringConfidence score being calculated
CompletedRun finished — check the report
FailedRun 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