# 🚀 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