FlatcarMicroCloud
Infraestructura Kubernetes con K3s y Flatcar Linux, optimizada para microservicios, monitoreo con Prometheus y Grafana, y HA para entornos caseros.
Install / Use
/learn @vhgalvez/FlatcarMicroCloudREADME
FlatcarMicroCloud: Entorno Kubernetes Optimizado para Servidores Físicos
1. Descripción General del Proyecto
FlatcarMicroCloud es una solución Kubernetes diseñada para maximizar los recursos de un servidor físico. El entorno se ejecuta sobre un servidor ProLiant DL380 G7, utilizando Rocky Linux 9.5 como sistema operativo base para virtualización, junto con AlmaLinux 9.4 en algunos nodos auxiliares. Las máquinas virtuales que componen el clúster Kubernetes utilizan Flatcar Container Linux como sistema operativo liviano y seguro.
Esta arquitectura permite desplegar aplicaciones en contenedores mediante herramientas modernas como:
- K3s, una distribución ligera de Kubernetes.
- Longhorn y NFS para almacenamiento persistente.
- Prometheus y Grafana para monitoreo y visualización avanzada.
- Redpanda y MQTT Mosquitto para comunicación asincrónica entre microservicios.
🧱 Prerrequisitos del Proyecto
📦 Sistemas Operativos Compatibles
- Rocky Linux 9.5: Sistema base para nodos de administración y servicios core.
- Flatcar Container Linux (versión estable actual): Sistema inmutable optimizado para contenedores, ideal para nodos worker y cargas K3s.
- AlmaLinux 9.4: Alternativa empresarial compatible con RHEL para nodos de infraestructura como balanceadores de carga o almacenamiento.
⚙️ Virtualización y Automatización
Hipervisor
- KVM/QEMU: Virtualización nativa de alto rendimiento para entornos Linux.
- Virt-Manager (opcional): Interfaz gráfica para la gestión de máquinas virtuales.
Provisión de Infraestructura
- Libvirt como backend de virtualización.
- Terraform con el proveedor
libvirt: Automatización del ciclo de vida de las máquinas virtuales.
2. Hardware del Servidor
- Modelo: ProLiant DL380 G7
- CPU: Intel Xeon X5650 (24 cores) @ 2.666GHz
- GPU: AMD ATI ES1000
- Memoria Total: 35 GB RAM
- Almacenamiento:
- Disco Principal: 1.5TB
- Disco Secundario: 3.0TB
Homelab Server (Servidor Físico ProLiant DL380 G7)




