explicando readme

This commit is contained in:
2025-08-22 18:33:33 +02:00
parent 824a9f92cd
commit 1a46afecda

190
readme.md
View File

@@ -1,65 +1,175 @@
# Guía de Instalación de Kubernetes en SUSE # 🚀 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.
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.
--- ---
## Índice de documentos y referencias cruzadas ## 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 | | Documento | Descripción | Referencia |
| ------------------- | ------------------------------------------ | ------------------------ | | --------------------------- | --------------------------------------------- | ---------------------------------- |
| `cluster_init.md` | Proceso de inicializacion del cluster detallado en SUSE | [Ver](cluster_init.md) | | `cluster_init.md` | Proceso de inicialización del cluster en SUSE | [Ver](cluster_init.md) |
| `redes_internet.md` | MetalLB, Multus y demas | [Ver](redes_internet.md) | | `redes_internet.md` | MetalLB, Multus y demás | [Ver](redes_internet.md) |
| `ingress.md` | Capitulo dedicado a certmanager y diferentes ingress | [Ver](ingress.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) | | `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) | | `kubevirt\readme.md` | Despliegue de KubeVirt y gestión de VMs | [Ver](./kubevirt/readme.md) |
| `vm-windows-demo\readme.md` | Maquina virtual de ejemplo | [Ver](./vm-windows-demo/readme.md) | | `vm-windows-demo\readme.md` | Máquina virtual de ejemplo | [Ver](./vm-windows-demo/readme.md) |
| `comprobaciones.md` | Checklist y pruebas tras cada paso crítico | [Ver](./comprobaciones.md) | | `comprobaciones.md` | Checklist tras cada paso crítico | [Ver](./comprobaciones.md) |
| `script_limpieza.md` | Como hacer un script para eliminar la configuracion de un nodo | [Ver](script_limpieza.md) | | `script_limpieza.md` | Script para limpiar un nodo | [Ver](script_limpieza.md) |
| `coredns-demo\readme.md` | Ejemplo de Multus: CoreDNS | [Ver](./coredns-demo/readme.md) | | `coredns-demo\readme.md` | Ejemplo de Multus con CoreDNS | [Ver](./coredns-demo/readme.md) |
| `storage\readme.md` | Ejemplo de recurso “class”: storage | [Ver](./storage/readme.md) | | `storage\readme.md` | Ejemplo de StorageClass | [Ver](./storage/readme.md) |
| `dashboard\readme.md` | Ejemplo con un ingress: k8s dashboard | [Ver](./dashboard/readme.md) | | `dashboard\readme.md` | Ejemplo con ingress dashboard | [Ver](./dashboard/readme.md) |
| `wireguard\readme.md` | Manual de instalación de Wireguard | [Ver](./wireguard/readme.md) | | `wireguard\readme.md` | Manual de WireGuard | [Ver](./wireguard/readme.md) |
| `coredns\readme.md` | Configuracion del DNS del sistema | [Ver](./coredns/readme.md) | | `coredns\readme.md` | Configuración del DNS del sistema | [Ver](./coredns/readme.md) |
| `apolo\readme.md` | Manual de instalación de Apolo | [Ver](./apolo/readme.md) | | `apolo\readme.md` | Manual de Apolo | [Ver](./apolo/readme.md) |
| `external\readme.md` | Manual de funcionamiento de External | [Ver](./external/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) | | `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) | | `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) | | `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) | | `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) | | `argos\readme.md` | Manual de instalación de Argos Core | [Ver](./argos/readme.md) |
| `multusk3s.md` | por si un dia instalo multus en k3s en vez de en k8s | [Ver](./multusk3s.md) | | `multusk3s.md` | Notas para Multus en K3s | [Ver](./multusk3s.md) |
--- ---
## Estado actual de la instalación ## 7. 📊 Estado actual de la instalación
| Componente | Estado | Comentario |Enlace |User/Pass | | Componente | Estado | Comentario | Enlace | User/Pass |
| ------------------- | -------------------------- | ----------------------------------- |----------------- |------------- | | ------------------------ | ------------------ | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | -------------------- |
| `Arranque Cluster` | ✅ Completado | Instalación básica validada | https://k8s.c2et.net | kubeconfig | | `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 |- |- | | `Networking` | ✅ Completado | probado Multus, flannel y MetalLB y validado | - | - |
| `Ingress` | ✅ Completado Nginx | Nginx funcionando |- |- | | `Ingress` | ✅ Completado Nginx | Nginx funcionando | - | - |
| `Volumenes persistentes` | ✅ Completado | Rook Ceph a 4 nodos, falta ampliar a 5 nodos |https://ceph.c2et.net/ |admin / Pozuelo12345 | | `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://isoserver.c2et.net/ |- | | `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/ | Pozuelo12345 | | `Wireguard` | ✅ Completado | Funcionando | [https://wireguard.c2et.net/](https://wireguard.c2et.net/) | Pozuelo12345 |
| `CoreDNS` | ✅ Completado | Funcionando | | | | `CoreDNS` | ✅ Completado | Funcionando | | |
| `Apolo` | ✅ Completado | Funcionando |https://portal.apolo.c2et.net/ | admin / 123456 | | `Apolo` | ✅ Completado | Funcionando | [https://portal.apolo.c2et.net/](https://portal.apolo.c2et.net/) | admin / 123456 |
| `Gitea` | ✅ Completado | Funcionando |https://git.c2et.net/ | | | `Gitea` | ✅ Completado | Funcionando | [https://git.c2et.net/](https://git.c2et.net/) | |
| `Harbor` | ✅ Completado | Funcionando |https://harbor.c2et.net/ | | | `Harbor` | ✅ Completado | Funcionando | [https://harbor.c2et.net/](https://harbor.c2et.net/) | |
| `Guacamole` | ✅ Completado | Funcionando |https://heimdall.c2et.net/ | | | `Guacamole` | ✅ Completado | Funcionando | [https://heimdall.c2et.net/](https://heimdall.c2et.net/) | |
| `VSCode` | ✅ Completado | Funcionando |https://vscode.c2et.net/ | Pozuelo12345 | | `VSCode` | ✅ Completado | Funcionando | [https://vscode.c2et.net/](https://vscode.c2et.net/) | Pozuelo12345 |
| `Tileserver-GL` | ✅ Completado | Funcionando |https://mapas.c2et.net/ | | | `Tileserver-GL` | ✅ Completado | Funcionando | [https://mapas.c2et.net/](https://mapas.c2et.net/) | |
| `External` | ✅ Completado | Funcionando |varias | | | `External` | ✅ Completado | Funcionando | varias | |
| `Argos Core` | ✅ Completado | Funcionando |https://argos.panel.c2et.net/ | | | `Argos Core` | ✅ Completado | Funcionando | [https://argos.panel.c2et.net/](https://argos.panel.c2et.net/) | |
--- ---
## ¿Cómo usar este repositorio? ## 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`. 1. Sigue el orden de los documentos desde `readme.md`.
2. Comprueba cada paso con `comprobaciones.md`. 2. Comprueba cada paso con `comprobaciones.md`.
3. Consulta el resto de documentos según el despliegue requerido (Ceph, KubeVirt, etc). 3. Consulta el resto de documentos según el despliegue requerido (Ceph, KubeVirt, etc).
4. Actualiza la documentacion con lo que vayas validando. 4. Actualiza la documentación con lo que vayas validando.