SkillAgentSearch skills...

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/FlatcarMicroCloud
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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)

ProLiant DL380 G7

Virtualizacion KVM

Servidor en Rack

Servidor en Rack

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

  1. Nodo Master1: Instalación de K3s y configuración inicial del clúster.
  2. 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

View on GitHub
GitHub Stars70
CategoryDevelopment
Updated21d ago
Forks16

Languages

Shell

Security Score

95/100

Audited on Mar 6, 2026

No findings