Deploy k8up backup operator (platform, k8up-system) #363

Merged
benvin merged 1 commits from benvin/k8up-operator into main 2026-08-14 00:29:16 +10:00
Member

The k8up CRDs already exist in the cluster (owned by a separate k8up-crds Helm release) but the k8up operator itself was never deployed, so no k8up backup/restore custom resources are reconciled. This installs the operator following the cnpg-system pattern (Helm inflated via kustomize helmCharts) in the platform ArgoCD project, namespace k8up-system.

  • Add apps/base/k8up-system/ (Namespace + kustomization).
  • Add apps/overlays/au-syd1/k8up-system/ inflating the k8up chart 4.10.0 (pinned) from the artifactapi virtual-helm proxy: replicaCount: 2 (leader election with hot-standby follower), operator resource requests/limits (20m/128Mi req, 500m/256Mi lim), and ServiceMonitor/PrometheusRule disabled (require Prometheus Operator CRDs).
  • Add a PodDisruptionBudget (minAvailable: 1) in the overlay, since the k8up chart exposes no native PDB value.
  • Register apps/overlays/*/k8up-system in the platform ApplicationSet.

CRD management: The k8up chart ships its CRDs via the Helm crds/ directory (there is no installCRDs/skipCrds/enableCRDCreation value). The kustomize helm inflator does not emit crds/, so kustomize build renders only the operator (Deployment, RBAC, SA, Service) and no CRDs. ArgoCD therefore does not fight the existing k8up-crds Helm release over CRD ownership.

platform.yaml (AppProject): no change needed. The virtual-helm sourceRepo, the *-system destination, and the ClusterRole/ClusterRoleBinding/CRD/webhook clusterResourceWhitelist entries are already present and cover everything this app renders.

Validation: kustomize build --enable-helm apps/overlays/au-syd1/k8up-system succeeds (Deployment replicas 2, PDB, Namespace, RBAC; 0 CRDs). make kubeconform reports k8up-system 14/14 valid; the only failure is the pre-existing, unrelated cattle-system rancher chart kubeVersion issue. pre-commit passes.

The k8up CRDs already exist in the cluster (owned by a separate `k8up-crds` Helm release) but the k8up operator itself was never deployed, so no k8up backup/restore custom resources are reconciled. This installs the operator following the cnpg-system pattern (Helm inflated via kustomize `helmCharts`) in the `platform` ArgoCD project, namespace `k8up-system`. - Add `apps/base/k8up-system/` (Namespace + kustomization). - Add `apps/overlays/au-syd1/k8up-system/` inflating the **k8up chart `4.10.0`** (pinned) from the artifactapi virtual-helm proxy: `replicaCount: 2` (leader election with hot-standby follower), operator resource requests/limits (20m/128Mi req, 500m/256Mi lim), and ServiceMonitor/PrometheusRule disabled (require Prometheus Operator CRDs). - Add a `PodDisruptionBudget` (`minAvailable: 1`) in the overlay, since the k8up chart exposes no native PDB value. - Register `apps/overlays/*/k8up-system` in the platform ApplicationSet. **CRD management:** The k8up chart ships its CRDs via the Helm `crds/` directory (there is no `installCRDs`/`skipCrds`/`enableCRDCreation` value). The kustomize helm inflator does not emit `crds/`, so `kustomize build` renders only the operator (Deployment, RBAC, SA, Service) and no CRDs. ArgoCD therefore does not fight the existing `k8up-crds` Helm release over CRD ownership. **platform.yaml (AppProject):** no change needed. The virtual-helm sourceRepo, the `*-system` destination, and the ClusterRole/ClusterRoleBinding/CRD/webhook clusterResourceWhitelist entries are already present and cover everything this app renders. **Validation:** `kustomize build --enable-helm apps/overlays/au-syd1/k8up-system` succeeds (Deployment replicas 2, PDB, Namespace, RBAC; 0 CRDs). `make kubeconform` reports k8up-system 14/14 valid; the only failure is the pre-existing, unrelated `cattle-system` rancher chart kubeVersion issue. pre-commit passes.
unkin-agent added 1 commit 2026-08-14 00:05:04 +10:00
Deploy k8up backup operator in platform ArgoCD project
ci/woodpecker/pr/vector-test Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/kubeconform Pipeline was successful
d2ee72823d
The k8up CRDs already exist in the cluster (managed by a separate k8up-crds
Helm release) but the operator itself was never deployed. Install it following
the cnpg-system pattern so k8up backup/restore custom resources are actually
reconciled.

- Add apps/base/k8up-system Namespace + kustomization
- Add au-syd1 overlay inflating the k8up chart 4.10.0 from the artifactapi
  virtual-helm proxy (replicaCount 2 with leader election, PDB minAvailable 1,
  sane operator resource requests/limits, ServiceMonitor/PrometheusRule off)
- Do not emit the chart CRDs: they live in the chart crds/ directory which the
  kustomize helm inflator skips, leaving CRD ownership with the existing
  k8up-crds Helm release so ArgoCD does not fight over them
- Register apps/overlays/*/k8up-system in the platform ApplicationSet
benvin merged commit dc02b3eebd into main 2026-08-14 00:29:16 +10:00
benvin deleted branch benvin/k8up-operator 2026-08-14 00:29:16 +10:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: unkin/argocd-apps#363