Saltar a contenido

Fase 6 — CAPN (opcional)

Objetivo

Provisionar workload clusters kubeadm sobre instancias Incus vía Cluster API y CAPN.

Qué aprendes

CAPI (Cluster API) declara clusters como recursos Kubernetes; CAPN (Cluster API Provider for Incus) traduce LXCMachine en instancias Incus — clusters efímeros sin tocar el management K3s (distribución ligera de Kubernetes).

Stack de esta fase

sequenceDiagram
  participant Op as Operador
  participant K3s as K3s_management
  participant CAPI as Cluster_API
  participant CAPN as CAPN_controller
  participant Incus as Incus_API
  participant WL as Workload_cluster
  Op->>K3s: clusterctl_init
  Op->>K3s: apply_demo_yaml
  CAPI->>CAPN: reconcile_LXCMachine
  CAPN->>Incus: crear_LXC
  Incus->>WL: kubeadm_listo
  Op->>WL: kubectl_workload
  • Cluster API — API (Application Programming Interface) declarativa; Fase 6.
  • CAPN — Provider Incus; Fase 6.
  • clusterctl — Bootstrap CAPI en el management cluster.
  • Incus — Runtime de instancias; Fase 2.
  • Sealed Secrets — Credenciales Incus cifradas en git.

Profundización: CAPN · Secretos

Antes de empezar

La Fase 5 — vCluster es opcional: no hace falta para esta fase.

Ejecutar

Instalar clusterctl e init CAPN

curl -L https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.10.10/clusterctl-linux-amd64 -o clusterctl
chmod +x clusterctl && sudo mv clusterctl /usr/local/bin/
mkdir -p ~/.cluster-api
curl -o ~/.cluster-api/clusterctl.yaml https://capn.linuxcontainers.org/static/v0.1/clusterctl.yaml
clusterctl init -i incus

Generar y aplicar cluster demo

Ver comandos completos en CAPN — profundización.

kubectl apply -f gitops/argocd/apps/capn-demo.yaml
# Sync manual en ArgoCD

Opciones

Decisión Default HomeLab
Sync ArgoCD Manual (efímero, evita borrados accidentales)
Target workers @arm64-nodes (deborah) / CP @x86-nodes
Análisis de trade-offs
Sync manual
Clusters efímeros no se prunean solos
Apply + Sync en UI cada vez
Workers en @arm64-nodes
Aprovecha 31 GB de deborah
Menos margen si deborah ya es CP K3s
CP en @x86-nodes
Separación CP workload / management
Más RAM en nodos x86 limitados
CAPN vs vCluster
VMs/Incus reales; kubeadm completo
Mucha más RAM que vCluster en pods

Verificar

kubectl get clusters
kubectl get machines

Si falla

Síntoma Revisar
Machine stuck Secret Incus, IP Incus en lxc-secret
Image pull images.linuxcontainers.org

Siguiente

→ Resumen del HomeLab · Stack tecnológico