3. Sistemas Operativos y Virtualización
- Sistemas Operativos: Rocky Linux 9.5, Flatcar Container Linux y Alma Linux 9.4
- Virtualización: KVM con Libvirt y Virt-Manager
- Configuración de Red: VPN con WireGuard, DHCP, firewall, y configuraciones de redes virtuales (NAT y Bridge) con KVM.
- Switch y Router: Facilitan la comunicación y conectividad del clúster.
4. Resumen de Recursos para Máquinas Virtuales
| Hostname | IP | Dominio | CPU | Memoria (MB) | Disco (GB) | | ------------- | ------------ | ---------------------------------- | ------- | ---------------- | -------------- | | master1 | 10.17.4.21 | master1.cefaslocalserver.com | 2 | 4096 | 50 | | master2 | 10.17.4.22 | master2.cefaslocalserver.com | 2 | 4096 | 50 | | master3 | 10.17.4.23 | master3.cefaslocalserver.com | 2 | 4096 | 50 | | worker1 | 10.17.4.24 | worker1.cefaslocalserver.com | 2 | 4096 | 50 | | worker2 | 10.17.4.25 | worker2.cefaslocalserver.com | 2 | 4096 | 50 | | worker3 | 10.17.4.26 | worker3.cefaslocalserver.com | 2 | 4096 | 50 | | storage1 | 10.17.3.27 | storage1.cefaslocalserver.com | 2 | 2048 | 80 | | infra-cluster | 10.17.3.11 | infra-cluster.cefaslocalserver.com | 2 | 2048 | 32 | | loadbalancer1 | 10.17.3.12 | loadbalancer1.cefaslocalserver.com | 2 | 2048 | 32 | | loadbalancer2 | 10.17.3.13 | loadbalancer2.cefaslocalserver.com | 2 | 2048 | 32 | | postgresql1 | 10.17.3.14 | postgresql1.cefaslocalserver.com | 2 | 2048 | 32 | | k8s-api-lb | 192.168.0.30 | k8s-api-lb.cefaslocalserver.com | 2 | 2048 | 80 |
5. Máquinas Virtuales y Roles
| Nodo | Sistema Operativo | Función | Cantidad | | ------------------ | ----------------------- | ------------------------------------------ | -------- | | k8s-api-lb | Alma Linux | Gestión y seguridad | 1 | | Load Balancer Node | Alma Linux | Balanceo Traefik controlador de ingress | 2 | | infra-cluster Node | Alma Linux | DNS CoreDNS / NTP Chrony | 1 | | PostgreSQL Node | Alma Linux | Base de datos central para microservicios | 1 | | Master Node | Flatcar Container Linux | Administración de API de Kubernetes | 3 | | Worker Nodes | Flatcar Container Linux | Ejecución de microservicios y aplicaciones | 3 | | storage1 | Alma Linux | Almacenamiento | 1 |
6. Explicación de Roles de las VMs
-
Maestros (master1, master2, master3):
- Nodos que conforman el plano de control de Kubernetes, manejando la API y distribuyendo la carga en los nodos worker.
-
Workers (worker1, worker2, worker3):
- Nodos que ejecutan aplicaciones y microservicios, proporcionando la capacidad de escalar horizontalmente.
-
infra-cluster (infra-cluster):
- Nodo que actúa como servidor DNS CoreDNS y NTP Chrony.
-
Load Balancer (loadbalancer1, loadbalancer2):
- Nodos que distribuyen el tráfico de red entre los nodos maestros y workers, asegurando un balanceo de carga eficiente.
-
PostgreSQL (postgresql1):
- Nodo dedicado para la base de datos, proporcionando almacenamiento persistente para las aplicaciones de microservicios.
7. Fases de Implementación
7.1 Instalación y Configuración de K3s en el Clúster de Kubernetes
- Nodo Master1: Instalación de K3s y configuración inicial del clúster.
- Nodos Master y Worker: Configuración de nodos maestros y workers, desplegando Traefik como balanceador.
7.2 Configuración de PostgreSQL
| Aspecto | Configuración |
| ----------------------- | ------------------------------------------------------------------------ |
| Servidor | postgresql1.cefaslocalserver.com |
| Permisos | Ajusta permisos para permitir el acceso de microservicios en el clúster. |
| Respaldo y Recuperación | Define políticas para almacenamiento y recuperación de datos. |
7.3 Desarrollo e Implementación de Microservicios
- Redpanda: Canal de comunicación asíncrona entre microservicios.
- MQTT Mosquitto: Protocolo ligero para notificaciones en tiempo real.
- Redis: Base de datos en memoria para almacenamiento en caché y escalabilidad.
7.4 Desarrollo del Frontend con Vue.js
- Vue.js para la interfaz de usuario, conectada a APIs de FastAPI. Desplegado en el clúster con acceso a través del balanceador Traefik.
8. Automatización y Orquestación
- Terraform: Automatización de infraestructura.
- Ansible: Configuración y manejo de operaciones.
9. Pasos para la Implementación
9.1 Preparativos Iniciales
Clonar el repositorio en el servidor Rocky Linux.
Estructura del Proyecto
nat_network_01/nat_network_02/nat_network_03/
Requisitos
- Terraform v0.13 o superior
- Acceso a un servidor KVM con libvirt
9.2 Configuración de Redes Virtuales con Terraform
-
Red nat_network_01:
cd nat_network_01 sudo terraform init --upgrade sudo terraform apply -
Red nat_network_02:
cd ../nat_network_02 sudo terraform init --upgrade sudo terraform apply -
Red nat_network_03:
cd ../nat_network_03 sudo terraform init --upgrade sudo terraform apply
9.3 Instalación de VMs y Sistemas Operativos
Provisionar y configurar VMs según especificaciones en la tabla de recursos, asegurando la asignación de CPU, RAM, y almacenamiento.
9.4 Configuración de Almacenamiento Persistente
Instalar y configurar Longhorn y NFS en el clúster de Kubernetes para almacenamiento persistente.
9.5 Configuración de Monitoreo y Visualización
- Configurar Prometheus y Grafana para monitoreo.
- Configurar ELK Stack para análisis de logs y visualización de datos.
9.6 Configuración de CI/CD y Automatización
Configurar Jenkins y/o GitHub Actions para la integración continua (CI), ejecutando pruebas automáticas, análisis de código y construcción de imágenes de contenedor.
Configurar un Docker Registry (privado o público) para almacenar y versionar imágenes generadas por el proceso de CI.
Configurar ArgoCD como herramienta de despliegue continuo (CD), conectando los cambios en el repositorio con el entorno de Kubernetes mediante una estrategia GitOps.
9.7 Configuración de Seguridad
Configurar reglas de firewall, Fail2Ban y políticas de seguridad.
9.8 Sincronización y NTP
Configurar chronyc en todos los nodos para sincronización temporal.
9.9 Pruebas Finales y Puesta en Producción
- Verificar configuración de red y DNS.
- Probar despliegue de aplicaciones y monitorización de métricas.
- Asegurar que el balanceador de carga y servicios en Kubernetes estén operativos.
Siguiendo este flujo, todas las dependencias y configuraciones serán instaladas en el orden correcto y opt
Related Skills
node-connect
338.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.6kCommit, push, and open a PR
