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." }