← Volver al Blog
Tutorial 30 de julio de 2026 · 8 min de lectura

Acceder a un clúster de Kubernetes sin VPN

Dale a tu equipo acceso seguro con kubectl a un clúster K8s privado. Sin API server público, sin appliance VPN, sin pesadillas de split-tunnel.

El problema

Tu API server de Kubernetes está en una subred privada. Los ingenieros necesitan acceso con kubectl desde sus portátiles — en casa, en cafeterías, en la carretera. Las opciones tradicionales son dolorosas:

  • Exponer el API server públicamente — riesgo de seguridad inaceptable, incluso con RBAC
  • VPN site-to-site — lenta de configurar, da acceso completo a la red, se rompe cuando cambia el NAT
  • Bastion host + túnel SSH — frágil, difícil de auditar, una cosa más que mantener

Lo que realmente quieres: dar a usuarios específicos acceso al puerto 6443 del API server, y nada más. Eso es lo que significa Zero Trust en la práctica.

La solución: publisher de WireZTNA en la red del clúster

Instala un publisher de WireZTNA — un binario estático de solo 8 MB — en cualquier máquina que pueda alcanzar el API server de K8s. Puede ser:

  • Un nodo del clúster
  • Un contenedor sidecar en un pod de utilidad
  • Una VM en la misma VPC
  • Un DaemonSet (para alta disponibilidad)

El publisher inicia un túnel WireGuard de salida hacia el broker de WireZTNA. No se necesitan puertos de entrada. No hay reglas de firewall que abrir.

Paso 1: Crear un publisher en el panel de administración

En el panel web de WireZTNA, crea un nuevo publisher. Configura los CIDRs expuestos solo con el API server:

Exposed CIDRs: 10.0.1.50/32    # IP de tu API server de K8s

O usa una Published App para un control aún más estricto:

Published App: "K8s API"
  Host: 10.0.1.50
  Port: 6443
  Protocol: TCP

Paso 2: Instalar el publisher

En una máquina con acceso de red al API server:

# Descargar e instalar
curl -fsSL https://your-broker.wireztna.com/api/v1/downloads/publisher/linux/amd64 -o wireztna-publisher
chmod +x wireztna-publisher

# Registrar con el token del panel de administración
./wireztna-publisher enroll --token "pub_xxxxxxxxxxxxxxxx"

# Iniciar (se ejecuta como servicio systemd)
sudo ./wireztna-publisher install
sudo systemctl start wireztna-publisher

Eso es todo. El publisher ahora está conectado al broker y anunciando el CIDR del API server.

Paso 3: Asignar acceso

En el panel de administración, crea un grupo (ej., "Platform Engineers") y vincúlalo al publisher. Añade usuarios al grupo. Cada usuario solo podrá alcanzar los CIDRs o Published Apps específicos que definiste — nada más en la red.

Paso 4: Conectar desde el cliente

Los ingenieros instalan el cliente WireZTNA y se registran:

# Registrarse (una sola vez)
wireztna enroll https://your-broker.wireztna.com/enroll/TOKEN

# Iniciar sesión
wireztna login

# Ahora kubectl funciona directamente
kubectl get pods --server=https://10.0.1.50:6443

El cliente establece un túnel WireGuard al broker, que enruta el tráfico al publisher, que lo reenvía al API server. La máquina del usuario obtiene una entrada split-DNS para que k8s.internal se resuelva a través del túnel.

Por qué esto es mejor que una VPN

  • Acceso granular — los usuarios solo pueden alcanzar el puerto 6443 del API server, no hacer SSH a nodos ni acceder a bases de datos
  • Sin puertos de entrada — el publisher inicia conexiones de salida; funciona detrás de cualquier firewall o NAT
  • Claves por sesión — la PSK rota cada 8 horas por defecto; incluso si se compromete, la ventana es limitada
  • Registro de auditoría — ves quién se conectó, cuándo y a qué recursos accedió
  • Multi-clúster — añade publishers a cada clúster, asigna diferentes equipos a diferentes clústeres mediante grupos

Despliegue con DaemonSet (HA opcional)

Para clústeres de producción, ejecuta el publisher como DaemonSet para que siempre esté disponible:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: wireztna-publisher
  namespace: wireztna
spec:
  selector:
    matchLabels:
      app: wireztna-publisher
  template:
    metadata:
      labels:
        app: wireztna-publisher
    spec:
      hostNetwork: true
      containers:
      - name: publisher
        image: wireztna/publisher:latest
        env:
        - name: WIREZTNA_TOKEN
          valueFrom:
            secretKeyRef:
              name: wireztna-publisher
              key: token
        securityContext:
          capabilities:
            add: ["NET_ADMIN"]

Resumen

Tiempo total de configuración: menos de 10 minutos. Sin appliance VPN, sin reglas de firewall, sin exposición pública. Tus ingenieros obtienen acceso con kubectl desde cualquier lugar, y tú mantienes visibilidad y control total sobre quién accede a qué.

Solicita acceso para probarlo en tu clúster →