Resumen del HomeLab¶
Cierre de la guía de implementación: checklist de lo desplegado,
URLs, /etc/hosts, nodos, secretos y verificación global. Consulta esta página
al terminar la Fase 4 como mínimo; las fases 5 y 6 son opcionales.
Recorrido completado (por fase)¶
| Fase | Qué quedó listo | Herramienta |
|---|---|---|
| 0 — Preparación | Repo, Ansible, inventory.ini, discovery opcional |
playbook-discovery.yml |
| 1 — Red | IP fija en br0 (192.168.20.5, .6, .7) |
playbook-set-static-ip.yml |
| 2 — Incus | Clúster HA, groups, UI, storage dir |
playbook-bootstrap.yml + playbook-incus-cluster.yml |
| 3 — K3s | Management cluster + ArgoCD controller; CNI Flannel (default) | playbook-k3s.yml |
| 4 — GitOps | MetalLB, Gateway API, storage, Dex/GitHub SSO | Argo CD + playbook-dex-oauth-secrets.yml |
| 5 — vCluster (opc.) | Platform, kubeconfig web (connected cluster) | Application ArgoCD |
| 6 — CAPN (opc.) | Workload clusters sobre Incus | clusterctl + capn-demo.yaml |
URLs y accesos web¶
| Servicio | URL | Auth | Fase |
|---|---|---|---|
| ArgoCD | https://argocd.homelab.local |
SSO GitHub vía Dex | 4 |
| Dex (issuer) | https://argocd.homelab.local/api/dex |
— | 4 |
| vCluster Platform | https://vcluster.homelab.local |
SSO Dex → GitHub | 5 |
| Incus UI | https://incus.homelab.local:8443 |
SSO Dex (o cert cliente antes Fase 4) | 2 / 4 |
| K3s API | https://192.168.20.5:6443 |
kubeconfig | 3 |
Kubeconfig¶
| Clúster | Cómo obtenerlo |
|---|---|
| Management K3s | vCluster Platform (connected cluster) o playbook-k3s.yml con fetch_kubeconfig |
| vClusters | UI vCluster Platform |
| Workload CAPN | clusterctl get kubeconfig (Fase 6) |
/etc/hosts en tu estación de trabajo¶
Bloque completo tras Fase 4+ (<IP-del-Gateway> = IP que MetalLB le da al
Gateway homelab; incus siempre apunta a invincible):
Obtén <IP-del-Gateway>:
Verificación:
curl -kI https://argocd.homelab.local
curl -kI https://vcluster.homelab.local
curl -kI https://incus.homelab.local:8443
Nodos del HomeLab¶
| Hostname | IP br0 |
Incus | K3s | Notas |
|---|---|---|---|---|
| invincible | 192.168.20.6 | Leader + UI | agent | RAM ajustada; Longhorn disk |
| oliver | 192.168.20.7 | Quorum, scheduler manual | agent | Sin instancias automáticas |
| deborah | 192.168.20.5 | arm64-nodes | server (CP) | 31 GB RAM |
Storage Incus: pool local, driver dir, perfil default → NIC (tarjeta de red) br0.
Detalle hardware: Inventario.
Red del clúster (CNI)¶
| Decisión | Default HomeLab | Alternativa |
|---|---|---|
| CNI | Flannel vxlan (embebido en K3s) |
Canal, Calico o Cilium vía rol k3s_cni o apps GitOps manuales |
Variable Ansible: k3s_install.core.cni en group_vars/incus_cluster/k3s_install.yml.
Detalle y trade-offs: Fase 3 — CNI · playbook-options.
Verificación:
kubectl get pods -n kube-system -l k8s-app=flannel
# o calico-node / canal / cilium según el CNI elegido
Secretos y SSO (1Password)¶
| Campo 1Password | Uso |
|---|---|
GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET |
Dex → GitHub OAuth (manual en GitHub + 1Password) |
VCLUSTER_CLIENT_SECRET |
Dex + Helm Platform (Ansible genera si falta) |
INCUS_CLIENT_SECRET |
Dex + incus config set oidc.* (Ansible genera si falta) |
Cuenta Personal, bóveda HomeLab (configurable vía env vars).
Playbook: playbook-dex-oauth-secrets.yml.
Permisos por defecto
Usuarios SSO (inicio de sesión único) no ven nada hasta asignar acceso en vCluster Platform o
incus auth. Ver Fase 4 y Fase 5.
Documentación: Secretos OAuth
GitOps (Argo CD)¶
Apps típicas en Healthy tras Fase 4:
argocd,argocd-route,metallb,homelab-storage,kong, …- Opcionales (sync manual):
vcluster-platform,capn-demo - CNI (solo si no usas Flannel embebido):
calico-operator+calico-config,canalocilium— una a la vez
Repo: gitops · bootstrap/root-appset.yaml
Verificación global¶
# Incus
incus cluster list
incus cluster group list
# K3s
kubectl get nodes
kubectl get applications -n argocd
# SSO — login GitHub en ArgoCD, vCluster e Incus UI
# CAPN (si Fase 6)
kubectl get clusters,machines