#!/bin/bash # Script Maestro Final: Laboratorio Estable (ZimaOS + k3d + ArgoCD + Headlamp) 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 ---" 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 y Kubeconfig ---" sudo docker update --restart=always $(sudo docker ps -a -q -f name=k3d) sudo chown -R $USER:$USER /DATA/.kube /DATA/.config k3d kubeconfig merge $CLUSTER_NAME --kubeconfig-switch-context echo "--- 5. Instalando ArgoCD y RBAC ---" kubectl create namespace argocd || true kubectl create serviceaccount argocd-manager -n argocd || true kubectl create clusterrolebinding argocd-manager-binding \ --clusterrole=cluster-admin \ --serviceaccount=argocd:argocd-manager || true kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml sleep 20 # Espera técnica para que los CRDs de ArgoCD se carguen kubectl patch configmap argocd-cmd-params-cm -n argocd --type merge -p '{"data":{"server.insecure":"true"}}' echo "--- 6. Creando credenciales para Headlamp ---" kubectl create namespace headlamp || true kubectl create serviceaccount headlamp-admin -n headlamp || true kubectl create clusterrolebinding headlamp-admin-binding --clusterrole=cluster-admin --serviceaccount=headlamp:headlamp-admin || true kubectl create secret generic headlamp-kubeconfig --from-file=config=/DATA/.kube/config -n headlamp --dry-run=client -o yaml | kubectl apply -f - echo "--- 7. Validando despliegue ---" kubectl wait --for=condition=Ready pods -n argocd --all --timeout=180s echo "--- 8. Aplicando Ingress ---" cat <