Files
kubernetes/readme.md
2025-08-27 01:03:49 +00:00

192 lines
12 KiB
Markdown

# 🚀 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
* **CSI contra DELL Powervault**:
* 1 cabina por site.
* Requiere nodeSelector por zonas (para hacerlo bien)
* **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).
### 5.3. Copias de seguridad
* **Velero**
* Montado sobre dos **almacenes S3** (Minio), uno por **SITE**
* Cada almacen en una cabina de almacenamiento **(DriverCSI)**
---
## 6. 📚 Índice de documentos y referencias cruzadas
| Documento | Descripción | Referencia |
| --------------------------- | --------------------------------------------- | ---------------------------------- |
| `estructura_manifiestos.md` | Explicación de la 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) |
| `rook\readme.md` | Instalación e integración de Ceph/Rook | [Ver](./rook/readme.md) |
| `seagate\readme.md` | Instalación del driver CSI para DELL SAN | [Ver](./seagate/readme.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) |
| `minio\readme.md` | Manual de instalación de Minio para Velero | [Ver](./minio/readme.md) |
| `velero\readme.md` | Manual de instalación de Velero | [Ver](./velero/readme.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 |
| `Volumenes persistentes` | ✅ Completado | Driver para las cabinas de almacenamiendo DEEL Powervault | | |
| `Maquinas Virtuales` | ✅ Completado | Desplegado kubevirt, dashboard e isoserver | [https://kubevirt.c2et.net](https://kubevirt.c2et.net/) <br>[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 | [https://admin.firewall.c2et.net](https://admin.firewall.c2et.net) <br>[https://admin.powervault1.c2et.net](https://admin.powervault1.c2et.net)<br> [https://admin.powervault2.c2et.net](https://admin.powervault2.c2et.net) | |
| `Argos Core` | ✅ Completado | Funcionando | [https://argos.panel.c2et.net/](https://argos.panel.c2et.net) | |
| `Minio` | ✅ Completado | Funcionando | [https://console.s3-a.c2et.net](https://console.s3-a.c2et.net) <br>[https://console.s3-b.c2et.net](https://console.s3-b.c2et.net) | admin / Pozuelo12345 |
| `Velero` | ✅ Completado | Funcionando | | |
---
## 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 + backup.
---
## 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.