apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
  name: "rook-ceph"
  namespace: "rook-ceph"
spec:
  monitoring:
    enabled: true
  cephVersion:
    image: "quay.io/ceph/ceph:v19.2.3-20250717"
    allowUnsupported: false
    imagePullPolicy: IfNotPresent
  cleanupPolicy:
    allowUninstallWithVolumes: false
    confirmation: ""
    sanitizeDisks:
      dataSource: zero
      iteration: 1
      method: quick
  continueUpgradeAfterChecksEvenIfNotHealthy: false
  crashCollector:
    disable: false
  csi:
    readAffinity:
      enabled: true
  dashboard:
    enabled: true
    ssl: false
  dataDirHostPath: /var/lib/rook
  disruptionManagement:
    managePodBudgets: true
    osdMaintenanceTimeout: 30
  healthCheck:
    daemonHealth:
      mon:
        disabled: false
        interval: 45s
      osd:
        disabled: false
        interval: 60s
      status:
        disabled: false
        interval: 60s
    livenessProbe:
      mgr:
        disabled: false
      mon:
        disabled: false
      osd:
        disabled: false
  logCollector:
    enabled: true
    maxLogSize: 500M
    periodicity: daily
  mgr:
    allowMultiplePerNode: false
    count: 2
    modules:
      - enabled: true
        name: pg_autoscaler
      - enabled: true
        name: rook
      - enabled: true
        name: volumes
  mon:
    allowMultiplePerNode: false
    count: 3
  network:
    connections:
      compression:
        enabled: true
      encryption:
        enabled: true
      requireMsgr2: true
  placement:
    all:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
            - matchExpressions:
                - key: node-role.kubernetes.io/rook-osd-node
                  operator: Exists
    mon:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
            - matchExpressions:
                - key: node-role.kubernetes.io/rook-mon-node
                  operator: Exists
                - key: node-role.kubernetes.io/control-plane
                  operator: Exists
      tolerations:
        - key: node-role.kubernetes.io/rook-mon-node
          operator: Exists
        - key: node-role.kubernetes.io/control-plane
          operator: Exists
  priorityClassNames:
    mgr: system-cluster-critical
    mon: system-node-critical
    osd: system-node-critical
  removeOSDsIfOutAndSafeToRemove: false
  resources:
    cleanup:
      limits:
        memory: 1Gi
      requests:
        cpu: 500m
        memory: 100Mi
    crashcollector:
      limits:
        memory: 60Mi
      requests:
        cpu: 100m
        memory: 60Mi
    exporter:
      limits:
        memory: 128Mi
      requests:
        cpu: 50m
        memory: 50Mi
    logcollector:
      limits:
        memory: 1Gi
      requests:
        cpu: 100m
        memory: 100Mi
    mgr:
      limits:
        memory: 1Gi
      requests:
        cpu: 100m
        memory: 512Mi
    mgr-sidecar:
      limits:
        memory: 100Mi
      requests:
        cpu: 100m
        memory: 40Mi
    mon:
      limits:
        memory: 2Gi
      requests:
        cpu: 200m
        memory: 256Mi
    osd:
      limits:
        memory: 4Gi
      requests:
        cpu: 100m
        memory: 2Gi
    prepareosd:
      requests:
        cpu: 100m
        memory: 128Mi
  skipUpgradeChecks: false
  storage:
    config:
      osdsPerDevice: "1"
    devicePathFilter: /dev/disk/by-partlabel/r-csi-disk
    useAllDevices: false
    useAllNodes: true
  upgradeOSDRequiresHealthyPGs: false
  waitTimeoutForHealthyOSDInMinutes: 10
