Skip to content

refactor(rook-ceph): migrate namespace to apps/base + apps/main layout - #1434

Merged
Aviator-Coding merged 2 commits into
mainfrom
fm/homeops-split-ns-lane1-s6
Aug 25, 2026
Merged

refactor(rook-ceph): migrate namespace to apps/base + apps/main layout#1434
Aviator-Coding merged 2 commits into
mainfrom
fm/homeops-split-ns-lane1-s6

Conversation

@Aviator-Coding

Copy link
Copy Markdown
Owner

Intent

Lane 1 of the home-ops namespace-move split, stage S6: move the rook-ceph namespace from the flat kubernetes/apps/rook-ceph layout into the apps/base + apps/main overlay shape the S2-S5 stages established (S4 default and S5 system-controller+system-upgrade+coder are already merged and confirmed live-converged). Ran migrate-ns.py main rook-ceph in a worktree rebased onto current origin/main. Pure mechanical rename: rook-ceph's operator and cluster manifests move to kubernetes/apps/base/rook-ceph/rook-ceph/{operator,cluster}/..., the two-document ks.yaml (rook-ceph operator Kustomization + rook-ceph-cluster Kustomization) becomes the overlay file kubernetes/apps/main/rook-ceph/rook-ceph.yaml with spec.path rewritten from ./kubernetes/apps/rook-ceph/rook-ceph/{operator,cluster} to ./kubernetes/apps/base/rook-ceph/rook-ceph/{operator,cluster}, and kustomization.yaml component paths deepened by one level. Critical invariant explicitly preserved: BOTH Kustomizations keep prune: false exactly as before (verified by grep before and after the move, both show 'prune: false # Never delete this' unchanged) - these must never be pruned since rook-ceph owns the cluster's Ceph storage. Verified locally before commit: flux-local build of kubernetes/clusters/main before/after produced identical leaf docs after canon/split normalization (1880 docs, leaf=1764 ks=116 both sides, empty diff) and empty diff on the normalised-Kustomization comparison; flux-local test --all-namespaces passed 118/118 both before and after. Do not add scope beyond this exact one-namespace move, and do not touch prune settings.

What Changed

  • Moved rook-ceph manifests from flat kubernetes/apps/rook-ceph into kubernetes/apps/base/rook-ceph (operator, cluster, backup) with Flux overlay CRs at kubernetes/apps/main/rook-ceph
  • Rewrote the operator and cluster Kustomization spec.path values to ./kubernetes/apps/base/rook-ceph/rook-ceph/{operator,cluster} and deepened component includes one level; both Kustomizations keep prune: false
  • Pointed live apps/main at ./rook-ceph, dropped the inert flat apps/kustomization.yaml entry, and updated docs/AGENTS.md paths for the migrated layout

Risk Assessment

✅ Low: Pure mechanical rook-ceph base/main migration: Flux object identity and prune:false are preserved, only spec.path and overlay wiring change, and follow-up path rewrites were limited to references broken by the move.

Testing

Exercised the live Flux entrypoint build/test path and direct kustomize consumers for the moved rook-ceph trees; before/after rendered leaf manifests match, only intentional base path rewrites appear on the two storage Kustomizations with prune remaining false, and layout/scope invariants hold.

Evidence: Final validation evidence transcript
Lane1 S6 rook-ceph namespace move — local validation evidence
============================================================

1) flux-local build ks -A --path kubernetes/clusters/main
   before (5339c29d): before-raw.yaml
   after  (60f9c100): after-raw.yaml
   Canon/split compare (compare-summary.txt / compare-report.json):
docs before/after: 1001/1001
leaf before/after: 885/885
ks   before/after: 116/116
leaf identical: True
ks identical after path-norm: True
ks raw changed count: 2
  KS rook-ceph ns=rook-ceph: path ./kubernetes/apps/rook-ceph/rook-ceph/operator -> ./kubernetes/apps/base/rook-ceph/rook-ceph/operator; prune False -> False
  KS rook-ceph-cluster ns=rook-ceph: path ./kubernetes/apps/rook-ceph/rook-ceph/cluster -> ./kubernetes/apps/base/rook-ceph/rook-ceph/cluster; prune False -> False
rook ks before: [{"name": "rook-ceph", "namespace": "rook-ceph", "path": "./kubernetes/apps/rook-ceph/rook-ceph/operator", "prune": false}, {"name": "rook-ceph-cluster", "namespace": "rook-ceph", "path": "./kubernetes/apps/rook-ceph/rook-ceph/cluster", "prune": false}]
rook ks after:  [{"name": "rook-ceph", "namespace": "rook-ceph", "path": "./kubernetes/apps/base/rook-ceph/rook-ceph/operator", "prune": false}, {"name": "rook-ceph-cluster", "namespace": "rook-ceph", "path": "./kubernetes/apps/base/rook-ceph/rook-ceph/cluster", "prune": false}]

2) flux-local test -A --path kubernetes/clusters/main --no-enable-helm
   Result: 118 passed (helm-enabled run failed only due to missing local helm binary; not a manifest defect)

3) kustomize build of moved paths
   operator: exit 0 (operator-build.yaml)
   cluster:  exit 0 (cluster-build.yaml)
   main overlay kubernetes/apps/main/rook-ceph: exit 0
   operator leaf docs identical before/after: see path-build-compare.json
   cluster  leaf docs identical before/after: see path-build-compare.json

4) Critical prune invariant (semantic parse of built overlay + source)
   rook-ceph         prune=false path=./kubernetes/apps/base/rook-ceph/rook-ceph/operator
   rook-ceph-cluster prune=false path=./kubernetes/apps/base/rook-ceph/rook-ceph/cluster
   Both Kustomizations keep prune: false exactly (False -> False in before/after cluster build).

5) Layout invariants (layout-invariants.json)
   - flat kubernetes/apps/rook-ceph removed
   - base + main overlay present
   - apps/main lists ./rook-ceph
   - components deepened to ../../../components/{common,alerts}
   - inert apps/kustomization no longer lists rook-ceph

6) Scope
   Diff limited to rook-ceph move + main/apps kustomization list rewires (path-build-compare.json scope_clean).
Evidence: Before/after flux-local build compare summary

docs before/after: 1001/1001 leaf before/after: 885/885 ks before/after: 116/116 leaf identical: True ks identical after path-norm: True ks raw changed count: 2 KS rook-ceph: path .../apps/rook-ceph/.../operator -> .../apps/base/rook-ceph/.../operator; prune False -> False KS rook-ceph-cluster: path .../apps/rook-ceph/.../cluster -> .../apps/base/rook-ceph/.../cluster; prune False -> False

docs before/after: 1001/1001
leaf before/after: 885/885
ks   before/after: 116/116
leaf identical: True
ks identical after path-norm: True
ks raw changed count: 2
  KS rook-ceph ns=rook-ceph: path ./kubernetes/apps/rook-ceph/rook-ceph/operator -> ./kubernetes/apps/base/rook-ceph/rook-ceph/operator; prune False -> False
  KS rook-ceph-cluster ns=rook-ceph: path ./kubernetes/apps/rook-ceph/rook-ceph/cluster -> ./kubernetes/apps/base/rook-ceph/rook-ceph/cluster; prune False -> False
rook ks before: [{"name": "rook-ceph", "namespace": "rook-ceph", "path": "./kubernetes/apps/rook-ceph/rook-ceph/operator", "prune": false}, {"name": "rook-ceph-cluster", "namespace": "rook-ceph", "path": "./kubernetes/apps/rook-ceph/rook-ceph/cluster", "prune": false}]
rook ks after:  [{"name": "rook-ceph", "namespace": "rook-ceph", "path": "./kubernetes/apps/base/rook-ceph/rook-ceph/operator", "prune": false}, {"name": "rook-ceph-cluster", "namespace": "rook-ceph", "path": "./kubernetes/apps/base/rook-ceph/rook-ceph/cluster", "prune": false}]
Evidence: flux-local test --no-enable-helm result

118 passed in 6.35s

============================= test session starts ==============================
collected 118 items

kubernetes/clusters/main ............................................... [ 39%]
.......................................................................  [100%]

