ProyectoIntegradoASIR

Diseño del Proyecto: Infraestructura de Alta Disponibilidad y Orquestación de Contenedores con Kubernetes sobre Proxmox

ASIR Infraestructura Kanban

📋 Tabla de Contenidos (Haz clic para desplegar)

🎯 1. Objetivos

El objetivo principal de este proyecto es diseñar, implementar y documentar una infraestructura on-premise virtualizada y de alta disponibilidad, capaz de orquestar servicios contenerizados mediante Kubernetes sobre un hipervisor Proxmox. Se busca resolver las problemáticas comunes de los sistemas monolíticos, como los tiempos de inactividad por fallos de hardware y los altos costes del escalado vertical, ofreciendo una solución moderna orientada a microservicios.

Para alcanzar este fin, se han establecido los siguientes objetivos específicos, los cuales abarcan desde la configuración física hasta la capa de aplicación:

Como objetivo deseable, y condicionado al tiempo tras asegurar la estabilidad del núcleo, se plantea la integración de un stack de monitorización utilizando Prometheus y Grafana para visualizar las métricas del clúster.


🏗️ 2. Arquitectura del Sistema

La arquitectura del sistema está diseñada bajo un enfoque de microservicios y alta disponibilidad, dividiendo la infraestructura en capas bien definidas que interactúan entre sí. Esta separación garantiza la modularidad, facilita el mantenimiento y permite el escalado horizontal.

2.1. Infraestructura Física e Hipervisor

La base del proyecto reside en un servidor dedicado físico (Host) sobre el cual se ha instalado Proxmox VE. La elección de Proxmox frente a otras soluciones como VMware ESXi se justifica por su naturaleza Open Source y su enorme flexibilidad para gestionar tanto máquinas virtuales (KVM) como contenedores LXC, actuando como una base de virtualización sólida y sin costes de licenciamiento.

2.2. Topología Lógica (Máquinas Virtuales)

Sobre Proxmox, se ha desplegado una topología lógica utilizando Ubuntu Server 24.04 LTS como sistema operativo base para todas las máquinas, garantizando la compatibilidad con las herramientas modernas de Linux.

Nota sobre Alta Disponibilidad (HA): En este diseño, la HA se centra en las Cargas de Trabajo (Workers). Se ha optado por un único nodo Master (Control Plane) debido a limitaciones de hardware del host físico. Se reconoce que en un entorno de producción real, una HA completa requeriría 3 nodos Master y un balanceador (Keepalived + HAProxy) para evitar que el Control Plane sea un punto único de fallo para la gestión del clúster.

El direccionamiento de red está configurado de forma estática (salvo el cliente) y se distribuye de la siguiente manera:

2.3. Seguridad en la Capa de Red (Segmentación)

Para mitigar riesgos de seguridad y cuellos de botella en el rendimiento, se propone (como mejora implementada o futura evolución) la segmentación del tráfico mediante VLANs:

2.4. Stack Tecnológico de Orquestación y Red

A nivel lógico y de software, la arquitectura de Kubernetes v1.30 hace uso de herramientas específicas para entornos locales (on-premise):


📊 3. Diagrama (Red / Servidores)

El diseño del sistema se ha modelado visualmente mediante un diagrama estructurado en bloques lógicos:

  1. Bloque de Automatización (Automation): Origen de la configuración. El nodo Ansible utiliza hosts.ini y ejecuta pre-requisitos.yml y Node setup ansible playbook. Seguridad: Se utiliza Ansible Vault para cifrar datos sensibles como el token_k8s.txt y credenciales de acceso.
  2. Bloque Base (Foundation): Capa de virtualización con Proxmox VE y las VMs de Ubuntu.
  3. Bloque del Clúster (Cluster): Núcleo operativo. El Control Plane gestiona el clúster, Flannel conecta los nodos, y MetalLB junto a Nginx Ingress Controller gestionan el tráfico de entrada.
  4. Bloque de Cargas de Trabajo (Workloads): Aplicaciones productivas (WordPress y Web-Demo). Para la gestión de configuraciones y credenciales, se implementan Kubernetes Secrets (para contraseñas de MySQL/WordPress) y ConfigMaps (para parámetros de Nginx).
  5. Bloque de Almacenamiento y Operaciones (Storage & Ops): * Aprovisionamiento: Se utiliza el NFS-Subdirectory-External-Provisioner. Esto define una StorageClass que permite a Kubernetes crear dinámicamente subdirectorios en el servidor NFS para cada PVC solicitado, automatizando la gestión de volúmenes.
    • Estrategia de Backup: Para eliminar el punto único de fallo del NFS, se contempla el uso de Proxmox Backup Server (PBS) para respaldos a nivel de VM y Velero para la recuperación ante desastres de los recursos de Kubernetes y sus volúmenes persistentes.

Diagrama


📋 4. Plan de Trabajo

El desarrollo se estructura bajo metodología Kanban en GitHub Projects, dividiéndose en las siguientes fases:


Proyecto Integrado de Grado Superior ASIR
© 2026 - jobopaK