Añadir deploy-lab.sh
Persistencia Real: Al usar los volúmenes -v hacia /DATA/AppData/..., los datos de ArgoCD no desaparecerán nunca aunque borres el clúster. Modo "Insecure": He automatizado el patch de server.insecure, eliminando la fricción con los certificados SSL de tu Nginx Proxy Manager. Idempotencia: El script intenta borrar el clúster y recrearlo, asegurando que siempre partas de un estado limpio pero con tus datos intactos en el disco. Recuperación automática: Al incluir el docker update --restart=always, si ZimaOS se reinicia, todos los componentes del clúster volverán a subir solos sin intervención manual.
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
#!/bin/bash
|
||||
# Script de Reconstrucción de Laboratorio - ZimaOS + k3d + ArgoCD
|
||||
set -e
|
||||
|
||||
CLUSTER_NAME="lab-cluster"
|
||||
APP_DATA_PATH="/DATA/AppData/k3d-lab"
|
||||
|
||||
echo "--- 1. Preparando directorios persistentes ---"
|
||||
sudo mkdir -p $APP_DATA_PATH/{gitea,argocd}
|
||||
sudo chmod -R 777 $APP_DATA_PATH/
|
||||
|
||||
echo "--- 2. Limpiando clúster previo (si existe) ---"
|
||||
k3d cluster delete $CLUSTER_NAME || true
|
||||
|
||||
echo "--- 3. Creando clúster con persistencia y puertos definidos ---"
|
||||
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. Aplicando persistencia de servicios (Restart Always) ---"
|
||||
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. Ajustando ArgoCD para Proxy Externo (Insecure Mode) ---"
|
||||
kubectl patch configmap argocd-cmd-params-cm -n argocd --type merge -p '{"data":{"server.insecure":"true"}}'
|
||||
kubectl rollout restart deployment argocd-server -n argocd
|
||||
|
||||
echo "--- 8. Aplicando Ingress para 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 "--- ¡Laboratorio listo! ---"
|
||||
echo "Contraseña inicial de admin:"
|
||||
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d && echo
|
||||
Reference in New Issue
Block a user