============================= 118 passed in 6.35s ==============================
Evidence: Layout and prune invariants (JSON)
{
  "flat_rook_ceph_absent": true,
  "base_operator_exists": true,
  "base_cluster_exists": true,
  "main_overlay_exists": true,
  "ks_yaml_absent": true,
  "main_lists_./rook-ceph": true,
  "main_does_not_list_../rook-ceph": true,
  "inert_apps_no_rook": true,
  "components": [
    "../../../components/common",
    "../../../components/alerts"
  ],
  "components_deepened": true,
  "kustomizations": [
    {
      "name": "rook-ceph",
      "prune": false,
      "path": "./kubernetes/apps/base/rook-ceph/rook-ceph/operator"
    },
    {
      "name": "rook-ceph-cluster",
      "prune": false,
      "path": "./kubernetes/apps/base/rook-ceph/rook-ceph/cluster"
    }
  ],
  "both_prune_false": true,
  "paths_under_base": true,
  "overlay_built_ks_count": 2,
  "overlay_built_prunes": [
    [
      "rook-ceph",
      false,
      "./kubernetes/apps/base/rook-ceph/rook-ceph/operator"
    ],
    [
      "rook-ceph-cluster",
      false,
      "./kubernetes/apps/base/rook-ceph/rook-ceph/cluster"
    ]
  ],
  "operator_kinds": [
    [
      "ServiceAccount",
      "cephfs-ctrlplugin-sa"
    ],
    [
      "ServiceAccount",
      "cephfs-nodeplugin-sa"
    ],
    [
      "ServiceAccount",
      "rbd-ctrlplugin-sa"
    ],
    [
      "ServiceAccount",
      "rbd-nodeplugin-sa"
    ],
    [
      "Role",
      "ceph-csi-operator-cephfs-ctrlplugin-r"
    ],
    [
      "Role",
      "ceph-csi-operator-cephfs-nodeplugin-r"
    ],
    [
      "Role",
      "ceph-csi-operator-rbd-ctrlplugin-r"
    ],
    [
      "Role",
      "ceph-csi-operator-rbd-nodeplugin-r"
    ],
    [
      "ClusterRole",
      "ceph-csi-operator-cephfs-ctrlplugin-cr"
    ],
    [
      "ClusterRole",
      "ceph-csi-operator-cephfs-nodeplugin-cr"
    ],
    [
      "ClusterRole",
      "ceph-csi-operator-rbd-ctrlplugin-cr"
    ],
    [
      "ClusterRole",
      "ceph-csi-operator-rbd-nodeplugin-cr"
    ],
    [
      "RoleBinding",
      "ceph-csi-operator-cephfs-ctrlplugin-rb"
    ],
    [
      "RoleBinding",
      "ceph-csi-operator-cephfs-nodeplugin-rb"
    ],
    [
      "RoleBinding",
      "ceph-csi-operator-rbd-ctrlplugin-rb"
    ],
    [
      "RoleBinding",
      "ceph-csi-operator-rbd-nodeplugin-rb"
    ],
    [
      "ClusterRoleBinding",
      "ceph-csi-operator-cephfs-ctrlplugin-crb"
    ],
    [
      "ClusterRoleBinding",
      "ceph-csi-operator-cephfs-nodeplugin-crb"
    ],
    [
      "ClusterRoleBinding",
      "ceph-csi-operator-rbd-ctrlplugin-crb"
    ],
    [
      "ClusterRoleBinding",
      "ceph-csi-operator-rbd-nodeplugin-crb"
    ],
    [
      "HelmRelease",
      "rook-ceph"
    ],
    [
      "OCIRepository",
      "rook-ceph"
    ]
  ],
  "cluster_kinds_sample": [
    [
      "StorageClass",
      "ceph-filesystem-rwx"
    ],
    [
      "ServiceAccount",
      "rook-ceph-backup"
    ],
    [
      "Role",
      "rook-ceph-backup"
    ],
    [
      "RoleBinding",
      "rook-ceph-backup"
    ],
    [
      "PersistentVolumeClaim",
      "ceph-backup-pvc"
    ],
    [
      "CronJob",
      "rook-ceph-backup"
    ],
    [
      "CephFilesystemSubVolumeGroup",
      "ceph-filesystem-csi-rwx"
    ],
    [
      "HTTPRoute",
      "rook-ceph-s3"
    ],
    [
      "HelmRelease",
      "rook-ceph-cluster"
    ],
    [
      "PrometheusRule",
      "ceph-custom-alerts"
    ],
    [
      "VolumeSnapshotClass",
      "csi-ceph-blockpool"
    ],
    [
      "OCIRepository",
      "rook-ceph-cluster"
    ]
  ],
  "cluster_kinds_count": 12
}
Evidence: Operator/cluster path-build identity and scope check
{
  "path_builds": [
    {
      "label": "operator",
      "before_count": 22,
      "after_count": 22,
      "only_before": [],
      "only_after": [],
      "changed": [],
      "identical": true
    },
    {
      "label": "cluster",
      "before_count": 12,
      "after_count": 12,
      "only_before": [],
      "only_after": [],
      "changed": [],
      "identical": true
    },
    {
      "label": "overlay_ks",
      "before": [
        {
          "name": "rook-ceph",
          "prune": false,
          "path": "./kubernetes/apps/rook-ceph/rook-ceph/operator",
          "dependsOn": [
            {
              "name": "onepassword-store",
              "namespace": "security"
            }
          ],
          "healthChecks": null
        },
        {
          "name": "rook-ceph-cluster",
          "prune": false,
          "path": "./kubernetes/apps/rook-ceph/rook-ceph/cluster",
          "dependsOn": [
            {
              "name": "onepassword-store",
              "namespace": "security"
            }
          ],
          "healthChecks": [
            {
              "apiVersion": "helm.toolkit.fluxcd.io/v2",
              "kind": "HelmRelease",
              "name": "rook-ceph-cluster",
              "namespace": "rook-ceph"
            }
          ]
        }
      ],
      "after": [
        {
          "name": "rook-ceph",
          "prune": false,
          "path": "./kubernetes/apps/base/rook-ceph/rook-ceph/operator",
          "dependsOn": [
            {
              "name": "onepassword-store",
              "namespace": "security"
            }
          ],
          "healthChecks": null
        },
        {
          "name": "rook-ceph-cluster",
          "prune": false,
          "path": "./kubernetes/apps/base/rook-ceph/rook-ceph/cluster",
          "dependsOn": [
            {
              "name": "onepassword-store",
              "namespace": "security"
            }
          ],
          "healthChecks": [
            {
              "apiVersion": "helm.toolkit.fluxcd.io/v2",
              "kind": "HelmRelease",
              "name": "rook-ceph-cluster",
              "namespace": "rook-ceph"
            }
          ]
        }
      ]
    }
  ],
  "diff_files": [
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/Readme.md\tkubernetes/apps/base/rook-ceph/rook-ceph/Readme.md",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/backup/RECOVERY-PROCEDURES.md\tkubernetes/apps/base/rook-ceph/rook-ceph/backup/RECOVERY-PROCEDURES.md",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/backup/backup-system.yaml\tkubernetes/apps/base/rook-ceph/rook-ceph/backup/backup-system.yaml",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/backup/kustomization.yaml\tkubernetes/apps/base/rook-ceph/rook-ceph/backup/kustomization.yaml",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/cluster/cephfs-rwx-storageclass.yaml\tkubernetes/apps/base/rook-ceph/rook-ceph/cluster/cephfs-rwx-storageclass.yaml",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/cluster/cephfs-rwx-subvolumegroup.yaml\tkubernetes/apps/base/rook-ceph/rook-ceph/cluster/cephfs-rwx-subvolumegroup.yaml",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/cluster/helmrelease.yaml\tkubernetes/apps/base/rook-ceph/rook-ceph/cluster/helmrelease.yaml",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/cluster/httproute.yaml\tkubernetes/apps/base/rook-ceph/rook-ceph/cluster/httproute.yaml",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/cluster/kustomization.yaml\tkubernetes/apps/base/rook-ceph/rook-ceph/cluster/kustomization.yaml",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/cluster/ocirepository.yaml\tkubernetes/apps/base/rook-ceph/rook-ceph/cluster/ocirepository.yaml",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/cluster/prometheusrules.yaml\tkubernetes/apps/base/rook-ceph/rook-ceph/cluster/prometheusrules.yaml",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/cluster/volumesnapshotclass-patch.yaml\tkubernetes/apps/base/rook-ceph/rook-ceph/cluster/volumesnapshotclass-patch.yaml",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/operator/csi-driver-rbac.yaml\tkubernetes/apps/base/rook-ceph/rook-ceph/operator/csi-driver-rbac.yaml",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/operator/helmrelease.yaml\tkubernetes/apps/base/rook-ceph/rook-ceph/operator/helmrelease.yaml",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/operator/kustomization.yaml\tkubernetes/apps/base/rook-ceph/rook-ceph/operator/kustomization.yaml",
    "R100\tkubernetes/apps/rook-ceph/rook-ceph/operator/ocirepository.yaml\tkubernetes/apps/base/rook-ceph/rook-ceph/operator/ocirepository.yaml",
    "M\tkubernetes/apps/kustomization.yaml",
    "M\tkubernetes/apps/main/kustomization.yaml",
    "R069\tkubernetes/apps/rook-ceph/kustomization.yaml\tkubernetes/apps/main/rook-ceph/kustomization.yaml",
    "R092\tkubernetes/apps/rook-ceph/rook-ceph/ks.yaml\tkubernetes/apps/main/rook-ceph/rook-ceph.yaml"
  ],
  "non_rook_scope_files": [],
  "scope_clean": true,
  "operator_identical": true,
  "cluster_identical": true
}
Evidence: Built main rook-ceph overlay (Flux Kustomizations)
apiVersion: v1
kind: Namespace
metadata:
  annotations:
    kustomize.toolkit.fluxcd.io/prune: disabled
  name: rook-ceph
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
  name: cluster-secrets
  namespace: rook-ceph
spec:
  dataFrom:
  - extract:
      key: cluster
  secretStoreRef:
    kind: ClusterSecretStore
    name: onepassword
  target:
    name: cluster-secrets
    template:
      data:
        SECRET_DOMAIN: '{{ .SECRET_DOMAIN }}'
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
  name: github-status-token
  namespace: rook-ceph
spec:
  dataFrom:
  - extract:
      key: flux
  secretStoreRef:
    kind: ClusterSecretStore
    name: onepassword
  target:
    name: github-status-token-secret
    template:
      data:
        token: '{{ .FLUX_GITHUB_TOKEN }}'
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: rook-ceph
  namespace: rook-ceph
spec:
  commonMetadata:
    labels:
      app.kubernetes.io/name: rook-ceph
  dependsOn:
  - name: onepassword-store
    namespace: security
  interval: 30m
  path: ./kubernetes/apps/base/rook-ceph/rook-ceph/operator
  prune: false
  sourceRef:
    kind: GitRepository
    name: flux-system
    namespace: flux-system
  targetNamespace: rook-ceph
  timeout: 15m
  wait: false
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: rook-ceph-cluster
  namespace: rook-ceph
