Skip to content

Commit 45ede35

Browse files
committed
node-installer: add D-Bus installation for systemd cgroup support
This commit ensures D-Bus is running before restarting services when using systemd cgroups and adds integration test for it. Signed-off-by: Jiaxiao (mossaka) Zhou <[email protected]>
1 parent 72c6e5b commit 45ede35

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

node-installer/integration-test.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ echo "Waiting for node installer job to complete..."
4343
kubectl --context=kind-spin-test wait -n kwasm --for=condition=Ready pod --selector=job-name=spin-test-control-plane-provision-kwasm --timeout=90s || true
4444
kubectl --context=kind-spin-test wait -n kwasm --for=jsonpath='{.status.phase}'=Succeeded pod --selector=job-name=spin-test-control-plane-provision-kwasm --timeout=60s
4545

46+
# Verify the SystemdCgroup is set to true
47+
docker exec spin-test-control-plane cat /etc/containerd/config.toml | grep -A5 "spin" | grep "SystemdCgroup = true"
48+
4649
if ! kubectl --context=kind-spin-test get pods -n kwasm | grep -q "spin-test-control-plane-provision-kwasm.*Completed"; then
4750
echo "Node installer job failed!"
4851
kubectl --context=kind-spin-test logs -n kwasm $(kubectl --context=kind-spin-test get pods -n kwasm -o name | grep spin-test-control-plane-provision-kwasm)

node-installer/script/installer.sh

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,30 @@ IS_MICROK8S=false
1111
IS_K3S=false
1212
IS_RKE2_AGENT=false
1313
IS_K0S_WORKER=false
14+
# Set default cgroup driver to systemd
15+
SYSTEMD_CGROUP=true
16+
17+
# Install D-Bus if it's not available but systemd cgroups are requested
18+
if [ "$SYSTEMD_CGROUP" = "true" ]; then
19+
# Check if D-Bus daemon exists
20+
if ! nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which dbus-daemon >/dev/null 2>&1; then
21+
if nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which apt-get >/dev/null 2>&1; then
22+
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- apt-get update -y
23+
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- apt-get install -y dbus
24+
elif nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which yum >/dev/null 2>&1; then
25+
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- yum install -y dbus
26+
elif nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which dnf >/dev/null 2>&1; then
27+
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- dnf install -y dbus
28+
elif nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which apk >/dev/null 2>&1; then
29+
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- apk add dbus
30+
else
31+
echo "WARNING: Could not install D-Bus. No supported package manager found."
32+
SYSTEMD_CGROUP=false
33+
echo "SYSTEMD_CGROUP is now set to $SYSTEMD_CGROUP"
34+
fi
35+
fi
36+
fi
37+
1438
if pgrep -f snap/microk8s > /dev/null; then
1539
CONTAINERD_CONF=/var/snap/microk8s/current/args/containerd-template.toml
1640
IS_MICROK8S=true
@@ -43,13 +67,19 @@ if ! grep -q spin $NODE_ROOT$CONTAINERD_CONF; then
4367
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.spin]
4468
runtime_type = "'$KWASM_DIR'/bin/containerd-shim-spin-v2"
4569
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.spin.options]
46-
SystemdCgroup = true
70+
SystemdCgroup = '$SYSTEMD_CGROUP'
4771
' >> $NODE_ROOT$CONTAINERD_CONF
4872
rm -Rf $NODE_ROOT$KWASM_DIR/active
4973
fi
5074

5175
if [ ! -f $NODE_ROOT$KWASM_DIR/active ]; then
5276
touch $NODE_ROOT$KWASM_DIR/active
77+
78+
# Ensure D-Bus is running before restarting services if using systemd cgroups
79+
if [ "$SYSTEMD_CGROUP" = "true" ]; then
80+
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- systemctl restart dbus
81+
fi
82+
5383
if $IS_MICROK8S; then
5484
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- systemctl restart snap.microk8s.daemon-containerd
5585
elif $IS_K3S; then

0 commit comments

Comments
 (0)