🚀 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, 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 | Paso a paso para desplegar el clúster completo. |
🏗️ Arquitectura del clúster | Estructura lógica, roles de nodos y servicios desplegados. |
🌐 Direccionamiento y Redes | Asignación de IPs, segmentación de redes y VLANs. |
🛠️ Herramientas auxiliares | Scripts para automatizar tareas como publicar, clonar o subir repos. |
📚 Procedimientos adicionales | Tareas puntuales como eliminar namespaces atascados o cargas manuales. |
📋 Comandos Kubernetes básicos | Referencia rápida de comandos kubectl y virtctl más usados. |
⚙️ Componentes clave del clúster
- Separación de redes: tráfico de gestión, almacenamiento e internodo aislados por VLANs.
- Alta disponibilidad con IP flotante (
keepalived
) y bonding de red (bond0
) - K3s cluster en
tartaro
,styx
yniflheim
(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
- Harbor como registro de contenedores privado desplegado en Kubernetes
📂 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.
- direccionamiento-redes.md: Detalle de la segmentación IP y VLANes.
- comandos-kubectl.md: Comandos frecuentes de gestión Kubernetes y KubeVirt.
- 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-harbor/: Manifiestos para desplegar Harbor como registro de contenedores privado.
- 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
: Publica un repo local en Gitea automáticamente.herramienta publicar-todos.md
: Publica todos los servicios con un solo comando.herramienta git-subirtodos.md
: Hacepush
de todos los repositorios hijos.herramienta git-bajartodos.md
: Clona todos los repos del clúster.herramienta git-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
- Crear y gestionar volúmenes o VMs de prueba con KubeVirt
- Publicar todos los manifiestos desde local con
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
🧪 Estado actual
✅ Clúster en funcionamiento
✅ Ingress con TLS
✅ Almacenamiento replicado
✅ App of Apps en Argo CD
✅ Acceso remoto vía Guacamole
✅ Registro de contenedores privado con Harbor
☑️ Próximos pasos: integración con FreeIPA, backups, y monitorización