spec:
  commonMetadata:
    labels:
      app.kubernetes.io/name: rook-ceph-cluster
  dependsOn:
  - name: onepassword-store
    namespace: security
  healthChecks:
  - apiVersion: helm.toolkit.fluxcd.io/v2
    kind: HelmRelease
    name: rook-ceph-cluster
    namespace: rook-ceph
  interval: 30m
  path: ./kubernetes/apps/base/rook-ceph/rook-ceph/cluster
  postBuild:
    substituteFrom:
    - kind: Secret
      name: cluster-secrets
  prune: false
  sourceRef:
    kind: GitRepository
    name: flux-system
    namespace: flux-system
  targetNamespace: rook-ceph
  timeout: 15m
  wait: false
---
apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Alert
metadata:
  name: alertmanager
  namespace: rook-ceph
spec:
  eventSeverity: error
  eventSources:
  - kind: FluxInstance
    name: '*'
  - kind: GitRepository
    name: '*'
  - kind: HelmRelease
    name: '*'
  - kind: HelmRepository
    name: '*'
  - kind: Kustomization
    name: '*'
  - kind: OCIRepository
    name: '*'
  exclusionList:
  - error.*lookup.*github
  - dial.*tcp.*timeout
  - waiting.*socket
  providerRef:
    name: alertmanager
  suspend: false
---
apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Alert
metadata:
  name: github-status
  namespace: rook-ceph
spec:
  eventSeverity: error
  eventSources:
  - kind: Kustomization
    name: '*'
  exclusionList:
  - error.*lookup.*github
  - dial.*tcp.*timeout
  - waiting.*socket
  providerRef:
    name: github-status
  suspend: false
---
apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Provider
metadata:
  name: alertmanager
  namespace: rook-ceph
spec:
  address: http://alertmanager-operated.monitoring.svc.cluster.local:9093/api/v2/alerts/
  type: alertmanager
---
apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Provider
metadata:
  name: github-status
  namespace: rook-ceph
spec:
  address: https://github.com/Aviator-Coding/home-ops
  secretRef:
    name: github-status-token-secret
  type: github
---
apiVersion: source.toolkit.fluxcd.io/v1
kind: OCIRepository
metadata:
  name: app-template
  namespace: rook-ceph
spec:
  interval: 5m
  layerSelector:
    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
    operation: copy
  ref:
    tag: 5.1.0
  url: oci://ghcr.io/bjw-s-labs/helm/app-template

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

✅ **Review** - passed

✅ No issues found.

✅ **Test** - passed

✅ No issues found.

  • flux-local build ks -A --path kubernetes/clusters/main at base 5339c29d and HEAD 60f9c100, then canon/split leaf vs Kustomization compare
  • flux-local test -A --path kubernetes/clusters/main --no-enable-helm (118 passed); helm-enabled attempt failed only for missing local helm binary
  • kustomize build kubernetes/apps/base/rook-ceph/rook-ceph/{operator,cluster} and kubernetes/apps/main/rook-ceph
  • Before/after kustomize build identity for operator (22 docs) and cluster (12 docs)
  • Semantic checks: both Flux Kustomizations prune: false, paths under ./kubernetes/apps/base/rook-ceph/, components ../../../components/{common,alerts}, flat layout removed, scope-clean diff
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

@Aviator-Coding
Aviator-Coding force-pushed the fm/homeops-split-ns-lane1-s6 branch from 27a4a83 to f4468ca Compare August 24, 2026 23:56
@mortyops

mortyops Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: rook-ceph/rook-ceph

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: rook-ceph/rook-ceph

@@ -38,13 +38,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/rook-ceph/rook-ceph/operator
+  path: ./kubernetes/apps/base/rook-ceph/rook-ceph/operator
   prune: false
   sourceRef:
     kind: GitRepository
     name: flux-system
     namespace: flux-system
   targetNamespace: rook-ceph
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: rook-ceph/rook-ceph-cluster

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: rook-ceph/rook-ceph-cluster

@@ -43,13 +43,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/rook-ceph/rook-ceph/cluster
+  path: ./kubernetes/apps/base/rook-ceph/rook-ceph/cluster
   postBuild:
     substituteFrom:
     - kind: Secret
       name: cluster-secrets
   prune: false
   sourceRef:
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph OCIRepository: rook-ceph/rook-ceph

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph OCIRepository: rook-ceph/rook-ceph

@@ -1,19 +0,0 @@

----
-apiVersion: source.toolkit.fluxcd.io/v1
-kind: OCIRepository
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: rook-ceph
-  namespace: rook-ceph
-spec:
-  interval: 10m
-  layerSelector:
-    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
-    operation: copy
-  ref:
-    tag: v1.20.6
-  url: oci://ghcr.io/rook/rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph HelmRelease: rook-ceph/rook-ceph

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph HelmRelease: rook-ceph/rook-ceph

@@ -1,53 +0,0 @@

----
-apiVersion: helm.toolkit.fluxcd.io/v2
-kind: HelmRelease
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: rook-ceph
-  namespace: rook-ceph
-spec:
-  chartRef:
-    kind: OCIRepository
-    name: rook-ceph
-  install:
-    crds: CreateReplace
-    remediation:
-      retries: 3
-    strategy:
-      name: RetryOnFailure
-  interval: 30m
-  releaseName: rook-ceph
-  rollback:
-    cleanupOnFail: true
-    recreate: true
-  upgrade:
-    cleanupOnFail: true
-    crds: CreateReplace
-    remediation:
-      remediateLastFailure: true
-      retries: 2
-    strategy:
-      name: RemediateOnFailure
-  values:
-    crds:
-      enabled: true
-    csi:
-      enableCephfsDriver: true
-      enableCephfsSnapshotter: true
-      enableLiveness: true
-      serviceMonitor:
-        enabled: true
-    enableDiscoveryDaemon: true
-    image:
-      repository: ghcr.io/rook/ceph
-    monitoring:
-      enabled: true
-    resources:
-      limits: {}
-      requests:
-        cpu: 100m
-        memory: 128Mi
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ServiceAccount: rook-ceph/cephfs-ctrlplugin-sa

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ServiceAccount: rook-ceph/cephfs-ctrlplugin-sa

@@ -1,11 +0,0 @@

----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: cephfs-ctrlplugin-sa
-  namespace: rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ServiceAccount: rook-ceph/cephfs-nodeplugin-sa

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ServiceAccount: rook-ceph/cephfs-nodeplugin-sa

@@ -1,11 +0,0 @@

----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: cephfs-nodeplugin-sa
-  namespace: rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ServiceAccount: rook-ceph/rbd-ctrlplugin-sa

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ServiceAccount: rook-ceph/rbd-ctrlplugin-sa

@@ -1,11 +0,0 @@

----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: rbd-ctrlplugin-sa
-  namespace: rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ServiceAccount: rook-ceph/rbd-nodeplugin-sa

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ServiceAccount: rook-ceph/rbd-nodeplugin-sa

@@ -1,11 +0,0 @@

----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: rbd-nodeplugin-sa
-  namespace: rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph Role: rook-ceph/ceph-csi-operator-cephfs-ctrlplugin-r

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph Role: rook-ceph/ceph-csi-operator-cephfs-ctrlplugin-r

@@ -1,53 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-cephfs-ctrlplugin-r
-  namespace: rook-ceph
-rules:
-- apiGroups:
-  - coordination.k8s.io
-  resources:
-  - leases
-  verbs:
-  - get
-  - watch
-  - list
-  - delete
-  - update
-  - create
-- apiGroups:
-  - csiaddons.openshift.io
-  resources:
-  - csiaddonsnodes
-  verbs:
-  - get
-  - watch
-  - list
-  - create
-  - update
-  - delete
-- apiGroups:
-  - ''
-  resources:
-  - pods
-  verbs:
-  - get
-- apiGroups:
-  - apps
-  resources:
-  - replicasets
-  verbs:
-  - get
-- apiGroups:
-  - apps
-  resources:
-  - deployments/finalizers
-  - daemonsets/finalizers
-  verbs:
-  - update
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph Role: rook-ceph/ceph-csi-operator-cephfs-nodeplugin-r

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph Role: rook-ceph/ceph-csi-operator-cephfs-nodeplugin-r

@@ -1,42 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-cephfs-nodeplugin-r
-  namespace: rook-ceph
-rules:
-- apiGroups:
-  - csiaddons.openshift.io
-  resources:
-  - csiaddonsnodes
-  verbs:
-  - get
-  - watch
-  - list
-  - create
-  - update
-  - delete
-- apiGroups:
-  - ''
-  resources:
-  - pods
-  verbs:
-  - get
-- apiGroups:
-  - apps
-  resources:
-  - replicasets
-  verbs:
-  - get
-- apiGroups:
-  - apps
-  resources:
-  - deployments/finalizers
-  - daemonsets/finalizers
-  verbs:
-  - update
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph Role: rook-ceph/ceph-csi-operator-rbd-ctrlplugin-r

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph Role: rook-ceph/ceph-csi-operator-rbd-ctrlplugin-r

@@ -1,53 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-rbd-ctrlplugin-r
-  namespace: rook-ceph
-rules:
-- apiGroups:
-  - coordination.k8s.io
-  resources:
-  - leases
-  verbs:
-  - get
-  - watch
-  - list
-  - delete
-  - update
-  - create
-- apiGroups:
-  - csiaddons.openshift.io
-  resources:
-  - csiaddonsnodes
-  verbs:
-  - get
-  - watch
-  - list
-  - create
-  - update
-  - delete
-- apiGroups:
-  - ''
-  resources:
-  - pods
-  verbs:
-  - get
-- apiGroups:
-  - apps
-  resources:
-  - replicasets
-  verbs:
-  - get
-- apiGroups:
-  - apps
-  resources:
-  - deployments/finalizers
-  - daemonsets/finalizers
-  verbs:
-  - update
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph Role: rook-ceph/ceph-csi-operator-rbd-nodeplugin-r

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph Role: rook-ceph/ceph-csi-operator-rbd-nodeplugin-r

