railiance-cluster/tests/smoke_kube.sh

66 lines
3.3 KiB
Bash
Raw Normal View History

2025-09-12 01:46:14 +02:00
#!/usr/bin/env bash
set -euo pipefail
PASS=0
FAIL=0
ok() { echo "[OK] $*"; ((PASS++)) || true; }
fail() { echo "[FAIL] $*"; ((FAIL++)) || true; }
# ── Node Ready ───────────────────────────────────────────────────────────────
if kubectl get nodes 2>/dev/null | grep -q " Ready"; then
ok "Node(s) in Ready state"
else
fail "No nodes in Ready state"
fi
# ── Helm ─────────────────────────────────────────────────────────────────────
if helm version --short &>/dev/null; then
ok "helm version: $(helm version --short)"
else
fail "helm not available or erroring"
fi
# ── CoreDNS ──────────────────────────────────────────────────────────────────
if kubectl get pods -n kube-system -l k8s-app=kube-dns 2>/dev/null | grep -q "Running"; then
ok "CoreDNS pod running in kube-system"
else
fail "CoreDNS pod not running in kube-system"
fi
# ── Traefik ──────────────────────────────────────────────────────────────────
if kubectl get pods -n kube-system -l app.kubernetes.io/name=traefik 2>/dev/null | grep -q "Running"; then
ok "Traefik ingress controller running in kube-system"
else
fail "Traefik ingress controller not running in kube-system"
fi
# ── postgresql-ha pods ───────────────────────────────────────────────────────
PG_NOT_RUNNING=$(kubectl get pods -n default -l app.kubernetes.io/name=postgresql-ha 2>/dev/null \
| grep -v "^NAME" | grep -v " Running " | wc -l)
if kubectl get pods -n default -l app.kubernetes.io/name=postgresql-ha 2>/dev/null | grep -q "Running"; then
if [[ "$PG_NOT_RUNNING" -eq 0 ]]; then
ok "All postgresql-ha pods Running"
else
fail "${PG_NOT_RUNNING} postgresql-ha pod(s) not in Running state"
fi
else
fail "No postgresql-ha pods found (is Gitea deployed?)"
fi
# ── pgpool (D3 requirement) ───────────────────────────────────────────────────
# pgpool CrashLoopBackOff is silent and only surfaces on pod restart/failover.
# A passing check here means the pgpool-password secret key is present.
PGPOOL_STATE=$(kubectl get pods -n default -l app.kubernetes.io/component=pgpool 2>/dev/null \
| grep -v "^NAME" | awk '{print $3}' | head -1)
if [[ "$PGPOOL_STATE" == "Running" ]]; then
ok "pgpool pod Running"
else
fail "pgpool pod not Running (state: ${PGPOOL_STATE:-not found}) — check pgpool-password secret key"
fi
# ── Summary ──────────────────────────────────────────────────────────────────
echo ""
echo "Results: ${PASS} passed, ${FAIL} failed"
[[ "$FAIL" -eq 0 ]]