192 lines
12 KiB
Markdown
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` | | Driver para las cabinas de almacenamiendo DEEL Powervault | | |
|
|
| `Maquinas Virtuales` | | 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` | | Funcionando | | |
|
|
| `Apolo` | | 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` | | Funcionando | [https://harbor.c2et.net](https://harbor.c2et.net) | |
|
|
| `Guacamole` | | Funcionando | [https://heimdall.c2et.net](https://heimdall.c2et.net) | |
|
|
| `VSCode` | | Funcionando | [https://vscode.c2et.net](https://vscode.c2et.net) | Pozuelo12345 |
|
|
| `Tileserver-GL` | | Funcionando | [https://mapas.c2et.net](https://mapas.c2et.net) | |
|
|
| `External` | | 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` | | Funcionando | [https://argos.panel.c2et.net/](https://argos.panel.c2et.net) | |
|
|
| `Minio` | | 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` | | 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.
|