@@ -1,42 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-rbd-nodeplugin-r
-  namespace: rook-ceph
-rules:
-- apiGroups:
-  - csiaddons.openshift.io
-  resources:
-  - csiaddonsnodes
-  verbs:
-  - get
-  - watch
-  - list
-  - create
-  - update
-  - delete
-- apiGroups:
-  - ''
-  resources:
-  - pods
-  verbs:
-  - get
-- apiGroups:
-  - apps
-  resources:
-  - replicasets
-  verbs:
-  - get
-- apiGroups:
-  - apps
-  resources:
-  - deployments/finalizers
-  - daemonsets/finalizers
-  verbs:
-  - update
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRole: rook-ceph/ceph-csi-operator-cephfs-ctrlplugin-cr

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRole: rook-ceph/ceph-csi-operator-cephfs-ctrlplugin-cr

@@ -1,224 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-cephfs-ctrlplugin-cr
-rules:
-- apiGroups:
-  - ''
-  resources:
-  - secrets
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - ''
-  resources:
-  - configmaps
-  verbs:
-  - get
-- apiGroups:
-  - ''
-  resources:
-  - nodes
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - storage.k8s.io
-  resources:
-  - csinodes
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - ''
-  resources:
-  - persistentvolumes
-  verbs:
-  - get
-  - list
-  - watch
-  - create
-  - delete
-  - patch
-  - update
-- apiGroups:
-  - ''
-  resources:
-  - persistentvolumeclaims
-  verbs:
-  - get
-  - list
-  - watch
-  - patch
-  - update
-- apiGroups:
-  - storage.k8s.io
-  resources:
-  - storageclasses
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - ''
-  resources:
-  - events
-  verbs:
-  - list
-  - watch
-  - create
-  - update
-  - patch
-- apiGroups:
-  - storage.k8s.io
-  resources:
-  - volumeattachments
-  verbs:
-  - get
-  - list
-  - watch
-  - patch
-- apiGroups:
-  - storage.k8s.io
-  resources:
-  - volumeattachments/status
-  verbs:
-  - patch
-- apiGroups:
-  - ''
-  resources:
-  - persistentvolumeclaims/status
-  verbs:
-  - patch
-- apiGroups:
-  - snapshot.storage.k8s.io
-  resources:
-  - volumesnapshots
-  verbs:
-  - get
-  - list
-- apiGroups:
-  - snapshot.storage.k8s.io
-  resources:
-  - volumesnapshotclasses
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - snapshot.storage.k8s.io
-  resources:
-  - volumesnapshotcontents
-  verbs:
-  - get
-  - list
-  - watch
-  - patch
-  - update
-- apiGroups:
-  - snapshot.storage.k8s.io
-  resources:
-  - volumesnapshotcontents/status
-  verbs:
-  - update
-  - patch
-- apiGroups:
-  - groupsnapshot.storage.k8s.io
-  resources:
-  - volumegroupsnapshotclasses
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - groupsnapshot.storage.k8s.io
-  resources:
-  - volumegroupsnapshotcontents
-  verbs:
-  - get
-  - list
-  - watch
-  - update
-  - patch
-- apiGroups:
-  - groupsnapshot.storage.k8s.io
-  resources:
-  - volumegroupsnapshotcontents/status
-  verbs:
-  - update
-  - patch
-- apiGroups:
-  - groupsnapshot.storage.openshift.io
-  resources:
-  - volumegroupsnapshotclasses
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - groupsnapshot.storage.openshift.io
-  resources:
-  - volumegroupsnapshotcontents
-  verbs:
-  - get
-  - list
-  - watch
-  - update
-  - patch
-- apiGroups:
-  - groupsnapshot.storage.openshift.io
-  resources:
-  - volumegroupsnapshotcontents/status
-  verbs:
-  - update
-  - patch
-- apiGroups:
-  - replication.storage.openshift.io
-  resources:
-  - volumegroupreplicationcontents
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - replication.storage.openshift.io
-  resources:
-  - volumegroupreplicationclasses
-  verbs:
-  - get
-- apiGroups:
-  - ''
-  resources:
-  - serviceaccounts
-  verbs:
-  - get
-- apiGroups:
-  - ''
-  resources:
-  - serviceaccounts/token
-  verbs:
-  - create
-- apiGroups:
-  - authentication.k8s.io
-  resources:
-  - tokenreviews
-  verbs:
-  - create
-- apiGroups:
-  - storage.k8s.io
-  resources:
-  - volumeattributesclasses
-  verbs:
-  - get
-  - list
-  - watch
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRole: rook-ceph/ceph-csi-operator-cephfs-nodeplugin-cr

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRole: rook-ceph/ceph-csi-operator-cephfs-nodeplugin-cr

@@ -1,66 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-cephfs-nodeplugin-cr
-rules:
-- apiGroups:
-  - ''
-  resources:
-  - nodes
-  verbs:
-  - get
-- apiGroups:
-  - ''
-  resources:
-  - secrets
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - ''
-  resources:
-  - configmaps
-  verbs:
-  - get
-- apiGroups:
-  - ''
-  resources:
-  - serviceaccounts
-  verbs:
-  - get
-- apiGroups:
-  - ''
-  resources:
-  - serviceaccounts/token
-  verbs:
-  - create
-- apiGroups:
-  - ''
-  resources:
-  - events
-  verbs:
-  - list
-  - watch
-  - create
-  - update
-  - patch
-- apiGroups:
-  - ''
-  resources:
-  - persistentvolumes
-  - persistentvolumeclaims
-  verbs:
-  - get
-- apiGroups:
-  - authentication.k8s.io
-  resources:
-  - tokenreviews
-  verbs:
-  - create
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRole: rook-ceph/ceph-csi-operator-rbd-ctrlplugin-cr

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRole: rook-ceph/ceph-csi-operator-rbd-ctrlplugin-cr

@@ -1,239 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-rbd-ctrlplugin-cr
-rules:
-- apiGroups:
-  - ''
-  resources:
-  - secrets
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - ''
-  resources:
-  - persistentvolumes
-  verbs:
-  - get
-  - list
-  - watch
-  - create
-  - delete
-  - patch
-  - update
-- apiGroups:
-  - ''
-  resources:
-  - persistentvolumeclaims
-  verbs:
-  - get
-  - list
-  - watch
-  - update
-- apiGroups:
-  - storage.k8s.io
-  resources:
-  - storageclasses
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - ''
-  resources:
-  - events
-  verbs:
-  - list
-  - watch
-  - create
-  - update
-  - patch
-- apiGroups:
-  - storage.k8s.io
-  resources:
-  - volumeattachments
-  verbs:
-  - get
-  - list
-  - watch
-  - patch
-- apiGroups:
-  - storage.k8s.io
-  resources:
-  - volumeattachments/status
-  verbs:
-  - patch
-- apiGroups:
-  - ''
-  resources:
-  - nodes
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - storage.k8s.io
-  resources:
-  - csinodes
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - ''
-  resources:
-  - persistentvolumeclaims/status
-  verbs:
-  - patch
-- apiGroups:
-  - snapshot.storage.k8s.io
-  resources:
-  - volumesnapshots
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - snapshot.storage.k8s.io
-  resources:
-  - volumesnapshotclasses
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - snapshot.storage.k8s.io
-  resources:
-  - volumesnapshotcontents
-  verbs:
-  - get
-  - list
-  - watch
-  - patch
-  - update
-- apiGroups:
-  - snapshot.storage.k8s.io
-  resources:
-  - volumesnapshotcontents/status
-  verbs:
-  - update
-  - patch
-- apiGroups:
-  - ''
-  resources:
-  - configmaps
-  verbs:
-  - get
-- apiGroups:
-  - ''
-  resources:
-  - serviceaccounts
-  verbs:
-  - get
-- apiGroups:
-  - ''
-  resources:
-  - serviceaccounts/token
-  verbs:
-  - create
-- apiGroups:
-  - groupsnapshot.storage.k8s.io
-  resources:
-  - volumegroupsnapshotclasses
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - groupsnapshot.storage.k8s.io
-  resources:
-  - volumegroupsnapshotcontents
-  verbs:
-  - get
-  - list
-  - watch
-  - update
-  - patch
-- apiGroups:
-  - groupsnapshot.storage.k8s.io
-  resources:
-  - volumegroupsnapshotcontents/status
-  verbs:
-  - update
-  - patch
-- apiGroups:
-  - groupsnapshot.storage.openshift.io
-  resources:
-  - volumegroupsnapshotclasses
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - groupsnapshot.storage.openshift.io
-  resources:
-  - volumegroupsnapshotcontents
-  verbs:
-  - get
-  - list
-  - watch
-  - update
-  - patch
-- apiGroups:
-  - groupsnapshot.storage.openshift.io
-  resources:
-  - volumegroupsnapshotcontents/status
-  verbs:
-  - update
-  - patch
-- apiGroups:
-  - replication.storage.openshift.io
-  resources:
-  - volumegroupreplicationcontents
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - replication.storage.openshift.io
-  resources:
-  - volumegroupreplicationclasses
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - authentication.k8s.io
-  resources:
-  - tokenreviews
-  verbs:
-  - create
-- apiGroups:
-  - authorization.k8s.io
-  resources:
-  - subjectaccessreviews
-  verbs:
-  - create
-- apiGroups:
-  - cbt.storage.k8s.io
-  resources:
-  - snapshotmetadataservices
-  verbs:
-  - get
-  - list
-- apiGroups:
-  - storage.k8s.io
-  resources:
-  - volumeattributesclasses
-  verbs:
-  - get
-  - list
-  - watch
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRole: rook-ceph/ceph-csi-operator-rbd-nodeplugin-cr

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRole: rook-ceph/ceph-csi-operator-rbd-nodeplugin-cr

