k8s multiple regions config
This commit is contained in:
@@ -4,21 +4,61 @@ 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; source "$ENV_FILE"; set +a
|
||||
set -a
|
||||
# shellcheck disable=SC1090
|
||||
source "$ENV_FILE"
|
||||
set +a
|
||||
command -v envsubst >/dev/null || { echo "envsubst is required (gettext package)" >&2; exit 2; }
|
||||
rm -rf "$OUT"; mkdir -p "$OUT"
|
||||
render_region() {
|
||||
local prefix="$1"
|
||||
|
||||
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="$(eval echo \"\${${prefix}_REGION_ID}\")"
|
||||
REGION_REPLICAS="$(eval echo \"\${${prefix}_REGION_REPLICAS}\")"
|
||||
XAI_UPSTREAM_URL="$(eval echo \"\${${prefix}_XAI_UPSTREAM_URL}\")"
|
||||
XAI_SECRET_NAME="$(eval echo \"\${${prefix}_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"
|
||||
}
|
||||
render_region ORD
|
||||
render_region IAD
|
||||
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user