Home / Azure

AzureHow-toAdvanced

AKS disaster recovery: backup, restore and a second region

Recover AKS workloads after a cluster failure or region outage using GitOps for configuration, AKS Backup for persistent volumes and a warm or cold standby cluster in a second region.

Deepak Bhardwaj2 min read

Applies toAzure Kubernetes Service, AKS Backup (Azure Backup), Flux/Argo CD, Azure Container Registry

What has to come back

Item Source of truth for DR
Cluster itself IaC (Bicep/Terraform)
Kubernetes manifests, Helm releases Git (GitOps with Flux or Argo CD)
Container images ACR with geo-replication to the DR region
Secrets Key Vault (via CSI driver), replicated or recreated in DR
Persistent volumes AKS Backup or app-level replication
External data (SQL, Storage) Their own DR (failover groups, GZRS)

1. GitOps first

If a cluster can be rebuilt from Git in 20 minutes, most "DR" is just running the pipeline. Check nothing is applied by hand:

kubectl get deploy -A -o json | jq -r '.items[] | select(.metadata.labels["kustomize.toolkit.fluxcd.io/name"] == null) | "\(.metadata.namespace)/\(.metadata.name)"'

(The label depends on your GitOps tool; the idea is to find resources not managed by it.)

2. ACR geo-replication

az acr replication create -r acrprodcin -l southindia

Requires the Premium SKU. Images pushed once are available in both regions.

3. AKS Backup for stateful workloads

AKS Backup (an Azure Backup feature with a cluster extension) protects namespaces and persistent volumes (Azure Disk CSI snapshots) and can restore to the same or another cluster.

  • Install the backup extension and trusted access between the vault and the cluster.
  • Backup policy: for example every 4 hours, retained 7 days, with vault-tier copies for longer retention and cross-region restore where supported.
  • Restore test: restore a namespace into a test namespace or cluster quarterly.

Velero with blob storage is the open-source alternative and works the same way conceptually.

4. Choose a DR pattern

Pattern RTO Cost
Cold: rebuild cluster in DR region from IaC + GitOps + restore volumes Hours Lowest
Warm: small DR cluster always running, synced by GitOps, scale up on failover 30–60 min Medium
Active-active: two clusters serving traffic behind Front Door Minutes Highest; needs multi-region data design

5. Failover runbook (warm standby)

  1. Confirm data services failed over (SQL failover group, storage).
  2. Scale DR node pools: az aks nodepool scale -g rg-aks-sin --cluster-name aks-dr-sin -n apps --node-count 6.
  3. Point GitOps DR overlay to production replicas/config.
  4. Restore persistent volumes if needed.
  5. Switch Front Door origin priority (or DNS) to the DR ingress.
  6. Smoke test and announce.

Tip

The hardest part of AKS DR is usually stateful data inside the cluster. Moving databases and queues to managed services with their own geo-replication makes cluster DR much simpler.