@@ -1,79 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-rbd-nodeplugin-cr
-rules:
-- apiGroups:
-  - ''
-  resources:
-  - secrets
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - ''
-  resources:
-  - persistentvolumes
-  verbs:
-  - get
-  - list
-- apiGroups:
-  - storage.k8s.io
-  resources:
-  - volumeattachments
-  verbs:
-  - get
-  - list
-- apiGroups:
-  - ''
-  resources:
-  - configmaps
-  verbs:
-  - get
-- apiGroups:
-  - ''
-  resources:
-  - serviceaccounts
-  verbs:
-  - get
-- apiGroups:
-  - ''
-  resources:
-  - serviceaccounts/token
-  verbs:
-  - create
-- apiGroups:
-  - ''
-  resources:
-  - nodes
-  verbs:
-  - get
-- apiGroups:
-  - authentication.k8s.io
-  resources:
-  - tokenreviews
-  verbs:
-  - create
-- apiGroups:
-  - ''
-  resources:
-  - events
-  verbs:
-  - list
-  - watch
-  - create
-  - update
-  - patch
-- apiGroups:
-  - ''
-  resources:
-  - persistentvolumeclaims
-  verbs:
-  - get
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph RoleBinding: rook-ceph/ceph-csi-operator-cephfs-ctrlplugin-rb

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph RoleBinding: rook-ceph/ceph-csi-operator-cephfs-ctrlplugin-rb

@@ -1,19 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-cephfs-ctrlplugin-rb
-  namespace: rook-ceph
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: Role
-  name: ceph-csi-operator-cephfs-ctrlplugin-r
-subjects:
-- kind: ServiceAccount
-  name: cephfs-ctrlplugin-sa
-  namespace: rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph RoleBinding: rook-ceph/ceph-csi-operator-cephfs-nodeplugin-rb

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph RoleBinding: rook-ceph/ceph-csi-operator-cephfs-nodeplugin-rb

@@ -1,19 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-cephfs-nodeplugin-rb
-  namespace: rook-ceph
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: Role
-  name: ceph-csi-operator-cephfs-nodeplugin-r
-subjects:
-- kind: ServiceAccount
-  name: cephfs-nodeplugin-sa
-  namespace: rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph RoleBinding: rook-ceph/ceph-csi-operator-rbd-ctrlplugin-rb

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph RoleBinding: rook-ceph/ceph-csi-operator-rbd-ctrlplugin-rb

@@ -1,19 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-rbd-ctrlplugin-rb
-  namespace: rook-ceph
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: Role
-  name: ceph-csi-operator-rbd-ctrlplugin-r
-subjects:
-- kind: ServiceAccount
-  name: rbd-ctrlplugin-sa
-  namespace: rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph RoleBinding: rook-ceph/ceph-csi-operator-rbd-nodeplugin-rb

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph RoleBinding: rook-ceph/ceph-csi-operator-rbd-nodeplugin-rb

@@ -1,19 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-rbd-nodeplugin-rb
-  namespace: rook-ceph
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: Role
-  name: ceph-csi-operator-rbd-nodeplugin-r
-subjects:
-- kind: ServiceAccount
-  name: rbd-nodeplugin-sa
-  namespace: rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRoleBinding: rook-ceph/ceph-csi-operator-cephfs-ctrlplugin-crb

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRoleBinding: rook-ceph/ceph-csi-operator-cephfs-ctrlplugin-crb

@@ -1,18 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-cephfs-ctrlplugin-crb
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: ClusterRole
-  name: ceph-csi-operator-cephfs-ctrlplugin-cr
-subjects:
-- kind: ServiceAccount
-  name: cephfs-ctrlplugin-sa
-  namespace: rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRoleBinding: rook-ceph/ceph-csi-operator-cephfs-nodeplugin-crb

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRoleBinding: rook-ceph/ceph-csi-operator-cephfs-nodeplugin-crb

@@ -1,18 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-cephfs-nodeplugin-crb
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: ClusterRole
-  name: ceph-csi-operator-cephfs-nodeplugin-cr
-subjects:
-- kind: ServiceAccount
-  name: cephfs-nodeplugin-sa
-  namespace: rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRoleBinding: rook-ceph/ceph-csi-operator-rbd-ctrlplugin-crb

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRoleBinding: rook-ceph/ceph-csi-operator-rbd-ctrlplugin-crb

@@ -1,18 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-rbd-ctrlplugin-crb
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: ClusterRole
-  name: ceph-csi-operator-rbd-ctrlplugin-cr
-subjects:
-- kind: ServiceAccount
-  name: rbd-ctrlplugin-sa
-  namespace: rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRoleBinding: rook-ceph/ceph-csi-operator-rbd-nodeplugin-crb

+++ kubernetes/apps/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ClusterRoleBinding: rook-ceph/ceph-csi-operator-rbd-nodeplugin-crb

@@ -1,18 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-csi-operator-rbd-nodeplugin-crb
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: ClusterRole
-  name: ceph-csi-operator-rbd-nodeplugin-cr
-subjects:
-- kind: ServiceAccount
-  name: rbd-nodeplugin-sa
-  namespace: rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster OCIRepository: rook-ceph/rook-ceph-cluster

+++ kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster OCIRepository: rook-ceph/rook-ceph-cluster

@@ -1,19 +0,0 @@

----
-apiVersion: source.toolkit.fluxcd.io/v1
-kind: OCIRepository
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: rook-ceph-cluster
-  namespace: rook-ceph
-spec:
-  interval: 10m
-  layerSelector:
-    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
-    operation: copy
-  ref:
-    tag: v1.20.6
-  url: oci://ghcr.io/rook/rook-ceph-cluster
-
--- kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster HelmRelease: rook-ceph/rook-ceph-cluster

+++ kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster HelmRelease: rook-ceph/rook-ceph-cluster

@@ -1,334 +0,0 @@

