npx skills add ...
npx skills add google/skills --skill gke-backup-dr
Configures Backup for GKE: the BackupRestore cluster addon, BackupPlan and RestorePlan resources, restore workflows, and CMEK-encrypted backups. Use for backup policies, disaster recovery, or GKE cluster restores. Don't use for database backups.
npx skills add google/skills --skill gke-backup-dr
Protects stateful GKE workloads using Backup for GKE. Backup for GKE can capture both Kubernetes resource metadata (manifests, configurations, and secrets) and the underlying persistent volume (PV) data — but volume data and secrets are only captured when the backup plan explicitly enables them (see the flags below).
[!WARNING]
--include-volume-dataand--include-secretsBOTH DEFAULT TO FALSE. If you omit them, the backup plan silently produces config-only backups with no persistent volume snapshots and no Secrets. Always pass both flags explicitly when the goal is full workload protection.
Notes:
backup-restore command group requires the gcloud beta component
(gcloud components install beta).--cluster requires the full resource path
projects/{project_id}/locations/{location}/clusters/{cluster_name} (or
projects/{project_id}/zones/{zone}/clusters/{cluster_name} for zonal
clusters), not a bare cluster name.--all-namespaces, --selected-namespaces={ns1},{ns2},
--excluded-namespaces=..., --selected-applications=..., or
--no-namespaces.A restore writes into a live cluster and, depending on the conflict policy, can overwrite or delete existing resources:
--cluster-resource-conflict-policy=use-existing-version keeps existing
cluster-scoped resources (safe default); use-backup-version deletes
the existing version first — deleting a CRD deletes all of its CRs.--namespaced-resource-restore-mode=fail-on-conflict aborts on any conflict
(safe default); merge-skip-on-conflict skips conflicting resources;
merge-replace-on-conflict and merge-replace-volume-on-conflict
overwrite existing resources or volumes; delete-and-restore deletes
entire conflicting namespaces (and all resources in them) before
restoring.Rules:
use-existing-version + fail-on-conflict)
unless the user explicitly needs to revert live resources.--encryption-key=projects/{project_id}/locations/{location}/keyRings/{ring}/cryptoKeys/{key}.--selected-namespaces={ns1},{ns2} (instead of
--all-namespaces).The recommended production golden path configuration for Backup for GKE:
--update-addons=BackupRestore=ENABLED).--include-volume-data explicitly passed (enabled,
since the service default is false).--include-secrets explicitly passed (enabled, since
the service default is false).--backup-retain-days=30).--encryption-key=...).kube-system are excluded). Existing committed use discount
(CUD) holders keep pod-based management pricing until their commitment ends;
everyone else moves to the new model. See
https://cloud.google.com/products/backup-for-gke/pricing-changes.--target-rpo-minutes={minutes} instead of
--cron-schedule when creating the backup plan (optionally with RPO
exclusion windows via --exclusion-windows-file).[!IMPORTANT] Slow Operations: Enabling the BackupRestore addon (
--update-addons=BackupRestore=ENABLED) triggers a slow Google Cloud control plane cluster update that takes several minutes. * Rule: Do not run a terminal loop waiting for the GKE Backup addon to become active. * Action: Provide the command to enable the addon, explain that the operation will proceed in the background, and immediately proceed to write the backup plan configs. Do not block.