mirror of
https://github.com/dredx/prole.git
synced 2026-09-23 10:13:58 +00:00
Summary: Removed the prole-db-manager microservice and simplified deployment to use prole-authority as the internal management and authorization point. Fixed two blocking bugs that prevented silent install from completing on knoe-dev-cluster. Removed: prole-db-manager - Deleted db-manager-deployment.yaml and db-manager-service.yaml from opentofu manifests - Deleted src/db-manager/ (Dockerfile, server.js, package.json, tests) - Removed prole-db-manager port-forward mapping from installer/core/env.py - Removed init_db_manager.sh from Initialization Scripts (milestones.py, actions.py) - Removed init_certmgr.sh and init_db_manager.sh tabs from services screen (services.py) - Removed live k8s Deployment/Service from knoe-dev-cluster Fixed: PostgreSQL version downgrade error (pg17 -> pg18) - Created conf/postgresql/.version with value 18 - Updated k8s/prole/prole-db.yaml and prole-db-recovery.yaml.tpl imageName to prole-db:18-089 - Fixed _init_database_options_state() to restore saved version_type from prole.cfg so db_version_type defaults to v18 (pg18) instead of silently reverting to pg17 - Added database_options.* keys to _collect_input_snapshot() in cfg.py so distribution, version_type, and all extension toggles persist to prole.cfg Fixed: Cluster name inconsistency - Removed stale prole-dev-cluster references; all scripts now use knoe-dev-cluster - Added knoe-dev-cluster to mode-detection case in etc/prole_cfg.sh Config: conf/prole.cfg - Set kerberos_config.enabled = False, KERBEROS_AUTO_ENABLED = False - Added database_options.distribution = percona, version_type = v18 - Added all 13 extension flags set to True (postgis, pgvector, pgcrypto, pgaudit, pg_repack, pg_stat_statements, pg_buffercache, pg_freespacemap, pgrowlocks, postgres_fdw, dblink, pg_stat_monitor, pgbadger) Verification: ./install.py -s -l -v -c conf/prole.cfg completed successfully. CNPG deployed prole-db:18-089 to knoe-dev-cluster; all milestones passed. Co-authored-by: Junie <junie@jetbrains.com>
67 lines
2.1 KiB
Bash
Executable File
67 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
# k3d_route_fix.sh
|
|
# Purpose:
|
|
# - Ensure k3d node containers SNAT pod traffic to reach LAN services (e.g., AD DC)
|
|
# - Adds a targeted MASQUERADE rule for the pod CIDR -> AD DC IP
|
|
|
|
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
|
|
# shellcheck disable=SC1090
|
|
source "$SCRIPT_DIR/prole_cfg.sh"
|
|
|
|
log() { printf '%s\n' "$*"; }
|
|
err() { printf '%s\n' "$*" >&2; }
|
|
|
|
cluster_name="${K3D_CLUSTER_NAME:-knoe-dev-cluster}"
|
|
|
|
ad_dc_ip="${AD_DC_IP:-${KDC_ANSIBLE_DETECTED:-${KDC_AUTO_DETECTED:-}}}"
|
|
if [[ -z "$ad_dc_ip" ]]; then
|
|
err "ERROR: AD DC IP not found (set AD_DC_IP)."
|
|
exit 1
|
|
fi
|
|
|
|
pod_cidr=""
|
|
pod_cidr_raw=$(kubectl get nodes -o jsonpath='{range .items[*]}{.spec.podCIDR}{"\n"}{end}' 2>/dev/null || true)
|
|
if [[ -n "$pod_cidr_raw" ]]; then
|
|
# Use first podCIDR; for k3d this is usually a /24 within a shared /16.
|
|
first_cidr=$(printf '%s' "$pod_cidr_raw" | head -n 1 | tr -d '\r')
|
|
if [[ "$first_cidr" == */* ]]; then
|
|
pod_cidr="$first_cidr"
|
|
fi
|
|
fi
|
|
|
|
if [[ -z "$pod_cidr" ]]; then
|
|
err "ERROR: Unable to determine pod CIDR from the cluster."
|
|
exit 1
|
|
fi
|
|
|
|
# Collapse /24 to /16 when possible to cover all nodes.
|
|
if [[ "$pod_cidr" =~ ^([0-9]+\.[0-9]+)\.[0-9]+\.[0-9]+/24$ ]]; then
|
|
pod_cidr="${BASH_REMATCH[1]}.0.0/16"
|
|
fi
|
|
|
|
log "Applying k3d route fix for cluster '${cluster_name}'..."
|
|
log "Pod CIDR: ${pod_cidr}"
|
|
log "AD DC IP: ${ad_dc_ip}"
|
|
|
|
nodes=$(docker ps --format '{{.Names}}' | awk -v c="k3d-${cluster_name}-" '$0 ~ "^"c && $0 !~ /serverlb/ && $0 !~ /-tools$/ {print $0}')
|
|
if [[ -z "$nodes" ]]; then
|
|
err "ERROR: No k3d node containers found for cluster ${cluster_name}."
|
|
exit 1
|
|
fi
|
|
|
|
for node in $nodes; do
|
|
log "Updating NAT rules on ${node} ..."
|
|
if ! docker exec "$node" sh -c "command -v iptables >/dev/null 2>&1"; then
|
|
echo "WARN: iptables not found in ${node}; skipping NAT rule." >&2
|
|
continue
|
|
fi
|
|
docker exec "$node" sh -c "iptables -t nat -C POSTROUTING -s ${pod_cidr} -d ${ad_dc_ip}/32 -j MASQUERADE >/dev/null 2>&1 || \
|
|
iptables -t nat -I POSTROUTING 1 -s ${pod_cidr} -d ${ad_dc_ip}/32 -j MASQUERADE"
|
|
done
|
|
|
|
log "k3d route fix applied."
|