Ir al contenido
  1. Posts/

Homelab: GitOps con Flux CD

Homelab: Proxmox, Talos, y Flux - Este artículo es parte de una serie.
Parte 3: Este artículo

Ahora tienes un cluster de Kubernetes desnudo ejecutando Talos. Para que sea útil, necesitas red, almacenamiento y aplicaciones. Administro todo eso con Flux CD — una herramienta GitOps que reconcilia continuamente el estado de tu cluster con Git. Este post cubre por qué GitOps importa y cómo funciona Flux.

¿Qué es GitOps?
#

GitOps significa que tu infraestructura está declarada en Git, y un controlador ejecutándose en tu cluster sincroniza la realidad para que coincida con lo que está en el repo. Cuando quieres agregar una aplicación, actualizar una configuración, o cambiar un valor de Helm, editas Git y confirmas. Flux ve la confirmación, aplica los cambios, y tu cluster se actualiza automáticamente.

Beneficios:

  • Pista de auditoría: Cada cambio de infraestructura es una confirmación de Git
  • Reversión: Revierte cambios revirtiendo commits
  • Pruebas: Prueba cambios en una rama antes de fusionar a producción
  • Consistencia: El estado del cluster siempre coincide con lo que está en Git

Arquitectura
#

Mi configuración de Flux usa dos capas:

Capa de Infraestructura
├── Traefik (controlador de ingress)
├── MetalLB (balanceador de carga)
├── cert-manager (gestión de certificados)
└── Monitoreo (Prometheus, Grafana)

Capa de Aplicaciones
├── Homarr (dashboard)
├── Nextcloud (sincronización de archivos)
└── Cargas de trabajo personalizadas

La capa de infraestructura instala herramientas y servicios de plataforma. La capa de aplicaciones ejecuta lógica de negocios y servicios dirigidos al usuario. Ambos son administrados por Flux reconciliando Git.

Estructura del repositorio
#

Mi configuración del cluster vive en un repo de Git con este diseño:

gitops/
└── clusters/
    └── totorolab/
        ├── flux-system/              # Bootstrap de Flux
        ├── infrastructure/           # Traefik, MetalLB, cert-manager
        │   └── base/                 # HelmRepositories, Namespaces
        ├── apps/                     # Aplicaciones
        │   └── base/                 # HelmReleases
        │       ├── homarr/
        │       ├── nextcloud/
        │       └── monitoring/
        └── infrastructure.yaml       # Flux Kustomization (capa infra)

Cada aplicación es una Kustomization que Flux reconcilia. Los valores de Helm, tags de imagen y replicas se definen en Git. Cuando editas una HelmRelease, Flux actualiza la liberación real de Helm.

Inicializar Flux
#

Instala Flux en tu cluster:

flux install

Luego crea una fuente de Git para tu repo:

flux create source git flux-system \
  --url=https://github.com/lolverae/homelab \
  --branch=main \
  --path=./gitops/clusters/totorolab

Flux reconciliará tu cluster cada 10 minutos (configurable). Cuando ve una nueva HelmRelease o Kustomization en Git, la aplica automáticamente.

Verifica el estado:

flux get all
flux get sources
flux get kustomizations

Administrar aplicaciones
#

Para agregar una nueva aplicación, crea una HelmRelease en tu repo:

apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: mi-app
  namespace: default
spec:
  chart:
    spec:
      chart: mi-chart
      sourceRef:
        kind: HelmRepository
        name: mi-repo
  values:
    replicas: 2
    image:
      tag: v1.0.0

Confirma y sube. Flux creará la liberación automáticamente. Para actualizar, edita la sección values en Git y confirma. Flux reconcilia dentro de 10 minutos.

Secretos y configuración
#

Para datos sensibles (contraseñas de base de datos, claves de API), usa SOPS o Sealed Secrets para encriptar secretos en Git. Cuando Flux los aplica, los desencripta y crea secretos de Kubernetes. De esta manera, toda tu configuración de cluster está en Git mientras permanece segura.

Por qué esto importa
#

GitOps convierte tu cluster en algo versionado y reproducible. La recuperación ante desastres es tan simple como apuntar Flux a tu repo de Git. Probar cambios es tan fácil como una rama. La infraestructura se convierte en código, revisable y auditable como cualquier otro proyecto de software.

Ese es el poder de administrar infraestructura con Git.

Homelab: Proxmox, Talos, y Flux - Este artículo es parte de una serie.
Parte 3: Este artículo

Relacionados