mirror of
https://github.com/dredx/prole.git
synced 2026-09-24 14:54:34 +00:00
- persist and load DB master password via Ansible Vault bootstrap flow - enforce knoe-system service namespace and explicit app/db kubecontext targeting - improve OpenBao/CNPG deploy reliability and logging; add retries/readiness diagnostics - tighten reset/delete cluster behavior and expand installer/deploy pipeline test coverage Co-authored-by: Junie <junie@jetbrains.com>
168 lines
4.7 KiB
Bash
168 lines
4.7 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
PROLE_HOME_REPO=$(cd "$SCRIPT_DIR/../.." && pwd)
|
|
SCRIPT_UNDER_TEST="$PROLE_HOME_REPO/etc/status_common_services.sh"
|
|
|
|
TMP_DIR=$(mktemp -d)
|
|
trap 'rm -rf "$TMP_DIR"' EXIT
|
|
export TMP_DIR
|
|
|
|
BIN_DIR="$TMP_DIR/bin"
|
|
mkdir -p "$BIN_DIR"
|
|
|
|
cat <<'K_EOF' >"$BIN_DIR/kubectl"
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
_log_file="${TMP_DIR}/mock_calls.log"
|
|
args="$*"
|
|
echo "$args" >>"${_log_file}"
|
|
|
|
if [[ "$args" == *"opentofu"* ]]; then
|
|
echo "$args" >>"${TMP_DIR}/opentofu_calls.log"
|
|
echo "Error from server (NotFound): opentofu removed" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "$args" == "config current-context" ]]; then
|
|
echo "gke_plenary-truck-485623-p7_us-west3_knoe-dev-0"
|
|
exit 0
|
|
fi
|
|
|
|
if [[ "$args" == "config view --minify -o jsonpath={.clusters[0].cluster.server}" ]]; then
|
|
echo "https://34.106.133.94"
|
|
exit 0
|
|
fi
|
|
|
|
if [[ "$args" == "-n test-ns get svc garage openbao" ]]; then
|
|
cat <<'EOF'
|
|
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
|
garage ClusterIP 34.118.228.37 <none> 3900/TCP,3901/TCP,3903/TCP 30m
|
|
openbao ClusterIP 34.118.231.12 <none> 8200/TCP 31m
|
|
EOF
|
|
exit 0
|
|
fi
|
|
|
|
if [[ "$args" == "-n test-ns get svc knoe-svc-kong" ]]; then
|
|
echo "NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE"
|
|
echo "knoe-svc-kong ClusterIP 34.118.226.103 <none> 8000/TCP 26m"
|
|
exit 0
|
|
fi
|
|
|
|
if [[ "$args" == "-n cert-manager get svc cert-manager cert-manager-webhook" ]]; then
|
|
echo "NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE"
|
|
echo "cert-manager ClusterIP 34.118.236.229 <none> 9402/TCP 30m"
|
|
echo "cert-manager-webhook ClusterIP 34.118.232.148 <none> 443/TCP 30m"
|
|
exit 0
|
|
fi
|
|
|
|
if [[ "$args" == "-n test-ns get statefulset openbao" ]]; then
|
|
echo "NAME READY AGE"
|
|
echo "openbao 1/1 31m"
|
|
exit 0
|
|
fi
|
|
|
|
if [[ "$args" == "-n test-ns get statefulset garage" ]]; then
|
|
echo "NAME READY AGE"
|
|
echo "garage 1/1 30m"
|
|
exit 0
|
|
fi
|
|
|
|
if [[ "$args" == "-n test-ns get deploy knoe-svc-kong" ]]; then
|
|
echo "NAME READY UP-TO-DATE AVAILABLE AGE"
|
|
echo "knoe-svc-kong 1/1 1 1 27m"
|
|
exit 0
|
|
fi
|
|
|
|
if [[ "$args" == "-n cert-manager get deploy cert-manager cert-manager-cainjector cert-manager-webhook" ]]; then
|
|
echo "NAME READY UP-TO-DATE AVAILABLE AGE"
|
|
echo "cert-manager 1/1 1 1 31m"
|
|
echo "cert-manager-cainjector 1/1 1 1 31m"
|
|
echo "cert-manager-webhook 1/1 1 1 30m"
|
|
exit 0
|
|
fi
|
|
|
|
# check_resource queries
|
|
if [[ "$args" == "-n test-ns get svc garage" || "$args" == "-n test-ns get svc openbao" || "$args" == "-n test-ns get svc knoe-svc-kong" ]]; then
|
|
exit 0
|
|
fi
|
|
if [[ "$args" == "-n cert-manager get svc cert-manager" || "$args" == "-n cert-manager get svc cert-manager-webhook" ]]; then
|
|
exit 0
|
|
fi
|
|
if [[ "$args" == "-n test-ns get statefulset openbao" || "$args" == "-n test-ns get statefulset garage" ]]; then
|
|
exit 0
|
|
fi
|
|
if [[ "$args" == "-n test-ns get deploy knoe-svc-kong" ]]; then
|
|
exit 0
|
|
fi
|
|
if [[ "$args" == "-n cert-manager get deploy cert-manager" || "$args" == "-n cert-manager get deploy cert-manager-cainjector" || "$args" == "-n cert-manager get deploy cert-manager-webhook" ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
if [[ "$args" == "-n test-ns get pods --no-headers" ]]; then
|
|
cat <<'EOF'
|
|
garage-0 1/1 Running 0 30m
|
|
openbao-0 1/1 Running 0 32m
|
|
knoe-svc-kong-f685786f-rgtwl 1/1 Running 0 27m
|
|
EOF
|
|
exit 0
|
|
fi
|
|
|
|
if [[ "$args" == "-n cert-manager get pods --no-headers" ]]; then
|
|
cat <<'EOF'
|
|
cert-manager-7b67f8d7d8-gsf2t 1/1 Running 0 31m
|
|
cert-manager-cainjector-76f94d9655-blqd9 1/1 Running 0 31m
|
|
cert-manager-webhook-7b86d8b889-l88kr 1/1 Running 0 31m
|
|
EOF
|
|
exit 0
|
|
fi
|
|
|
|
exit 0
|
|
K_EOF
|
|
chmod +x "$BIN_DIR/kubectl"
|
|
|
|
CFG_DIR="$TMP_DIR/conf"
|
|
mkdir -p "$CFG_DIR"
|
|
|
|
cat <<C_EOF >"$CFG_DIR/prole.cfg"
|
|
[User]
|
|
NAMESPACE = test-ns
|
|
SERVICE_NAMESPACE = test-ns
|
|
KONG_NAMESPACE = test-ns
|
|
CERT_MANAGER_NAMESPACE = cert-manager
|
|
|
|
[Global]
|
|
DEPLOYMENT_MODE = k8s
|
|
C_EOF
|
|
|
|
export PATH="$BIN_DIR:$PATH"
|
|
|
|
set +e
|
|
KONG_NAME=knoe-svc-kong bash "$SCRIPT_UNDER_TEST" -c "$CFG_DIR/prole.cfg" --mode k8s -n test-ns >"$TMP_DIR/stdout" 2>"$TMP_DIR/stderr"
|
|
RC=$?
|
|
set -e
|
|
|
|
if [[ $RC -ne 0 ]]; then
|
|
echo "FAILURE: expected status_common_services.sh to succeed in k8s mode without OpenTofu" >&2
|
|
sed -n '1,240p' "$TMP_DIR/stdout" >&2 || true
|
|
sed -n '1,240p' "$TMP_DIR/stderr" >&2 || true
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -s "$TMP_DIR/opentofu_calls.log" ]]; then
|
|
echo "FAILURE: expected no OpenTofu kubectl calls in k8s mode" >&2
|
|
sed -n '1,240p' "$TMP_DIR/opentofu_calls.log" >&2 || true
|
|
sed -n '1,240p' "$TMP_DIR/mock_calls.log" >&2 || true
|
|
exit 1
|
|
fi
|
|
|
|
if ! grep -q "skipping OpenTofu service check" "$TMP_DIR/stdout"; then
|
|
echo "FAILURE: expected informational OpenTofu skip message" >&2
|
|
sed -n '1,240p' "$TMP_DIR/stdout" >&2 || true
|
|
exit 1
|
|
fi
|
|
|
|
echo "SUCCESS"
|