mirror of
https://gitlab.kube.huskypup.net/Scooby/Homelabv4.git
synced 2026-08-20 23:16:49 +00:00
Fix Kyverno OSD policy init container ordering
Use patchesJson6902 with append (/-) for create-block-db-symlink to ensure it runs after activate, not before. The patchStrategicMerge was inserting it before activate, causing prime-osd-dir to clear the symlink. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
64723eb0ba
commit
550ee8fd13
@@ -13,7 +13,7 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
background: false
|
background: false
|
||||||
rules:
|
rules:
|
||||||
- name: fix-osd-init-containers
|
- name: noop-expand-bluefs
|
||||||
match:
|
match:
|
||||||
any:
|
any:
|
||||||
- resources:
|
- resources:
|
||||||
@@ -33,31 +33,47 @@ spec:
|
|||||||
- name: expand-bluefs
|
- name: expand-bluefs
|
||||||
command: ["/bin/true"]
|
command: ["/bin/true"]
|
||||||
args: []
|
args: []
|
||||||
- name: create-block-db-symlink
|
- name: add-block-db-symlink
|
||||||
image: quay.io/ceph/ceph:v19.2.0
|
match:
|
||||||
command: ["/bin/bash", "-c"]
|
any:
|
||||||
args:
|
- resources:
|
||||||
- |
|
kinds:
|
||||||
set -e
|
- Deployment
|
||||||
# Only create block.db symlink if /dev/sdb has a valid BlueStore label
|
namespaces:
|
||||||
if ! ceph-bluestore-tool show-label --dev /dev/sdb 2>/dev/null; then
|
- rook-ceph
|
||||||
echo "No BlueStore label on /dev/sdb, skipping block.db symlink"
|
selector:
|
||||||
exit 0
|
matchLabels:
|
||||||
fi
|
app: rook-ceph-osd
|
||||||
echo "BlueStore label found on /dev/sdb"
|
mutate:
|
||||||
# Find OSD data directory under rook data path
|
patchesJson6902: |-
|
||||||
for d in /var/lib/rook/rook-ceph/*/; do
|
- op: add
|
||||||
if [ -L "$d/block" ]; then
|
path: /spec/template/spec/initContainers/-
|
||||||
ln -sf /dev/sdb "$d/block.db"
|
value:
|
||||||
echo "Created block.db -> /dev/sdb in $d"
|
name: create-block-db-symlink
|
||||||
break
|
image: quay.io/ceph/ceph:v19.2.0
|
||||||
fi
|
command: ["/bin/bash", "-c"]
|
||||||
done
|
args:
|
||||||
securityContext:
|
- |
|
||||||
privileged: true
|
set -e
|
||||||
runAsUser: 0
|
# Only create block.db symlink if /dev/sdb has a valid BlueStore label
|
||||||
volumeMounts:
|
if ! ceph-bluestore-tool show-label --dev /dev/sdb 2>/dev/null; then
|
||||||
- name: rook-data
|
echo "No BlueStore label on /dev/sdb, skipping block.db symlink"
|
||||||
mountPath: /var/lib/rook
|
exit 0
|
||||||
- name: devices
|
fi
|
||||||
mountPath: /dev
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user