feat(kro-rgds): BackupPolicy RGD with gold/silver/bronze tiers - #633
feat(kro-rgds): BackupPolicy RGD with gold/silver/bronze tiers#633allamand wants to merge 6 commits into
Conversation
Introduces a kro ResourceGroupDefinition that expands into an ACK-managed AWS Backup stack (BackupVault + BackupPlan + BackupSelection) parameterized by tier: - gold: RPO 1h, retention 30j, cross-region copy, cold storage 90j - silver: RPO 24h, retention 14j, cross-region copy - bronze: RPO 24h, retention 7j, same-region only Selection matches resources by tag (peeks.io/backup-tier + peeks.io/spoke), so platform teams declare 3 policies per spoke and developers opt in via namespace label. Part of PeEKS DR Pattern B (GitOps control plane + AWS Backup data plane). ADR: https://github.com/allamand/peeks-veille/blob/main/blogs/analyses/adr-peeks-dr-pattern-b.md
|
Scope expanded → PeEKS DR kit (in-progress, draft) This PR is moving from a standalone What's added to the scope:
Why a single PR: reviewers get the full Pattern B story in one place. The Keeping this draft until the RestoreSelection approach is validated on the hub cluster and the AWS-Backup-for-EKS investigation informs the Postgres pattern. The existing |
…up-tier tags Extends the chart to support arbitrary AWS tag propagation on EBS volumes via the new per-SC 'tags:' map (rendered as 'tagSpecification_<N>' params on the EBS CSI driver). Adds three tier-labeled StorageClasses — 'peeks-gold-gp3', 'peeks-silver-gp3', 'peeks-bronze-gp3' — so workloads opt into a backup tier by picking the right SC in their PVC manifest. The tier tag is what BackupSelection (from BackupPolicy RGD) matches on — no central ConfigMap, no platform ticket. A top-level 'spokeName' value is merged into every EBS SC as 'peeks.io/spoke=<spokeName>' so cross-tenant selection works at scale. Legacy 'ebs-sc-gp3' preserved (backward compat).
Backup protection is decided at the cluster/namespace level by the AWS Backup for EKS resource selection (cluster ARN + namespace filter), not at the StorageClass level. Drop the per-tier SCs (gold/silver/bronze) to keep the StorageClass concern purely about performance. Tier semantics (RPO, retention, cross-region) now live exclusively on the BackupPolicy RGD, not on the SC.
Port from PR aws-samples#633 (feat/peeks-backup-policy-rgd) to the new structure introduced by PR aws-samples#642 (feature/platform-cluster-kro-ack). The RGD provisions BackupVault + BackupPlan + BackupSelection per tier via ACK backup-controller. Tier semantics live on the BackupPolicy CR, not on the StorageClass — backup selection happens at cluster/namespace level via tag matching (peeks.io/backup-tier + peeks.io/spoke). - gold: RPO 1h, retention 30d, cold 90d, cross-region copy - silver: RPO 24h, retention 14d, cross-region copy - bronze: RPO 24h, retention 7d, same-region only
Port the storageclass-resources chart from PR aws-samples#633 into the new platform-manifests-bootstrap chart from PR aws-samples#642 — single bootstrap chart for early cluster resources (NodePools, ClusterSecretStore, StorageClasses). - New template peeks-storageclass.yaml renders ebs/efs SCs from values - New values.yaml with defaults (gpu/customNodepools/storageClasses) - peeks-gp3: single PeEKS default SC, tier semantics live on BackupPolicy - Volume tags propagated via tagSpecification_N parameters for AWS Backup selection (peeks.io/spoke, peeks.io/managed-by) - README-storageclasses.md preserves design notes from the standalone chart
…-backup-policy-rgd-on-pr642 This branch was forked from main and is 99 commits behind feature/platform-cluster-kro-ack. The BackupPolicy RGD has been re-homed onto a branch that targets PR aws-samples#642 directly. Add a banner so anyone landing here is redirected to the active branch.
Summary
Introduces a kro
ResourceGraphDefinition(BackupPolicy) that expands into an ACK-managed AWS Backup stack (BackupVault + BackupPlan + BackupSelection), parameterized by backup tier.Enables AWS Backup as the data-plane source of truth alongside GitOps for control plane — used for cross-region DR, blue/green cluster migrations, and environment cloning (all three share the same BackupPlan/BackupSelection primitive).
Tiers
Design
SpokeClusterRGD in a follow-uppeeks.io/backup-tier=<tier>— BackupSelection matches via propagated EBS volume tagskubectl get ns -l peeks.io/backup-tier=<tier>What this RGD does NOT cover (documented explicitly in README)
RestoreSelectionRGD (future PR)Validation
kubectl apply --dry-run=serverpassesinstance-bronze.yamlexpands into BackupVault + BackupPlan + BackupSelectionFiles
rgd-backup-policy.yaml— the ResourceGraphDefinitionexamples/instance-{gold,silver,bronze}.yaml— per-tier example instancesREADME.md— use cases (DR, blue/green, cloning), tiers, developer contract, boundaries