ngrok
Developer-friendly tunnels with a free tier, request inspection, and easy setup.
Prerequisites
- ngrok account (sign up free)
- ngrok authtoken from your dashboard
Setup
1. Create Secret
kubectl create secret generic ngrok-authtoken \
--from-literal=authtoken=YOUR_AUTHTOKEN \
-n ktube-system2. Create TunnelProvider
kubectl apply -f - <<EOF
apiVersion: ktube.dev/v1alpha1
kind: TunnelProvider
metadata:
name: ngrok-provider
spec:
type: ngrok
ngrok:
authTokenSecretRef:
name: ngrok-authtoken
namespace: ktube-system
key: authtoken
EOF3. Create Tunnel
kubectl apply -f - <<EOF
apiVersion: ktube.dev/v1alpha1
kind: Tunnel
metadata:
name: ngrok-tunnel
namespace: default
spec:
providerRef:
name: ngrok-provider
EOFCreate Binding
Expose your service with an auto-generated ngrok URL (free tier):
apiVersion: ktube.dev/v1alpha1
kind: TunnelBinding
metadata:
name: my-binding
spec:
tunnelRef:
name: ngrok-tunnel
protocol: http
service:
name: my-service
port: 8080Custom Domains
Custom domains require a paid ngrok plan. Configure in your binding:
apiVersion: ktube.dev/v1alpha1
kind: TunnelBinding
metadata:
name: prod-binding
spec:
tunnelRef:
name: ngrok-tunnel
hostname: api.yourdomain.com
service:
name: api-server
port: 8080Request Inspection
ngrok provides a web interface for inspecting requests. Access it via the ngrok dashboard or by port-forwarding the ngrok pod's inspection port.
Limitations
- Free tier: Random URLs, rate limits
- No DNS management: Configure DNS manually for custom domains
- Single tunnel: Free tier limited to one tunnel per authtoken