----
-apiVersion: helm.toolkit.fluxcd.io/v2
-kind: HelmRelease
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: rook-ceph-cluster
-  namespace: rook-ceph
-spec:
-  chartRef:
-    kind: OCIRepository
-    name: rook-ceph-cluster
-  dependsOn:
-  - name: rook-ceph
-    namespace: rook-ceph
-  - name: snapshot-controller
-    namespace: kube-system
-  install:
-    crds: CreateReplace
-    remediation:
-      retries: -1
-    strategy:
-      name: RetryOnFailure
-  interval: 1h
-  rollback:
-    cleanupOnFail: true
-    recreate: true
-  timeout: 15m
-  upgrade:
-    cleanupOnFail: true
-    crds: CreateReplace
-    remediation:
-      remediateLastFailure: true
-      retries: 2
-    strategy:
-      name: RemediateOnFailure
-  values:
-    cephBlockPools:
-    - enableRBDStats: true
-      name: ceph-blockpool
-      spec:
-        compressionMode: none
-        failureDomain: host
-        parameters:
-          bulk: 'true'
-          compression_mode: none
-        replicated:
-          size: 3
-      storageClass:
-        allowVolumeExpansion: true
-        enabled: true
-        isDefault: true
-        name: ceph-block
-        parameters:
-          compression_algorithm: zstd
-          compression_mode: aggressive
-          csi.storage.k8s.io/controller-expand-secret-name: rook-csi-rbd-provisioner
-          csi.storage.k8s.io/controller-expand-secret-namespace: '{{ .Release.Namespace
-            }}'
-          csi.storage.k8s.io/fstype: ext4
-          csi.storage.k8s.io/node-stage-secret-name: rook-csi-rbd-node
-          csi.storage.k8s.io/node-stage-secret-namespace: '{{ .Release.Namespace }}'
-          csi.storage.k8s.io/provisioner-secret-name: rook-csi-rbd-provisioner
-          csi.storage.k8s.io/provisioner-secret-namespace: '{{ .Release.Namespace
-            }}'
-          imageFeatures: layering,fast-diff,object-map,deep-flatten,exclusive-lock
-          imageFormat: '2'
-        reclaimPolicy: Delete
-        volumeBindingMode: Immediate
-    cephBlockPoolsVolumeSnapshotClass:
-      deletionPolicy: Delete
-      enabled: true
-      isDefault: false
-      name: csi-ceph-blockpool
-    cephClusterSpec:
-      cephConfig:
-        client.rgw:
-          rgw_realm: ceph-objectstore
-          rgw_sigv4_insecure: 'true'
-        global:
-          auth_client_required: cephx
-          auth_cluster_required: cephx
-          auth_service_required: cephx
-          bdev_async_discard_threads: '1'
-          bdev_enable_discard: 'true'
-          device_failure_prediction_mode: local
-          osd_class_update_on_start: 'false'
-        mds:
-          mds_cache_memory_limit: '8589934592'
-        mgr:
-          mgr/crash/warn_recent_interval: '7200'
-        osd:
-          osd_max_scrubs: '1'
-          osd_mclock_profile: high_client_ops
-          osd_memory_target: '10737418240'
-          osd_recovery_max_active: '3'
-          osd_scrub_begin_hour: '1'
-          osd_scrub_end_hour: '7'
-        osd.0:
-          osd_mclock_max_capacity_iops_ssd: '15000'
-        osd.2:
-          osd_mclock_max_capacity_iops_ssd: '15000'
-        osd.3:
-          osd_mclock_max_capacity_iops_ssd: '7000'
-        osd.4:
-          osd_mclock_max_capacity_iops_ssd: '7000'
-        osd.5:
-          osd_mclock_max_capacity_iops_ssd: '7000'
-        osd.6:
-          osd_mclock_max_capacity_iops_ssd: '15000'
-      crashCollector:
-        disable: false
-      csi:
-        cephfs:
-          kernelMountOptions: ms_mode=prefer-crc
-      dashboard:
-        enabled: false
-      mgr:
-        modules:
-        - enabled: true
-          name: diskprediction_local
-        - enabled: true
-          name: pg_autoscaler
-        - enabled: false
-          name: rook
-        - enabled: true
-          name: nfs
-        - enabled: true
-          name: rgw
-        - enabled: false
-          name: insights
-        placement:
-          topologySpreadConstraints:
-          - labelSelector:
-              matchLabels:
-                app: rook-ceph-mgr
-            maxSkew: 1
-            topologyKey: kubernetes.io/hostname
-            whenUnsatisfiable: DoNotSchedule
-      mon:
-        allowMultiplePerNode: false
-        count: 3
-        placement:
-          topologySpreadConstraints:
-          - labelSelector:
-              matchLabels:
-                app: rook-ceph-mon
-            maxSkew: 1
-            topologyKey: kubernetes.io/hostname
-            whenUnsatisfiable: DoNotSchedule
-        volumeClaimTemplate:
-          spec:
-            resources:
-              requests:
-                storage: 10Gi
-            storageClassName: openebs-hostpath
-      network:
-        connections:
-          requireMsgr2: true
-        provider: host
-      resources:
-        logcollector:
-          limits:
-            cpu: 100m
-            memory: 256Mi
-          requests:
-            cpu: 100m
-            memory: 256Mi
-        mgr:
-          limits:
-            memory: 2Gi
-          requests:
-            cpu: 100m
-            memory: 512Mi
-        mgr-sidecar:
-          limits:
-            memory: 256Mi
-          requests:
-            cpu: 50m
-            memory: 128Mi
-        mon:
-          limits:
-            cpu: 500m
-            memory: 2Gi
-          requests:
-            cpu: 500m
-            memory: 2Gi
-        osd:
-          limits:
-            memory: 14Gi
-          requests:
-            cpu: 500m
-            memory: 14Gi
-      security:
-        cephx:
-          daemon:
-            keyGeneration: 2
-            keyRotationPolicy: KeyGeneration
-            keyType: aes256k
-      storage:
-        config:
-          osdsPerDevice: '1'
-        nodes:
-        - devices:
-          - name: /dev/disk/by-id/nvme-Lexar_SSD_NM790_4TB_NME714W100393P2202
-          - name: /dev/disk/by-id/nvme-Samsung_SSD_980_PRO_2TB_S6B0NL0W412707M
-          name: talos-1
-        - devices:
-          - name: /dev/disk/by-id/nvme-Samsung_SSD_990_PRO_2TB_S7KHNJ0WC55436E
-          - name: /dev/disk/by-id/nvme-Lexar_SSD_NM790_4TB_NME714W101694P2202
-          name: talos-2
-        - devices:
-          - name: /dev/disk/by-id/nvme-Samsung_SSD_980_PRO_2TB_S69ENL0TC06068B
-          - name: /dev/disk/by-id/nvme-Lexar_SSD_NM790_4TB_NL1948W100519P2202
-          name: talos-3
-        osdMaxUpdatesInParallel: 1
-        useAllDevices: false
-        useAllNodes: false
-    cephFileSystemVolumeSnapshotClass:
-      deletionPolicy: Delete
-      enabled: true
-      isDefault: false
-      name: csi-ceph-filesystem
-    cephFileSystems:
-    - name: ceph-filesystem
-      spec:
-        dataPools:
-        - failureDomain: host
-          name: data0
-          parameters:
-            bulk: 'true'
-            compression_mode: none
-          replicated:
-            size: 3
-        metadataPool:
-          failureDomain: host
-          parameters:
-            compression_mode: none
-          replicated:
-            size: 3
-        metadataServer:
-          activeCount: 2
-          activeStandby: true
-          placement:
-            topologySpreadConstraints:
-            - labelSelector:
-                matchLabels:
-                  app.kubernetes.io/name: ceph-mds
-                  app.kubernetes.io/part-of: ceph-filesystem
-              maxSkew: 1
-              topologyKey: kubernetes.io/hostname
-              whenUnsatisfiable: DoNotSchedule
-          priorityClassName: system-cluster-critical
-          resources:
-            limits:
-              memory: 10Gi
-            requests:
-              cpu: 500m
-              memory: 1Gi
-        preserveFilesystemOnDelete: true
-      storageClass:
-        allowVolumeExpansion: true
-        enabled: true
-        isDefault: false
-        name: ceph-filesystem
-        parameters:
-          csi.storage.k8s.io/controller-expand-secret-name: rook-csi-cephfs-provisioner
-          csi.storage.k8s.io/controller-expand-secret-namespace: '{{ .Release.Namespace
-            }}'
-          csi.storage.k8s.io/fstype: ext4
-          csi.storage.k8s.io/node-stage-secret-name: rook-csi-cephfs-node
-          csi.storage.k8s.io/node-stage-secret-namespace: '{{ .Release.Namespace }}'
-          csi.storage.k8s.io/provisioner-secret-name: rook-csi-cephfs-provisioner
-          csi.storage.k8s.io/provisioner-secret-namespace: '{{ .Release.Namespace
-            }}'
-        pool: data0
-        reclaimPolicy: Delete
-    cephImage:
-      repository: quay.io/ceph/ceph
-      tag: v20.2.4
-    cephObjectStores:
-    - name: ceph-objectstore
-      spec:
-        allowUsersInNamespaces:
-        - '*'
-        dataPool:
-          failureDomain: host
-          parameters:
-            compression_mode: none
-          replicated:
-            size: 3
-        gateway:
-          instances: 2
-          placement:
-            topologySpreadConstraints:
-            - labelSelector:
-                matchLabels:
-                  app: rook-ceph-rgw
-                  ceph_daemon_id: ceph-objectstore
-              maxSkew: 1
-              topologyKey: kubernetes.io/hostname
-              whenUnsatisfiable: DoNotSchedule
-          port: 80
-          priorityClassName: system-cluster-critical
-          resources:
-            limits:
-              memory: 3Gi
-            requests:
-              cpu: 500m
-              memory: 1Gi
-        healthCheck:
-          bucket:
-            interval: 60s
-        metadataPool:
-          failureDomain: host
-          parameters:
-            compression_mode: none
-          replicated:
-            size: 3
-        preservePoolsOnDelete: false
-      storageClass:
-        enabled: true
-        name: ceph-bucket
-        parameters:
-          region: us-east-1
-        reclaimPolicy: Delete
-    monitoring:
-      createPrometheusRules: true
-      enabled: true
[Diff truncated by flux-local]
--- kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster HTTPRoute: rook-ceph/rook-ceph-s3

+++ kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster HTTPRoute: rook-ceph/rook-ceph-s3

@@ -1,23 +0,0 @@

----
-apiVersion: gateway.networking.k8s.io/v1
-kind: HTTPRoute
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: rook-ceph-s3
-  namespace: rook-ceph
-spec:
-  hostnames:
-  - s3.${SECRET_DOMAIN}
-  parentRefs:
-  - name: envoy-internal
-    namespace: network
-    sectionName: https
-  rules:
-  - backendRefs:
-    - name: rook-ceph-rgw-ceph-objectstore
-      namespace: rook-ceph
-      port: 80
-
--- kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster PrometheusRule: rook-ceph/ceph-custom-alerts

+++ kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster PrometheusRule: rook-ceph/ceph-custom-alerts

@@ -1,218 +0,0 @@

