76 lines
2.5 KiB
Bash
76 lines
2.5 KiB
Bash
#!/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 <<EOF | kubectl apply -f -
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: Ingress
|
|
metadata:
|
|
name: argocd-server-ingress
|
|
namespace: argocd
|
|
annotations:
|
|
traefik.ingress.kubernetes.io/router.entrypoints: web
|
|
spec:
|
|
ingressClassName: traefik
|
|
rules:
|
|
- host: argocd.cruzcloud.net
|
|
http:
|
|
paths:
|
|
- path: /
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: argocd-server
|
|
port:
|
|
number: 80
|
|
EOF
|
|
|
|
echo "=========================================================="
|
|
echo " LABORATORIO DESPLEGADO Y VALIDADO"
|
|
echo " URL: https://argocd.cruzcloud.net"
|
|
echo " Usuario: admin"
|
|
PASS=$(kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d)
|
|
echo " Password: $PASS"
|
|
echo "==========================================================" |