Files
tia_regional_xai_tts_pool/scripts/render-regional-k8s.sh

65 lines
2.2 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
ENV_FILE="${1:-$ROOT/k8s/regional/regions.env}"
OUT="${2:-$ROOT/k8s/regional/rendered}"
[[ -f "$ENV_FILE" ]] || { echo "Missing $ENV_FILE (copy regions.env.example)" >&2; exit 2; }
set -a
# shellcheck disable=SC1090
source "$ENV_FILE"
set +a
command -v envsubst >/dev/null || { echo "envsubst is required (gettext package)" >&2; exit 2; }
XAI_TARGETS="${XAI_TARGETS:-${XAI_REGIONS:-}}"
[[ -n "${XAI_TARGETS// }" ]] || {
echo 'XAI_TARGETS is required. Example: XAI_TARGETS="ORD IAD GRU"' >&2
exit 2
}
rm -rf "$OUT"
mkdir -p "$OUT"
required_target_var() {
local target="$1" suffix="$2" var value
var="${target}_${suffix}"
value="${!var:-}"
[[ -n "$value" ]] || { echo "Missing required configuration: $var" >&2; exit 2; }
printf '%s' "$value"
}
render_target() {
local target="$1"
[[ "$target" =~ ^[A-Za-z_][A-Za-z0-9_]*$ ]] || {
echo "Invalid XAI target '$target'. Use letters, numbers and underscores only." >&2
exit 2
}
export REGION_ID REGION_REPLICAS XAI_UPSTREAM_URL XAI_SECRET_NAME
REGION_ID="$(required_target_var "$target" REGION_ID)"
REGION_REPLICAS="$(required_target_var "$target" REGION_REPLICAS)"
XAI_UPSTREAM_URL="$(required_target_var "$target" XAI_UPSTREAM_URL)"
XAI_SECRET_NAME="$(required_target_var "$target" XAI_SECRET_NAME)"
[[ "$REGION_ID" =~ ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ ]] || {
echo "Invalid ${target}_REGION_ID='$REGION_ID'. Use a lowercase Kubernetes label." >&2
exit 2
}
[[ ! -e "$OUT/deployment-${REGION_ID}.yaml" ]] || {
echo "Duplicate REGION_ID '$REGION_ID'. Each target must have a unique REGION_ID." >&2
echo "For multiple pools in one OCI region use ids such as ord-primary and ord-secondary." >&2
exit 2
}
envsubst < "$ROOT/k8s/regional/deployment-region.yaml" > "$OUT/deployment-${REGION_ID}.yaml"
envsubst < "$ROOT/k8s/regional/hpa-region.yaml" > "$OUT/hpa-${REGION_ID}.yaml"
echo "Rendered target=$target region_id=$REGION_ID"
}
for target in $XAI_TARGETS; do
render_target "$target"
done
envsubst < "$ROOT/k8s/regional/service.yaml" > "$OUT/service.yaml"
envsubst < "$ROOT/k8s/regional/pdb.yaml" > "$OUT/pdb.yaml"
echo "Rendered manifests in $OUT"