----
-apiVersion: monitoring.coreos.com/v1
-kind: PrometheusRule
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-custom-alerts
-  namespace: rook-ceph
-spec:
-  groups:
-  - name: ceph-reliability
-    rules:
-    - alert: CephMonitorMemoryHigh
-      annotations:
-        summary: Ceph monitor {{ $labels.pod }} memory usage above 80%
-      expr: |
-        container_memory_working_set_bytes{namespace="rook-ceph",container="mon"}
-        / container_spec_memory_limit_bytes{namespace="rook-ceph",container="mon"} > 0.8
-      for: 5m
-      labels:
-        severity: warning
-    - alert: CephOSDRestarts
-      annotations:
-        summary: OSD {{ $labels.pod }} has restarted more than 3 times in 1 hour
-      expr: increase(kube_pod_container_status_restarts_total{namespace="rook-ceph",container="osd"}[1h])
-        > 3
-      for: 5m
-      labels:
-        severity: critical
-    - alert: CephOSDSlowOps
-      annotations:
-        description: OSD {{ $labels.ceph_daemon }} has {{ $value }} slow operations
-          for more than 10 minutes.
-        summary: OSD {{ $labels.ceph_daemon }} experiencing sustained slow operations
-      expr: ceph_osd_slow_ops > 5
-      for: 10m
-      labels:
-        severity: warning
-    - alert: CephMonitorQuorumAtRisk
-      annotations:
-        summary: Ceph monitor quorum has fewer than 3 members
-      expr: sum(ceph_mon_quorum_status) < 3
-      for: 1m
-      labels:
-        severity: critical
-    - alert: CephClusterNearFull
-      annotations:
-        description: Cluster is {{ $value | humanizePercentage }} full. Consider adding
-          capacity or cleaning up data.
-        summary: Ceph cluster storage usage above 75%
-      expr: |
-        ceph_cluster_total_used_bytes / ceph_cluster_total_bytes > 0.75
-      for: 5m
-      labels:
-        severity: warning
-    - alert: CephClusterCriticallyFull
-      annotations:
-        description: Cluster is {{ $value | humanizePercentage }} full. Immediate
-          action required.
-        summary: Ceph cluster storage usage above 85%
-      expr: |
-        ceph_cluster_total_used_bytes / ceph_cluster_total_bytes > 0.85
-      for: 5m
-      labels:
-        severity: critical
-    - alert: CephOSDNearFull
-      annotations:
-        description: OSD {{ $labels.ceph_daemon }} is {{ $value | humanizePercentage
-          }} full.
-        summary: OSD {{ $labels.ceph_daemon }} storage usage above 80%
-      expr: |
-        (ceph_osd_stat_bytes_used / ceph_osd_stat_bytes) > 0.80
-      for: 5m
-      labels:
-        severity: warning
-    - alert: CephOSDFull
-      annotations:
-        description: OSD {{ $labels.ceph_daemon }} is {{ $value | humanizePercentage
-          }} full. Critical!
-        summary: OSD {{ $labels.ceph_daemon }} storage usage above 90%
-      expr: |
-        (ceph_osd_stat_bytes_used / ceph_osd_stat_bytes) > 0.90
-      for: 5m
-      labels:
-        severity: critical
-    - alert: CephOSDDown
-      annotations:
-        description: OSD {{ $labels.ceph_daemon }} has been down for more than 5 minutes.
-        summary: Ceph OSD {{ $labels.ceph_daemon }} is down
-      expr: ceph_osd_up == 0
-      for: 5m
-      labels:
-        severity: critical
-    - alert: CephOSDOut
-      annotations:
-        description: OSD {{ $labels.ceph_daemon }} is marked out and not participating
-          in data placement.
-        summary: Ceph OSD {{ $labels.ceph_daemon }} is out of the cluster
-      expr: ceph_osd_in == 0
-      for: 5m
-      labels:
-        severity: warning
-    - alert: CephOSDFlapping
-      annotations:
-        description: OSD {{ $labels.ceph_daemon }} has changed state more than 4 times
-          in 10 minutes.
-        summary: OSD {{ $labels.ceph_daemon }} is flapping
-      expr: |
-        changes(ceph_osd_up[10m]) > 4
-      for: 1m
-      labels:
-        severity: warning
-  - name: ceph-pg-health
-    rules:
-    - alert: CephPGDegraded
-      annotations:
-        description: '{{ $value }} placement groups are in degraded state. Data is
-          still accessible but not fully replicated.'
-        summary: Ceph placement groups are degraded
-      expr: ceph_pg_degraded > 0
-      for: 15m
-      labels:
-        severity: warning
-    - alert: CephPGInactive
-      annotations:
-        description: '{{ $value }} placement groups are inactive. Data may be inaccessible.'
-        summary: Ceph placement groups are inactive
-      expr: ceph_pg_inactive > 0
-      for: 5m
-      labels:
-        severity: critical
-    - alert: CephPGInconsistent
-      annotations:
-        description: '{{ $value }} placement groups have inconsistent data. Run ''ceph
-          pg repair'' after investigation.'
-        summary: Ceph placement groups are inconsistent
-      expr: ceph_pg_inconsistent > 0
-      for: 5m
-      labels:
-        severity: critical
-    - alert: CephPGRecoveryFull
-      annotations:
-        description: Placement group recovery is blocked because the cluster is too
-          full.
-        summary: Ceph recovery blocked - cluster full
-      expr: ceph_pg_recovery_full > 0
-      for: 5m
-      labels:
-        severity: critical
-  - name: ceph-disk-health
-    rules:
-    - alert: CephDiskPredictedFailure
-      annotations:
-        description: Device {{ $labels.device }} on {{ $labels.host }} is predicted
-          to fail within {{ $value }} days. Plan replacement.
-        summary: Disk failure predicted for {{ $labels.device }}
-      expr: ceph_device_life_expectancy_min < 7
-      for: 5m
-      labels:
-        severity: warning
-    - alert: CephDiskPredictedFailureImminent
-      annotations:
-        description: Device {{ $labels.device }} on {{ $labels.host }} is predicted
-          to fail within 24 hours. Replace immediately.
-        summary: Disk failure imminent for {{ $labels.device }}
-      expr: ceph_device_life_expectancy_min < 1 and ceph_device_life_expectancy_min
-        >= 0
-      for: 1m
-      labels:
-        severity: critical
-  - name: ceph-crash-detection
-    rules:
-    - alert: CephCrashesDetected
-      annotations:
-        description: A Ceph daemon or mgr module has crashed recently. Run 'ceph crash
-          ls-new' to see details and 'ceph crash archive-all' after review.
-        summary: Ceph daemon crash detected
-      expr: ceph_health_detail{name=~"RECENT_CRASH|RECENT_MGR_MODULE_CRASH"} == 1
-      for: 5m
-      labels:
-        severity: warning
-  - name: ceph-iops-performance
-    rules:
-    - alert: CephHighIOPS
-      annotations:
-        description: Total cluster IOPS {{ $value | humanize }} exceeds 300 ops/sec
-          for more than 5 minutes. This may indicate backup schedule overlap or unusual
-          workload.
-        summary: Ceph cluster experiencing high IOPS
-      expr: |
-        sum(irate(ceph_osd_op_w[5m]) + irate(ceph_osd_op_r[5m])) > 300
-      for: 5m
-      labels:
-        severity: warning
-    - alert: CephOSDLatencyDisparity
-      annotations:
-        description: OSD apply latency disparity is {{ $value }}ms. Samsung 980 PRO
-          (osd.0, osd.1) typically have higher latency than Lexar NM790 (osd.2-5).
-          Investigate if variance exceeds expected device-class differences.
-        summary: High latency variance between Ceph OSDs
-      expr: |
-        max(ceph_osd_apply_latency_ms) - min(ceph_osd_apply_latency_ms) > 15
-      for: 10m
-      labels:
-        severity: warning
-    - alert: CephOSDHighLatency
-      annotations:
-        description: OSD {{ $labels.ceph_daemon }} apply latency is {{ $value }}ms,
-          exceeding 50ms threshold. Check for I/O contention or disk issues.
-        summary: OSD {{ $labels.ceph_daemon }} has high apply latency
-      expr: |
-        ceph_osd_apply_latency_ms > 50
-      for: 5m
-      labels:
-        severity: warning
-
--- kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster PersistentVolumeClaim: rook-ceph/ceph-backup-pvc

+++ kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster PersistentVolumeClaim: rook-ceph/ceph-backup-pvc

@@ -1,18 +0,0 @@

----
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-backup-pvc
-  namespace: rook-ceph
-spec:
-  accessModes:
-  - ReadWriteOnce
-  resources:
-    requests:
-      storage: 50Gi
-  storageClassName: openebs-hostpath
-
--- kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster CronJob: rook-ceph/rook-ceph-backup

+++ kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster CronJob: rook-ceph/rook-ceph-backup

@@ -1,87 +0,0 @@

----
-apiVersion: batch/v1
-kind: CronJob
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: rook-ceph-backup
-  namespace: rook-ceph
-spec:
-  concurrencyPolicy: Forbid
-  failedJobsHistoryLimit: 3
-  jobTemplate:
-    spec:
-      template:
-        spec:
-          containers:
-          - command:
-            - /bin/sh
-            - -c
-            - |
-              set -euo pipefail
-
-              BACKUP_DATE=$(date +%Y%m%d-%H%M%S)
-              BACKUP_DIR="/backup/${BACKUP_DATE}"
-              mkdir -p "${BACKUP_DIR}"
-
-              echo "Starting Ceph backup at ${BACKUP_DATE}"
-
-              # Backup Kubernetes secrets
-              kubectl get secret rook-ceph-mon -n rook-ceph -o yaml > "${BACKUP_DIR}/rook-ceph-mon.yaml" || echo "No rook-ceph-mon secret found"
-              kubectl get secret rook-ceph-admin-keyring -n rook-ceph -o yaml > "${BACKUP_DIR}/rook-ceph-admin-keyring.yaml" || echo "No admin keyring found"
-
-              # Backup CephCluster configuration
-              kubectl get cephcluster -n rook-ceph -o yaml > "${BACKUP_DIR}/cephcluster.yaml" || echo "No CephCluster found"
-
-              # Backup monitor endpoints
-              kubectl get configmap rook-ceph-mon-endpoints -n rook-ceph -o yaml > "${BACKUP_DIR}/mon-endpoints.yaml" || echo "No monitor endpoints found"
-
-              # Get cluster FSID for documentation
-              kubectl get secret rook-ceph-mon -n rook-ceph -o jsonpath='{.data.fsid}' | base64 -d > "${BACKUP_DIR}/cluster-fsid.txt" || echo "No FSID found"
-
-              # Create backup manifest with metadata
-              cat > "${BACKUP_DIR}/backup-manifest.yaml" <<EOF
-              apiVersion: v1
-              kind: ConfigMap
-              metadata:
-                name: backup-${BACKUP_DATE}
-                namespace: rook-ceph
-                labels:
-                  backup-type: ceph-metadata
-                  backup-date: "${BACKUP_DATE}"
-              data:
-                backup-date: "${BACKUP_DATE}"
-                cluster-fsid: "$(cat ${BACKUP_DIR}/cluster-fsid.txt 2>/dev/null || echo 'unknown')"
-                backup-status: "completed"
-              EOF
-
-              # Apply the backup manifest
-              kubectl apply -f "${BACKUP_DIR}/backup-manifest.yaml"
-
-              # Cleanup old backups (keep last 7 days)
-              find /backup -maxdepth 1 -type d -name "20*" -mtime +7 -exec rm -rf {} \; || echo "Cleanup failed"
-
-              # Cleanup old backup manifests
-              kubectl get configmaps -n rook-ceph -l backup-type=ceph-metadata --sort-by=.metadata.creationTimestamp -o name | head -n -7 | xargs -r kubectl delete || echo "Manifest cleanup failed"
-
-              echo "Backup completed successfully at ${BACKUP_DATE}"
-
-              # List current backups
-              echo "Available backups:"
-              ls -la /backup/
-            image: alpine/k8s:1.36.2
-            name: backup
-            volumeMounts:
-            - mountPath: /backup
-              name: backup-storage
-          restartPolicy: OnFailure
-          serviceAccountName: rook-ceph-backup
-          volumes:
-          - name: backup-storage
-            persistentVolumeClaim:
-              claimName: ceph-backup-pvc
-  schedule: 0 3 * * *
-  successfulJobsHistoryLimit: 3
-
--- kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster ServiceAccount: rook-ceph/rook-ceph-backup

