99 lines
5.2 KiB
Markdown
99 lines
5.2 KiB
Markdown
# 🚀 Virtualización Next-Gen: Clúster K3s con DevOps
|
|
|
|
Bienvenido a **Virtualización Next-Gen**, una guía práctica y modular para desplegar un clúster Kubernetes con [K3s](https://k3s.io/), alta disponibilidad, almacenamiento centralizado, ingress con TLS automático y soporte para máquinas virtuales con KubeVirt. Todo está versionado en Git y gestionado con Argo CD.
|
|
|
|
Este repositorio está orientado tanto a **homelabs avanzados** como a entornos **profesionales** que buscan una infraestructura reproducible, automatizada y documentada.
|
|
|
|
---
|
|
|
|
## 🧭 Tabla de contenidos
|
|
|
|
| Sección | Descripción |
|
|
|--------|-------------|
|
|
| [📘 Guía de instalación](docs/guia-instalacion.md) | Paso a paso para desplegar el clúster completo. |
|
|
| [🏗️ Arquitectura del clúster](docs/arquitectura.md) | Estructura lógica, roles de nodos y servicios desplegados. |
|
|
| [🛠️ Herramientas auxiliares](docs/herramientas-auxiliares.md) | Scripts para automatizar tareas como publicar, clonar o subir repos. |
|
|
| [📚 Procedimientos adicionales](docs/procedimientos-adicionales.md) | Tareas puntuales como eliminar namespaces atascados o cargas manuales. |
|
|
|
|
---
|
|
|
|
## ⚙️ Componentes clave del clúster
|
|
|
|
- **Alta disponibilidad** con IP flotante (`keepalived`) y bonding de red (`bond0`)
|
|
- **K3s cluster** en `tartaro`, `styx` y `niflheim` (dedicado a almacenamiento)
|
|
- **ZFS + NFS** como backend de almacenamiento
|
|
- **Ingress TLS automatizado** con cert-manager + ingress-nginx
|
|
- **Gitea** como Git server para los manifiestos
|
|
- **Argo CD** para despliegue GitOps (App of Apps)
|
|
- **KubeVirt** para gestionar VMs dentro de Kubernetes
|
|
- **Apache Guacamole** para acceso remoto a escritorios vía navegador
|
|
- **VS Code Server** desplegado como pod accesible por Ingress
|
|
|
|
---
|
|
|
|
## 📂 Estructura del repositorio
|
|
|
|
Estructura del repositorio:
|
|
- docs/: Carpeta de documentación con guías y herramientas auxiliares.
|
|
- guia-instalacion.md: Manual paso a paso para desplegar todo el clúster.
|
|
- herramienta git-publish.md: Explica el script para publicar repositorios individuales en Gitea.
|
|
- herramienta publicar-todos.md: Script para publicar todos los manifiestos del clúster de forma masiva.
|
|
- herramienta git-subirtodos.md: Sube todos los cambios a los repositorios remotos.
|
|
- herramienta git-bajartodos.md: Clona todos los repositorios configurados.
|
|
- herramienta git-chilremove.md: Elimina subrepositorios integrados.
|
|
- k8s-argocd/: Manifiestos para desplegar Argo CD, incluyendo Ingress y servicios personalizados.
|
|
- k8s-cert-manager/: Manifiestos para instalar cert-manager, incluyendo ClusterIssuer de staging y producción.
|
|
- k8s-gitea/: Manifiestos para desplegar Gitea y su base de datos con almacenamiento persistente y acceso externo.
|
|
- k8s-guacamole/: Manifiestos para desplegar Apache Guacamole con autenticación MySQL y acceso vía Ingress.
|
|
- k8s-ingress-controller/: Despliegue de ingress-nginx como DaemonSet con configuración personalizada, RBAC, y service.
|
|
- k8s-kubevirt-isoserver/: Servidor HTTP que expone imágenes ISO para KubeVirt, con su PVC y despliegue.
|
|
- k8s-kubevirt-manager/: Despliegue opcional del panel web de KubeVirt con su acceso Ingress y RBAC.
|
|
- k8s-master/: Repositorio central con la definición App of Apps de Argo CD (apps/*.yaml para cada servicio).
|
|
- k8s-storage/: Despliegue del NFS server y del NFS client provisioner, con su StorageClass y permisos.
|
|
- k8s-vm-windows-demo/: Ejemplo de despliegue de una máquina virtual Windows usando KubeVirt.
|
|
- k8s-vscode/: Pod de Visual Studio Code Server accesible vía navegador y gestionado por Kubernetes.
|
|
- publicar-todos.sh: Script shell para publicar automáticamente todos los manifiestos locales a sus repos Gitea.
|
|
- readme.md: Documento principal del repositorio con introducción, tabla de contenidos y enlaces.
|
|
|
|
---
|
|
|
|
## 🛠️ Herramientas auxiliares
|
|
|
|
En la carpeta `docs/` tienes scripts útiles para trabajar con Gitea:
|
|
|
|
- [`herramienta git-publish.md`](docs/herramienta%20git-publish.md): Publica un repo local en Gitea automáticamente.
|
|
- [`herramienta publicar-todos.md`](docs/herramienta%20publicar-todos.md): Publica todos los servicios con un solo comando.
|
|
- [`herramienta git-subirtodos.md`](docs/herramienta%20git-subirtodos.md): Hace `push` de todos los repositorios hijos.
|
|
- [`herramienta git-bajartodos.md`](docs/herramienta%20git-bajartodos.md): Clona todos los repos del clúster.
|
|
- [`herramienta git-chilremove.md`](docs/herramienta%20git-chilremove.md): Limpia todos los subrepos.
|
|
|
|
---
|
|
|
|
## 📚 Procedimientos adicionales
|
|
|
|
Ejemplos:
|
|
|
|
- Inyectar el esquema SQL de Guacamole: ver sección correspondiente en la [guía de instalación](docs/guia-instalacion.md)
|
|
- Crear y gestionar volúmenes o VMs de prueba con KubeVirt
|
|
- Publicar todos los manifiestos desde local con [`publicar-todos.sh`](publicar-todos.sh)
|
|
|
|
---
|
|
|
|
## 🙌 Autor
|
|
|
|
**Xavor - Manabo Inc**
|
|
Proyecto autogestionado y mantenido para homelab y formación profesional.
|
|
Repositorio privado/documentado en [https://git.manabo.org](https://git.manabo.org)
|
|
|
|
---
|
|
|
|
## 🧪 Estado actual
|
|
|
|
✅ Clúster en funcionamiento
|
|
✅ Ingress con TLS
|
|
✅ Almacenamiento replicado
|
|
✅ App of Apps en Argo CD
|
|
✅ Acceso remoto vía Guacamole
|
|
☑️ Próximos pasos: integración con FreeIPA, backups, y monitorización
|
|
|