refactor(rook-ceph): migrate namespace to apps/base + apps/main layout - #1434
Merged
Conversation
Aviator-Coding
force-pushed
the
fm/homeops-split-ns-lane1-s6
branch
from
August 24, 2026 23:56
27a4a83 to
f4468ca
Compare
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
force-pushed
the
fm/homeops-split-ns-lane1-s6
branch
from
August 25, 2026 00:07
f4468ca to
b25e243
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
rook-cephmanifests from flatkubernetes/apps/rook-cephintokubernetes/apps/base/rook-ceph(operator, cluster, backup) with Flux overlay CRs atkubernetes/apps/main/rook-cephspec.pathvalues to./kubernetes/apps/base/rook-ceph/rook-ceph/{operator,cluster}and deepened component includes one level; both Kustomizations keepprune: falseapps/mainat./rook-ceph, dropped the inert flatapps/kustomization.yamlentry, and updated docs/AGENTS.mdpaths for the migrated layoutRisk 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
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 -> FalseEvidence: flux-local test --no-enable-helm result
118 passed in 6.35sEvidence: Layout and prune invariants (JSON)
Evidence: Operator/cluster path-build identity and scope check
Evidence: Built main rook-ceph overlay (Flux Kustomizations)
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/mainat base5339c29dand HEAD60f9c100, then canon/split leaf vs Kustomization compareflux-local test -A --path kubernetes/clusters/main --no-enable-helm(118 passed); helm-enabled attempt failed only for missing localhelmbinarykustomize build kubernetes/apps/base/rook-ceph/rook-ceph/{operator,cluster}andkubernetes/apps/main/rook-cephBefore/after kustomize build identity for operator (22 docs) and cluster (12 docs)Semantic checks: both Flux Kustomizationsprune: 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.