Proyecto fin de ciclo ASIR orientado al diseño, despliegue y operación de una infraestructura distribuida de hosting con alta disponibilidad, pensada como solución escalable y robusta para distintos servicios dentro de una red privada.
El proyecto se define como una plataforma de hosting multinodo basada en Kubernetes sobre Debian 13, con red privada Tailscale, despliegue automatizado con Kubespray/Ansible, almacenamiento persistente con Longhorn y balanceador de entrada privado mediante Tailscale Kubernetes Operator.
┌──────────────────────────────────────┐
│ Tailscale Tailnet │
│ VPN mesh cifrada (WireGuard) │
└──┬───────┬──────┬──────┬───────┬─────┘
│ │ │ │ │
┌────────┴───┐ ┌─┴────┐ │ ┌──┴───┐ ┌─┴──────┐
│debian-admin│ │nodo5 │ │ │nodo6 │ │nodo7 │
│ Ansible │ │ CP+ │ │ │ CP+ │ │ CP+ │
│ Kubespray │ │ etcd │ │ │ etcd │ │ etcd │
└────────────┘ └──────┘ │ └──────┘ └────────┘
│
┌─────────┬───────┼───────┬─────────┐
│ │ │ │ │
┌──┴────┐ ┌──┴───┐ ┌─┴────┐ ┌┴───────┐
│nodo1 │ │nodo2 │ │nodo3 │ │nodo4 │
│Worker │ │Worker│ │Worker│ │Worker │
└───────┘ └──────┘ └──────┘ └────────┘
8 VMs (VirtualBox) · Debian 13.3 Trixie · Kubernetes v1.35.1 · Calico VXLAN · containerd · chrony
| Capa | Tecnología |
|---|---|
| Virtualización | Oracle VirtualBox |
| Sistema operativo | Debian 13.3 (Trixie) |
| Red privada entre nodos | Tailscale (WireGuard) |
| Automatización y despliegue | Ansible + Kubespray |
| Orquestación de contenedores | Kubernetes v1.35.1 |
| Red del clúster (CNI) | Calico |
| Encapsulación de red entre pods | VXLAN |
| Runtime de contenedores | containerd |
| Balanceo interno de Services | kube-proxy en modo IPVS |
| DNS interno del clúster | CoreDNS + nodelocaldns |
| Sincronización horaria | chrony |
| Almacenamiento persistente | Longhorn |
| Balanceador de entrada privado | Tailscale Kubernetes Operator + ProxyGroup HA |
Pendiente de implementación o cierre funcional:
- Prometheus + Grafana
- Network Policies con Calico
| Documento | Descripción |
|---|---|
| 01 — Instalación de VMs | Creación de VMs en VirtualBox, instalación de Debian 13 y configuración de Tailscale |
| 02 — Nodo de administración | Preparación del admin: Ansible, Kubespray, claves SSH, preparación de nodos remotos |
| 03 — Despliegue de Kubespray | Configuración, ejecución, verificación, incidencias y decisiones técnicas |
| 04 — Referencia de comandos | Comandos de despliegue y comandos operativos del día a día |
| 05 — Ficha técnica y red | Inventario de nodos, versiones de software, configuración de red y mapa |
| 06 — Guía paso a paso | Checklist completa para reproducir el despliegue desde cero |
| 07 — Balanceador de carga privado | Instalación y despliegue del sistema de balanceo de carga privado con Tailscale |
| 08 — Almacenamiento persistente con Longhorn | Instalación, configuración y verificación del sistema de almacenamiento persistente |
| 09 — WordPress + MariaDB con Helm | Despliegue funcional de WordPress + MariaDB con Helm, Longhorn y Tailscale |
| 10 — Validación operativa del clúster | Índice de evidencias, scripts y resultados de validación operativa |
pim_infra_multinodo/
├── README.md ← Este fichero
├── docs/
│ ├── 01_instalacion_vms.md
│ ├── 02_nodo_administracion.md
│ ├── 03_despliegue_kubespray.md
│ ├── 04_comandos.md
│ ├── 05_ficha_tecnica_red.md
│ ├── 06_guia_paso_a_paso.md
│ ├── 07_balanceador_tailscale.md
│ ├── 08_longhorn.md
│ ├── 09_wordpress_mariadb_helm.md
│ └── 10_validacion_operativa.md
├── evidencias/
│ ├── scripts/
│ └── testing/
├── kubespray/
│ └── inventory/
│ └── lab/
│ ├── inventory.ini
│ └── group_vars/
│ ├── all/
│ │ ├── all.yml
│ │ └── download.yml
│ └── k8s_cluster/
│ ├── k8s-cluster.yml
│ └── k8s-net-calico.yml
├── manifests/
│ ├── longhorn/
│ ├── tailscale/
│ ├── testing/
│ └── wordpress_mariadb/
├── logs/ ← Logs de despliegue (excluidos de git)
└── .gitignore
Kubespray se clona como repositorio independiente (~/kubespray) y no se modifica. Los playbooks se ejecutan desde allí apuntando al inventario de este repositorio con -i.
- Laboratorio multinodo sobre 8 VMs
- Clúster Kubernetes funcional (3 control-plane + 4 workers)
- Red privada Tailscale operativa
- Despliegue automatizado con Kubespray
- Verificación funcional inicial del clúster (nginx ×4 réplicas)
- Almacenamiento persistente con Longhorn desplegado
-
StorageClasslonghornconfigurada como clase por defecto - Publicación privada de la UI de Longhorn mediante
ServiceLoadBalancersobre Tailscale - Sistema de balanceo de entrada privado implantado con Tailscale Operator
- Capa de entrada redundante mediante ProxyGroup
- Publicación privada de interfaces internas mediante
ServiceLoadBalancer - WordPress + MariaDB desplegado mediante Helm, Longhorn y Tailscale
- Documentación técnica del despliegue base, del balanceador, del almacenamiento persistente y del servicio WordPress
- Validación operativa documentada con evidencias reproducibles
- Prometheus + Grafana
- Integración de más servicios reales sobre el balanceador privado
# En debian-admin
cd ~/kubespray
source .venv/bin/activate
# Verificar conectividad
ansible -i ~/pim_infra_multinodo/kubespray/inventory/lab/inventory.ini all -m ping -b
# Ver estado del clúster
kubectl get nodes
kubectl get pods -A
# Ver estado del almacenamiento
kubectl get pods -n longhorn-system
kubectl get pvc,pv -A
# Ver estado del operador de balanceo
kubectl get pods -n tailscale
kubectl get proxygroup