Saltar a contenido

CAPN (Cluster API Provider Incus)

Parte de la guía de implementación

Fase 6 — CAPN — recorrido ejecutable.

El K3s (distribución ligera de Kubernetes) existente actúa como management cluster de Cluster API. Provider: CAPN.

Instalación

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

Credenciales de Incus como Secret

Ver gitops/sealed-secrets/ — el secreto lxc-secret se cifra con Sealed Secrets antes de commitear, nunca en texto plano.

Generar un workload cluster

export LXC_SECRET_NAME=lxc-secret
export LOAD_BALANCER='lxc: {}'
export DEPLOY_KUBE_FLANNEL=true
export LXC_IMAGE_NAME=kubeadm/v1.36.1
export CONTROL_PLANE_MACHINE_TARGET="@x86-nodes"
export CONTROL_PLANE_MACHINE_TYPE=container
export WORKER_MACHINE_TARGET="@arm64-nodes"
export WORKER_MACHINE_TYPE=container   # arm64: solo container, sin imágenes VM oficiales

clusterctl generate cluster demo -i incus \
  --kubernetes-version v1.36.2 \
  --control-plane-machine-count 1 \
  --worker-machine-count 2 > gitops/capn/clusters/demo.yaml

kubectl apply -f gitops/capn/clusters/demo.yaml

Nota: CAPN provisiona clusters kubeadm vainilla (no K3s anidado) — más pesado por nodo. Bien para clusters efímeros de dev/test, no para 24/7 en oliver.

El manifiesto generado se sincroniza vía ArgoCD con sync manual — ver capn-demo.yaml.