Use override restore only when the cluster is locked after a failed upgrade.
This runbook exists for the narrow case where the normal restore path is blocked by an existing cluster operation lock, usually after a failed rollback or another crashed automation loop. It is a break-glass restore path, not the default way to restore a cluster.
This path ignores the current lock owner, overwrites cluster state with the selected snapshot, and is meant for disaster recovery under operator supervision. Do not use it when the normal restore workflow is still available.
Decision matrix
Know what this override changes
| Field | What it does | Why it matters |
|---|---|---|
force: true | Allows restore to proceed on an unhealthy cluster. | You are explicitly acknowledging that normal safety checks are being relaxed for recovery. |
overrideOperationLock: true | Clears the existing cluster operation lock so restore can proceed. | This is what makes the workflow break-glass instead of routine restore. |
spec.breakGlassAck on OpenBaoCluster | May still be required later if the cluster remains in break-glass mode after restore. | The restore override is separate from the cluster break-glass acknowledgment flow. |
Create the break-glass restore request
Configure
Force restore past an existing operation lock
apiVersion: openbao.org/v1alpha1
kind: OpenBaoRestore
metadata:
name: emergency-restore-001
namespace: security
spec:
cluster: prod-cluster
source:
target:
provider: s3
endpoint: https://s3.amazonaws.com
bucket: openbao-backups
region: us-east-1
credentialsSecretRef:
name: s3-credentials
key: clusters/prod/last-good-snapshot.snap
jwtAuthRole: openbao-operator-restore
force: true
overrideOperationLock: true
force is required when restore targets an unhealthy cluster. overrideOperationLock is what bypasses the stuck upgrade or backup lock. Keep them together only for this break-glass path.
Apply
Apply the override restore
kubectl apply -f emergency-restore.yaml
Verify the restore and plan the follow-up
Verify
Inspect restore and cluster state
kubectl get openbaorestore <name> -n <namespace> -o yaml
kubectl describe openbaocluster <cluster> -n <namespace>
kubectl get jobs -n <namespace>
A completed restore only means the restore workflow finished. The target cluster may still require unseal, Raft repair, or break-glass acknowledgment before it is truly operational again.
Finish the recovery
This version tracks a prerelease build. Features and behavior may change before the next stable release.
Was this page helpful?
Use Needs work to open a structured GitHub issue for this page. The Yes button only acknowledges the signal locally.