Clusters privados¶
kubelatch necesita llegar por https al API server de cada cluster que gestiona. Si el API server es privado (un EKS con endpoint privado, un k3s en una oficina), aquí tienes las opciones para alcanzarlo.
kubelatch no tiene relay propio ni soporte específico para túneles en el código. Se usa la red de tu organización.
flowchart LR
P[Personas y CI] -->|https| K[kubelatch<br/>cluster de gestión]
K -->|túnel o VPN| A[API server privado]
Las opciones¶
| Opción | Cómo | Cuándo |
|---|---|---|
| VPN o peering | Une la red del cluster de gestión con la del cluster privado. | La opción más simple si ya existe. |
| Tailscale | El operador de Tailscale en el cluster privado expone el API server: tailscale up --advertise-routes en un nodo, o un ProxyGroup/Connector. kubelatch corre con un sidecar tailscale, o el cluster de gestión está en la tailnet. |
Si ya usas Tailscale. El namespace kubelatch aplica PSA restricted: un sidecar que pida privilegios (por ejemplo NET_ADMIN) no arrancará ahí. |
| Cloudflare Tunnel | Solo el túnel de red (WARP Connector o private networks), que da alcance IP al API server. | Si ya usas Cloudflare Zero Trust. |
Cloudflare Tunnel de aplicación no sirve
Publicar el API server como aplicación de Cloudflare Access exige un token de servicio de Access en cada petición. kubelatch no puede añadir esa cabecera, así que sus peticiones al cluster se rechazarían.
Registrar el cluster a través del túnel¶
El registro es el normal (Registrar un cluster), con una diferencia: el server que pegas es el que alcanza kubelatch, no el que usa tu kubectl.
- Aplica el bootstrap y ejecuta el one-liner como siempre.
- Antes de pegar el JSON, cambia
serverpor la dirección del API server vista desde kubelatch. Con Tailscale, la que resuelve por la tailnet. - Deja
cacomo está: la CA del API server no cambia. - Pega el JSON y pulsa «Guardar tokens».
La URL solo admite https y nunca una IP literal link-local, de metadatos o multicast (los nombres no se resuelven para comprobarlo).
Comprueba que funciona¶
- El cluster pasa a «Listo» en «Clusters».
- «Namespaces» lista los namespaces del cluster.
- Una petición a través del proxy funciona. Si el proxy responde
502con «no se pudo hablar con el API server del cluster», kubelatch no llega alserverregistrado: revisa el túnel y las rutas desde el cluster de gestión. El error completo está en el log de kubelatch.