+++ kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster ServiceAccount: rook-ceph/rook-ceph-backup

@@ -1,11 +0,0 @@

----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: rook-ceph-backup
-  namespace: rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster Role: rook-ceph/rook-ceph-backup

+++ kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster Role: rook-ceph/rook-ceph-backup

@@ -1,33 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: rook-ceph-backup
-  namespace: rook-ceph
-rules:
-- apiGroups:
-  - ''
-  resources:
-  - secrets
-  - configmaps
-  - pods
-  - pods/exec
-  verbs:
-  - get
-  - list
-  - create
-  - update
-  - patch
-  - delete
-- apiGroups:
-  - ceph.rook.io
-  resources:
-  - cephclusters
-  verbs:
-  - get
-  - list
-
--- kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster RoleBinding: rook-ceph/rook-ceph-backup

+++ kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster RoleBinding: rook-ceph/rook-ceph-backup

@@ -1,19 +0,0 @@

----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: rook-ceph-backup
-  namespace: rook-ceph
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: Role
-  name: rook-ceph-backup
-subjects:
-- kind: ServiceAccount
-  name: rook-ceph-backup
-  namespace: rook-ceph
-
--- kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster VolumeSnapshotClass: rook-ceph/csi-ceph-blockpool

+++ kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster VolumeSnapshotClass: rook-ceph/csi-ceph-blockpool

@@ -1,24 +0,0 @@

----
-apiVersion: snapshot.storage.k8s.io/v1
-deletionPolicy: Delete
-driver: rook-ceph.rbd.csi.ceph.com
-kind: VolumeSnapshotClass
-metadata:
-  annotations:
-    meta.helm.sh/release-name: rook-ceph-cluster
-    meta.helm.sh/release-namespace: rook-ceph
-  labels:
-    app.kubernetes.io/managed-by: Helm
-    app.kubernetes.io/name: rook-ceph-cluster
-    helm.toolkit.fluxcd.io/name: rook-ceph-cluster
-    helm.toolkit.fluxcd.io/namespace: rook-ceph
-    kustomize.toolkit.fluxcd.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: csi-ceph-blockpool
-  namespace: rook-ceph
-parameters:
-  clusterID: rook-ceph
-  csi.storage.k8s.io/snapshotter-secret-name: rook-csi-rbd-provisioner
-  csi.storage.k8s.io/snapshotter-secret-namespace: rook-ceph
-  pool: ceph-blockpool
-
--- kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster CephFilesystemSubVolumeGroup: rook-ceph/ceph-filesystem-csi-rwx

+++ kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster CephFilesystemSubVolumeGroup: rook-ceph/ceph-filesystem-csi-rwx

@@ -1,16 +0,0 @@

----
-apiVersion: ceph.rook.io/v1
-kind: CephFilesystemSubVolumeGroup
-metadata:
-  labels:
-    app.kubernetes.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-filesystem-csi-rwx
-  namespace: rook-ceph
-spec:
-  filesystemName: ceph-filesystem
-  name: csi-rwx
-  pinning:
-    distributed: 1
-
--- kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster StorageClass: rook-ceph/ceph-filesystem-rwx

+++ kubernetes/apps/rook-ceph/rook-ceph/cluster Kustomization: rook-ceph/rook-ceph-cluster StorageClass: rook-ceph/ceph-filesystem-rwx

@@ -1,26 +0,0 @@

----
-allowVolumeExpansion: true
-apiVersion: storage.k8s.io/v1
-kind: StorageClass
-metadata:
-  labels:
-    app.kubernetes.io/managed-by: rook-ceph
-    app.kubernetes.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/name: rook-ceph-cluster
-    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
-  name: ceph-filesystem-rwx
-parameters:
-  clusterID: eb9cbc3caaad73e9e0ef2ecdef41071f
-  csi.storage.k8s.io/controller-expand-secret-name: rook-csi-cephfs-provisioner
-  csi.storage.k8s.io/controller-expand-secret-namespace: rook-ceph
-  csi.storage.k8s.io/fstype: ext4
-  csi.storage.k8s.io/node-stage-secret-name: rook-csi-cephfs-node
-  csi.storage.k8s.io/node-stage-secret-namespace: rook-ceph
-  csi.storage.k8s.io/provisioner-secret-name: rook-csi-cephfs-provisioner
-  csi.storage.k8s.io/provisioner-secret-namespace: rook-ceph
-  fsName: ceph-filesystem
-  pool: ceph-filesystem-data0
-provisioner: rook-ceph.cephfs.csi.ceph.com
-reclaimPolicy: Delete
-volumeBindingMode: Immediate
-
--- kubernetes/apps/base/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph OCIRepository: rook-ceph/rook-ceph

+++ kubernetes/apps/base/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph OCIRepository: rook-ceph/rook-ceph

@@ -0,0 +1,19 @@

+---
+apiVersion: source.toolkit.fluxcd.io/v1
+kind: OCIRepository
+metadata:
+  labels:
+    app.kubernetes.io/name: rook-ceph
+    kustomize.toolkit.fluxcd.io/name: rook-ceph
+    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
+  name: rook-ceph
+  namespace: rook-ceph
+spec:
+  interval: 10m
+  layerSelector:
+    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
+    operation: copy
+  ref:
+    tag: v1.20.6
+  url: oci://ghcr.io/rook/rook-ceph
+
--- kubernetes/apps/base/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph HelmRelease: rook-ceph/rook-ceph

+++ kubernetes/apps/base/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph HelmRelease: rook-ceph/rook-ceph

@@ -0,0 +1,53 @@

+---
+apiVersion: helm.toolkit.fluxcd.io/v2
+kind: HelmRelease
+metadata:
+  labels:
+    app.kubernetes.io/name: rook-ceph
+    kustomize.toolkit.fluxcd.io/name: rook-ceph
+    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
+  name: rook-ceph
+  namespace: rook-ceph
+spec:
+  chartRef:
+    kind: OCIRepository
+    name: rook-ceph
+  install:
+    crds: CreateReplace
+    remediation:
+      retries: 3
+    strategy:
+      name: RetryOnFailure
+  interval: 30m
+  releaseName: rook-ceph
+  rollback:
+    cleanupOnFail: true
+    recreate: true
+  upgrade:
+    cleanupOnFail: true
+    crds: CreateReplace
+    remediation:
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
+  values:
+    crds:
+      enabled: true
+    csi:
+      enableCephfsDriver: true
+      enableCephfsSnapshotter: true
+      enableLiveness: true
+      serviceMonitor:
+        enabled: true
+    enableDiscoveryDaemon: true
+    image:
+      repository: ghcr.io/rook/ceph
+    monitoring:
+      enabled: true
+    resources:
+      limits: {}
+      requests:
+        cpu: 100m
+        memory: 128Mi
+
--- kubernetes/apps/base/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ServiceAccount: rook-ceph/cephfs-ctrlplugin-sa

+++ kubernetes/apps/base/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ServiceAccount: rook-ceph/cephfs-ctrlplugin-sa

@@ -0,0 +1,11 @@

+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  labels:
+    app.kubernetes.io/name: rook-ceph
+    kustomize.toolkit.fluxcd.io/name: rook-ceph
+    kustomize.toolkit.fluxcd.io/namespace: rook-ceph
+  name: cephfs-ctrlplugin-sa
+  namespace: rook-ceph
+
--- kubernetes/apps/base/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ServiceAccount: rook-ceph/cephfs-nodeplugin-sa

+++ kubernetes/apps/base/rook-ceph/rook-ceph/operator Kustomization: rook-ceph/rook-ceph ServiceAccount: rook-ceph/cephfs-nodeplugin-sa

@@ -0,0 +1,11 @@

+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  labels:
+    app.ku

Pure rename via migrate-ns.py. Both Kustomizations (rook-ceph operator
and rook-ceph-cluster) keep prune: false exactly as before - neither
should ever be pruned.

flux-local build renders byte-identical leaf docs and normalised
Kustomizations before/after (1880 docs, leaf=1764 ks=116 both sides,
empty diffs); flux-local test --all-namespaces passes (118/118).
@Aviator-Coding
Aviator-Coding force-pushed the fm/homeops-split-ns-lane1-s6 branch from f4468ca to b25e243 Compare August 25, 2026 00:07
@Aviator-Coding
Aviator-Coding merged commit 289d6ed into main Aug 25, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant