From ada1e3f8a774741e82a36e70a5cf31cc2316e8f3 Mon Sep 17 00:00:00 2001 From: Vaibhav Pathak Date: Wed, 21 Jan 2026 15:02:31 +0530 Subject: [PATCH] Updated flow for allhost entry --- .../workflow-template.yaml | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/environment-provisioner/workflow-template.yaml b/environment-provisioner/workflow-template.yaml index 48e7315..af3aa84 100644 --- a/environment-provisioner/workflow-template.yaml +++ b/environment-provisioner/workflow-template.yaml @@ -895,5 +895,72 @@ spec: kubectl exec -n "$NAMESPACE" "$MYSQL_POD" -- mysql -u "$MYSQL_USER" -p"$MYSQL_PWD" "$MYSQL_DB" -e \ "SELECT a.name as app_name, i.ipaddress FROM apps a JOIN app_ips_accesses i ON a.id = i.app_id WHERE i.is_deleted = 0 ORDER BY a.name, i.ipaddress" 2>/dev/null || echo "Could not retrieve summary" + # Update allhosts ConfigMap with registered services + echo "" + echo "=== Updating allhosts.tsv ConfigMap ===" + + CONFIGMAP_NAME="hades-allhosts" + + # Check if ConfigMap exists + if kubectl get configmap "$CONFIGMAP_NAME" -n "$NAMESPACE" >/dev/null 2>&1; then + echo "Found allhosts ConfigMap: $CONFIGMAP_NAME" + + # Get current content + CURRENT_CONTENT=$(kubectl get configmap "$CONFIGMAP_NAME" -n "$NAMESPACE" -o jsonpath='{.data.allhosts\.tsv}') + + # Build new entries for each service + NEW_ENTRIES="" + for service in $SERVICES_LIST; do + service=$(echo "$service" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') + [ -z "$service" ] && continue + + # Skip resource references + if echo "$service" | grep -q "^resource:"; then + continue + fi + + # Get pod IP for this service + POD_IP=$(kubectl get pods -n "$NAMESPACE" \ + -l "app.kubernetes.io/instance=${NAMESPACE}-${service}" \ + -o jsonpath='{.items[0].status.podIP}' 2>/dev/null) || POD_IP="" + + if [ -z "$POD_IP" ]; then + POD_IP=$(kubectl get pods -n "$NAMESPACE" \ + -l "backstage.io/kubernetes-id=${service}" \ + -o jsonpath='{.items[0].status.podIP}' 2>/dev/null) || POD_IP="" + fi + + if [ -n "$POD_IP" ]; then + HOSTNAME="${service}.${NAMESPACE}.onlinesales.ai" + # Check if entry already exists + if ! echo "$CURRENT_CONTENT" | grep -q "^${HOSTNAME}[[:space:]]"; then + NEW_ENTRY="${HOSTNAME}\t${POD_IP}\t${service}\tplatform\tk8s.pod" + NEW_ENTRIES="${NEW_ENTRIES}${NEW_ENTRY}\n" + echo " Adding: $HOSTNAME -> $POD_IP" + else + echo " Skipping (exists): $HOSTNAME" + fi + fi + done + + if [ -n "$NEW_ENTRIES" ]; then + # Append new entries to content + UPDATED_CONTENT="${CURRENT_CONTENT} + $(echo -e "$NEW_ENTRIES")" + + # Patch the ConfigMap + kubectl create configmap "$CONFIGMAP_NAME" -n "$NAMESPACE" \ + --from-literal="allhosts.tsv=${UPDATED_CONTENT}" \ + --dry-run=client -o yaml | kubectl apply -f - + + echo "ConfigMap updated successfully" + else + echo "No new entries to add" + fi + else + echo "Warning: allhosts ConfigMap not found in namespace $NAMESPACE" + echo "Skipping ConfigMap update" + fi + echo "" echo "Hades IP registration completed"