#!/bin/bash # Script Maestro: Despliegue Estable de Laboratorio (ZimaOS + k3d + ArgoCD) set -e CLUSTER_NAME="lab-cluster" APP_DATA_PATH="/DATA/AppData/k3d-lab" echo "--- 1. Preparando entorno ---" sudo mkdir -p $APP_DATA_PATH/{gitea,argocd} sudo chmod -R 777 $APP_DATA_PATH/ echo "--- 2. Limpiando clúster previo ---" k3d cluster delete $CLUSTER_NAME || true echo "--- 3. Creando clúster con persistencia ---" k3d cluster create $CLUSTER_NAME \ --api-port 46421 \ -p "90:80@loadbalancer" \ -p "9443:443@loadbalancer" \ -v "$APP_DATA_PATH/gitea:/var/lib/gitea" \ -v "$APP_DATA_PATH/argocd:/var/lib/argocd" \ --agents 2 echo "--- 4. Configurando reinicio automático ---" sudo docker update --restart=always $(sudo docker ps -a -q -f name=k3d) echo "--- 5. Configurando Kubeconfig ---" sudo chown -R $USER:$USER /DATA/.kube /DATA/.config k3d kubeconfig merge $CLUSTER_NAME --kubeconfig-switch-context echo "--- 6. Instalando ArgoCD ---" kubectl create namespace argocd || true kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml echo "--- 7. Validando estado del clúster (Esperando a que esté Ready) ---" echo "Esperando nodos..." kubectl wait --for=condition=Ready nodes --all --timeout=120s echo "Esperando pods de ArgoCD..." kubectl wait --for=condition=Ready pods -n argocd --all --timeout=120s echo "--- 8. Ajustando modo Insecure (Proxy-Friendly) ---" kubectl patch configmap argocd-cmd-params-cm -n argocd --type merge -p '{"data":{"server.insecure":"true"}}' kubectl rollout restart deployment argocd-server -n argocd kubectl rollout status deployment argocd-server -n argocd --timeout=60s echo "--- 9. Aplicando Ingress (Traefik) ---" cat <