Skip to content

Desplegar el agente en Kubernetes

Necesitas:

  1. Un clúster de Kubernetes operativo con kubectl configurado.
  2. Un token de túnel desde el panel de Nubulus en Tunnels → Nuevo túnel.
  3. Salida UDP en el puerto 51820 desde los pods hacia internet.

Guarda el token como un Secret de Kubernetes para no exponerlo en los manifiestos:

Terminal window
kubectl create secret generic nubulus-tunnel-token \
--from-literal=TUNNEL_TOKEN="tun_xxxxxxxxxxxxxxxxxxxxxxxxx"

Verifica que se ha creado:

Terminal window
kubectl get secret nubulus-tunnel-token

Crea el fichero tunnel-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
name: nubulus-tunnel
labels:
app: nubulus-tunnel
spec:
replicas: 1
selector:
matchLabels:
app: nubulus-tunnel
template:
metadata:
labels:
app: nubulus-tunnel
spec:
containers:
- name: tunnel-agent
image: code.as210469.net/nubulusnetworkopensource/tunnel:latest
envFrom:
- secretRef:
name: nubulus-tunnel-token
env:
- name: LOG_LEVEL
value: "info"
resources:
requests:
cpu: "50m"
memory: "64Mi"
limits:
cpu: "200m"
memory: "128Mi"

El agente no necesita privilegios ni capabilities adicionales. Aplica el manifiesto:

Terminal window
kubectl apply -f tunnel-deployment.yaml

El agente resuelve los destinos de las rutas por DNS interno del clúster. En el panel de Nubulus configura el upstream apuntando al nombre DNS del Service:

  • Mismo namespace: http://mi-app:8080
  • Namespace diferente: http://mi-app.otro-namespace.svc.cluster.local:8080
apiVersion: v1
kind: Service
metadata:
name: mi-app
spec:
selector:
app: mi-app
ports:
- port: 8080
targetPort: 8080

Ruta a configurar en el panel:

TipoHostnamePathUpstream hostUpstream port
hostmi-dominio.com/mi-app8080

Comprueba que el pod está corriendo:

Terminal window
kubectl get pods -l app=nubulus-tunnel

Revisa los logs para confirmar que el túnel está activo:

Terminal window
kubectl logs -l app=nubulus-tunnel --follow

Deberías ver:

{"level":"info","message":"túnel activo"}
{"level":"info","message":"túnel conectado"}

Para rotar el token sin modificar el Deployment, actualiza el Secret y reinicia el pod:

Terminal window
kubectl create secret generic nubulus-tunnel-token \
--from-literal=TUNNEL_TOKEN="tun_yyyyyyyyyyyyyyyyyyyyy" \
--dry-run=client -o yaml | kubectl apply -f -
kubectl rollout restart deployment/nubulus-tunnel
EscenarioSolución
Servicio en el mismo namespacehttp://mi-app:puerto
Servicio en otro namespacehttp://mi-app.otro-namespace.svc.cluster.local:puerto
Servicio fuera del clústerIP o hostname externo accesible desde los pods
Clúster con NetworkPoliciesAñadir una NetworkPolicy que permita egreso UDP en puerto 51820 desde el pod del agente