From 32522b218a524e01f7d7259ec4b289ca39988733 Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Tue, 24 Mar 2026 14:52:53 -0700 Subject: [PATCH] =?UTF-8?q?fix(k8s):=20setup-k8s.sh=20=E2=80=94=20fail=20p?= =?UTF-8?q?hase=203=20on=20build=20errors,=20fix=20non-root=20crash?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Phase 3 now exits with error if any image builds fail, preventing mark_phase_done from running. Previously it just warned and continued, which could lead to phase 5 deploying with missing images. - Moved mkdir from top-level scope into mark_phase_done(). The old top-level mkdir -p /opt/bytelyst/.setup-state-k8s crashed non-root invocations (--status, --help) due to set -e + permission denied. - Fixed header comment: 'containerd' → 'Docker runtime' (we use --docker). - Added --resume to header usage block (was supported but undocumented). --- docs/devops/single_azure_vm/k8s/setup-k8s.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/devops/single_azure_vm/k8s/setup-k8s.sh b/docs/devops/single_azure_vm/k8s/setup-k8s.sh index 7b5478a8..7c567874 100755 --- a/docs/devops/single_azure_vm/k8s/setup-k8s.sh +++ b/docs/devops/single_azure_vm/k8s/setup-k8s.sh @@ -11,13 +11,14 @@ # What this script does: # Phase 1: Pre-flight checks (verify docker phases ran) # Phase 2: Install k3s (lightweight K8s) -# Phase 3: Build Docker images + import into k3s containerd +# Phase 3: Build Docker images (reused by k3s via --docker runtime) # Phase 4: Generate K8s secrets (JWT, etc.) # Phase 5: Apply K8s manifests (namespaces → config → infra → platform → products) # Phase 6: Health check # # Usage: # sudo ./setup-k8s.sh # Full install +# sudo ./setup-k8s.sh --resume # Auto-resume from last completed phase # sudo ./setup-k8s.sh --phase=N # Run single phase (1-6) # sudo ./setup-k8s.sh --status # Show phase status # sudo ./setup-k8s.sh --reset # Clear markers, start fresh @@ -58,10 +59,9 @@ ok() { echo -e "${GREEN} ✓ $*${NC}"; } warn() { echo -e "${YELLOW} ⚠ $*${NC}"; } fail() { echo -e "${RED} ✗ $*${NC}" >&2; exit 1; } -mkdir -p "$STATE_DIR" -mark_phase_done() { date -Iseconds > "${STATE_DIR}/phase${1}.done"; } +mark_phase_done() { mkdir -p "$STATE_DIR"; date -Iseconds > "${STATE_DIR}/phase${1}.done"; } is_phase_done() { [ -f "${STATE_DIR}/phase${1}.done" ]; } -reset_markers() { rm -f "${STATE_DIR}"/phase*.done; log "Phase markers cleared."; } +reset_markers() { rm -f "${STATE_DIR}"/phase*.done 2>/dev/null; log "Phase markers cleared."; } last_completed_phase() { local last=0 @@ -233,6 +233,10 @@ phase3_images() { log " Built: ${build_ok}, Failed: ${build_fail}" [ "$build_fail" -eq 0 ] || warn " ${build_fail} images failed to build. Fix and re-run: sudo ./setup-k8s.sh --phase=3" + if [ "$build_fail" -gt 0 ]; then + fail "Phase 3 incomplete: ${build_fail}/${total} images failed. Fix and re-run: sudo ./setup-k8s.sh --phase=3" + fi + ok "Phase 3 complete. ${build_ok}/${total} images ready." }