#!/bin/sh # 90-kubesolo.sh — Start KubeSolo (final init stage) # # This stage exec's KubeSolo as PID 1 (replacing init). # KubeSolo manages containerd, kubelet, API server, and all K8s components. KUBESOLO_BIN="/usr/local/bin/kubesolo" if [ ! -x "$KUBESOLO_BIN" ]; then log_err "KubeSolo binary not found at $KUBESOLO_BIN" return 1 fi # Build KubeSolo command line KUBESOLO_ARGS="--path /var/lib/kubesolo --local-storage true" # Add extra SANs if hostname resolves HOSTNAME="$(hostname)" if [ -n "$HOSTNAME" ]; then KUBESOLO_ARGS="$KUBESOLO_ARGS --apiserver-extra-sans $HOSTNAME" fi # Add any extra flags from boot parameters if [ -n "$KUBESOLO_EXTRA_FLAGS" ]; then KUBESOLO_ARGS="$KUBESOLO_ARGS $KUBESOLO_EXTRA_FLAGS" fi # Add flags from persistent config file if [ -f /etc/kubesolo/extra-flags ]; then KUBESOLO_ARGS="$KUBESOLO_ARGS $(cat /etc/kubesolo/extra-flags)" fi log "Starting KubeSolo: $KUBESOLO_BIN $KUBESOLO_ARGS" log "Kubeconfig will be at: /var/lib/kubesolo/pki/admin/admin.kubeconfig" # exec replaces this init process — KubeSolo becomes PID 1 # shellcheck disable=SC2086 exec $KUBESOLO_BIN $KUBESOLO_ARGS