# 🚀 Guía y Presentación del Clúster Kubernetes en SUSE Este repositorio contiene los **manifiestos, scripts y documentación** para desplegar y gestionar un clúster Kubernetes basado en **SUSE Linux**. Además, incluye una explicación visual y sencilla de la arquitectura y componentes del clúster. --- ## 1. 🌍 Visión general del clúster * **Kubernetes 1.33 (vainilla)** → versión estándar, instalamos todas las piezas manualmente. * **Dos sites (A y B)** con **dos servidores cada uno**. * Plan: añadir un **tercer site con nodo árbitro**: * Su función será **desempatar** si un site cae y mantener coherencia. | Site | Servidores | Discos Ceph | | ---- | ---------- | ----------- | | A | 2 hosts | 12 discos | | B | 2 hosts | 12 discos | | C | 1 árbitro | - | --- ## 2. 🔧 Componentes básicos ### 2.1. Runtime de contenedores * Usamos **containerd** (Docker ya no es soportado directamente por Kubernetes). ### 2.2. Red * **Flannel** ➝ conecta los pods entre nodos. * **Multus** ➝ permite varias interfaces de red por pod (**NAD**). ### 2.3. Almacenamiento * **Ceph distribuido**: * 24 discos en total (6 por servidor). * **Replica 4** ➝ soporta caída de un site completo. * Requiere el **quinto nodo árbitro** para quorum real. * Se expone a Kubernetes como un **StorageClass** (plantilla de volúmenes). ### 2.4. Balanceo de IPs * **MetalLB** ➝ asigna **IPs virtuales** a servicios. --- ## 3. 🌐 Redes y servicios * Dos redes: * 🔧 **br-admin** ➝ administración interna. * 🌐 **br-servicios** ➝ servicios para clientes. * Los servicios se exponen en una u otra red con `loadBalancerIP`. | Tipo de servicio | Red usada | | ---------------- | -------------- | | Clientes finales | Servicios | | Internos | Administración | ### 3.1. Ingress y certificados * **Ingress NGINX** ➝ gestiona el tráfico HTTP/HTTPS. * **cert-manager** ➝ emite certificados SSL. * Ingress está en ambas redes ➝ permite pedir certificados en cualquiera. --- ## 4. 🔒 Seguridad y acceso remoto ### 4.1. VPN (WireGuard) * Usamos **wg-easy**: * Instancias ilimitadas (clientes o internos). * Cada una restringe acceso a ciertas redes. ### 4.2. DNS interno * **CoreDNS interno** ➝ split-DNS. * Clientes VPN usan este DNS. ### 4.3. Control de accesos * **ACLs en ingress** restringen apps por usuario/red. * Combinando **VPN + DNS interno + ACLs** ➝ control de accesos flexible. --- ## 5. 🧩 Integraciones adicionales ### 5.1. Proxy externo * Servicio **external** ➝ acceso a servicios web fuera del clúster: * Firewalls 🔥 * Consolas iLO 🖥️ * Cabinas de almacenamiento 💾 ### 5.2. Virtualización * **KubeVirt** ➝ ejecutar máquinas virtuales en Kubernetes. * **Dashboard** para gestionarlas. * **iso-server** ➝ sirve ISOs por HTTPS (subidas vía Samba). --- ## 6. 📚 Índice de documentos y referencias cruzadas | Documento | Descripción | Referencia | | --------------------------- | --------------------------------------------- | ---------------------------------- | | `estructura_manifiestos.md` | Explicación de nuestra estructura de manifiestos | [Ver](estructura_manifiestos.md) | | `cluster_init.md` | Proceso de inicialización del cluster en SUSE | [Ver](cluster_init.md) | | `redes_internet.md` | MetalLB, Multus y demás | [Ver](redes_internet.md) | | `ingress.md` | Capítulo de cert-manager e ingress | [Ver](ingress.md) | | `cephrook.md` | Instalación e integración de Ceph/Rook | [Ver](./cephrook.md) | | `kubevirt\readme.md` | Despliegue de KubeVirt y gestión de VMs | [Ver](./kubevirt/readme.md) | | `vm-windows-demo\readme.md` | Máquina virtual de ejemplo | [Ver](./vm-windows-demo/readme.md) | | `comprobaciones.md` | Checklist tras cada paso crítico | [Ver](./comprobaciones.md) | | `script_limpieza.md` | Script para limpiar un nodo | [Ver](script_limpieza.md) | | `coredns-demo\readme.md` | Ejemplo de Multus con CoreDNS | [Ver](./coredns-demo/readme.md) | | `storage\readme.md` | Ejemplo de StorageClass | [Ver](./storage/readme.md) | | `dashboard\readme.md` | Ejemplo con ingress dashboard | [Ver](./dashboard/readme.md) | | `wireguard\readme.md` | Manual de WireGuard | [Ver](./wireguard/readme.md) | | `coredns\readme.md` | Configuración del DNS del sistema | [Ver](./coredns/readme.md) | | `apolo\readme.md` | Manual de Apolo | [Ver](./apolo/readme.md) | | `external\readme.md` | Funcionamiento de External | [Ver](./external/readme.md) | | `gitea\readme.md` | Manual de instalación de Gitea | [Ver](./gitea/readme.md) | | `guacamole\readme.md` | Manual de instalación de Guacamole | [Ver](./guacamole/readme.md) | | `vscode\readme.md` | Manual de instalación de VScode | [Ver](./vscode/readme.md) | | `mapas\readme.md` | Manual de instalación de Tileserver-GL | [Ver](./mapas/readme.md) | | `argos\readme.md` | Manual de instalación de Argos Core | [Ver](./argos/readme.md) | | `multusk3s.md` | Notas para Multus en K3s | [Ver](./multusk3s.md) | --- ## 7. 📊 Estado actual de la instalación | Componente | Estado | Comentario | Enlace | User/Pass | | ------------------------ | ------------------ | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | -------------------- | | `Arranque Cluster` | ✅ Completado | Instalación básica validada | [https://k8s.c2et.net](https://k8s.c2et.net) | kubeconfig | | `Networking` | ✅ Completado | probado Multus, flannel y MetalLB y validado | - | - | | `Ingress` | ✅ Completado Nginx | Nginx funcionando | - | - | | `Volumenes persistentes` | ✅ Completado | Rook Ceph a 4 nodos, falta ampliar a 5 nodos | [https://ceph.c2et.net/](https://ceph.c2et.net/) | admin / Pozuelo12345 | | `Maquinas Virtuales` | ✅ Completado | Desplegado kubevirt, dashboard e isoserver | [https://kubevirt.c2et.net/](https://kubevirt.c2et.net/) [https://isoserver.c2et.net/](https://isoserver.c2et.net/) | - | | `Wireguard` | ✅ Completado | Funcionando | [https://wireguard.c2et.net/](https://wireguard.c2et.net/) | Pozuelo12345 | | `CoreDNS` | ✅ Completado | Funcionando | | | | `Apolo` | ✅ Completado | Funcionando | [https://portal.apolo.c2et.net/](https://portal.apolo.c2et.net/) | admin / 123456 | | `Gitea` | ✅ Completado | Funcionando | [https://git.c2et.net/](https://git.c2et.net/) | | | `Harbor` | ✅ Completado | Funcionando | [https://harbor.c2et.net/](https://harbor.c2et.net/) | | | `Guacamole` | ✅ Completado | Funcionando | [https://heimdall.c2et.net/](https://heimdall.c2et.net/) | | | `VSCode` | ✅ Completado | Funcionando | [https://vscode.c2et.net/](https://vscode.c2et.net/) | Pozuelo12345 | | `Tileserver-GL` | ✅ Completado | Funcionando | [https://mapas.c2et.net/](https://mapas.c2et.net/) | | | `External` | ✅ Completado | Funcionando | varias | | | `Argos Core` | ✅ Completado | Funcionando | [https://argos.panel.c2et.net/](https://argos.panel.c2et.net/) | | --- ## 8. ✅ Resumen final * Clúster distribuido en 2 sites (+ 1 árbitro en camino). * Kubernetes vainilla ➝ instalamos cada pieza: runtime, red, almacenamiento, balanceo. * Dos redes: administración y servicios. * Seguridad basada en **VPN + DNS + ACLs**. * Ingress con SSL automático. * Funcionalidades extra: proxy externo + VMs con KubeVirt. --- ## 9. 📌 ¿Cómo usar este repositorio? 1. Sigue el orden de los documentos desde `readme.md`. 2. Comprueba cada paso con `comprobaciones.md`. 3. Consulta el resto de documentos según el despliegue requerido (Ceph, KubeVirt, etc). 4. Actualiza la documentación con lo que vayas validando.