55 lines
2.0 KiB
Bash
Executable File
55 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
||
# ==========================================
|
||
# pause-app.sh — Shuts down the AKS cluster, preserves the disk and data
|
||
#
|
||
# What this script does:
|
||
# 1. Deletes Kubernetes objects (pods removed cleanly)
|
||
# 2. Stops the entire AKS cluster → all VMs deallocated → compute billing ~$0
|
||
# 3. The PVC disk remains intact → data is preserved
|
||
# 4. ACR continues to exist (small cost: ~$5/month)
|
||
#
|
||
# Cost during pause: ~$25/month (disk + ACR + public IP + LB)
|
||
# vs. ~$183/month when fully running
|
||
# ==========================================
|
||
set -euo pipefail
|
||
|
||
# ==========================================
|
||
# LOGGER — source the shared library
|
||
# ==========================================
|
||
# shellcheck source=lib/logger.sh
|
||
source "$(dirname "$0")/lib/logger.sh" "pause"
|
||
trap 'log_error "Failure at line $LINENO. See $LOG_FILE"' ERR
|
||
|
||
RESOURCE_GROUP="ExamApp-RG"
|
||
AKS_NAME="ExamApp-AKS"
|
||
|
||
log_info "========================================"
|
||
log_info " Vigimeteo – Pause (cost saving)"
|
||
log_info " Log: $LOG_FILE"
|
||
log_info "========================================"
|
||
|
||
# Step 1: Remove Kubernetes objects (cleanly releases resources)
|
||
if kubectl get namespace vigimeteo &>/dev/null; then
|
||
log_info "Deleting namespace vigimeteo..."
|
||
kubectl delete namespace vigimeteo
|
||
log_info "Namespace deleted."
|
||
else
|
||
log_warn "Namespace vigimeteo already absent."
|
||
fi
|
||
|
||
# Step 2: Stop the AKS cluster (deallocates all VMs — works on system node pools)
|
||
# az aks stop is preferred over nodepool scale --node-count 0 because system node
|
||
# pools cannot be scaled below minCount:1 and would return InvalidParameter.
|
||
log_info "Stopping AKS cluster '$AKS_NAME' (deallocating all VMs)..."
|
||
az aks stop \
|
||
--resource-group "$RESOURCE_GROUP" \
|
||
--name "$AKS_NAME"
|
||
log_info "AKS cluster stopped — all VMs deallocated."
|
||
|
||
log_info "========================================"
|
||
log_info "App paused."
|
||
log_info "PostgreSQL disk (PVC) is preserved."
|
||
log_info "Estimated cost: ~25 USD/month (disk + ACR + IP)"
|
||
log_info "To resume: ./resume-app.sh"
|
||
log_info "========================================"
|