diff --git a/infrastructure/kyverno/policies/fix-rook-osd-metadata-device.yaml b/infrastructure/kyverno/policies/fix-rook-osd-metadata-device.yaml index 3526bf4..347710e 100644 --- a/infrastructure/kyverno/policies/fix-rook-osd-metadata-device.yaml +++ b/infrastructure/kyverno/policies/fix-rook-osd-metadata-device.yaml @@ -13,7 +13,7 @@ metadata: spec: background: false rules: - - name: fix-osd-init-containers + - name: noop-expand-bluefs match: any: - resources: @@ -33,31 +33,47 @@ spec: - name: expand-bluefs command: ["/bin/true"] args: [] - - name: create-block-db-symlink - image: quay.io/ceph/ceph:v19.2.0 - command: ["/bin/bash", "-c"] - args: - - | - set -e - # Only create block.db symlink if /dev/sdb has a valid BlueStore label - if ! ceph-bluestore-tool show-label --dev /dev/sdb 2>/dev/null; then - echo "No BlueStore label on /dev/sdb, skipping block.db symlink" - exit 0 - fi - echo "BlueStore label found on /dev/sdb" - # Find OSD data directory under rook data path - for d in /var/lib/rook/rook-ceph/*/; do - if [ -L "$d/block" ]; then - ln -sf /dev/sdb "$d/block.db" - echo "Created block.db -> /dev/sdb in $d" - break - fi - done - securityContext: - privileged: true - runAsUser: 0 - volumeMounts: - - name: rook-data - mountPath: /var/lib/rook - - name: devices - mountPath: /dev + - name: add-block-db-symlink + match: + any: + - resources: + kinds: + - Deployment + namespaces: + - rook-ceph + selector: + matchLabels: + app: rook-ceph-osd + mutate: + patchesJson6902: |- + - op: add + path: /spec/template/spec/initContainers/- + value: + name: create-block-db-symlink + image: quay.io/ceph/ceph:v19.2.0 + command: ["/bin/bash", "-c"] + args: + - | + set -e + # Only create block.db symlink if /dev/sdb has a valid BlueStore label + if ! ceph-bluestore-tool show-label --dev /dev/sdb 2>/dev/null; then + echo "No BlueStore label on /dev/sdb, skipping block.db symlink" + exit 0 + fi + echo "BlueStore label found on /dev/sdb" + # Find OSD data directory under rook data path + for d in /var/lib/rook/rook-ceph/*/; do + if [ -L "$d/block" ]; then + ln -sf /dev/sdb "$d/block.db" + echo "Created block.db -> /dev/sdb in $d" + break + fi + done + securityContext: + privileged: true + runAsUser: 0 + volumeMounts: + - name: rook-data + mountPath: /var/lib/rook + - name: devices + mountPath: /dev