Troubleshooting
Common issues when running FastGateway on Kubernetes.
Deployment
Backend pod won't start
Symptoms: the FastGateway backend pod is CrashLoopBackOff or never becomes Ready.
-
Check the logs:
kubectl logs -n fastgateway deploy/fastgateway-backend -
Database unreachable. The backend builds its PostgreSQL connection from the
DATABASE_*settings in its Helm values (or secret). Confirm the database is reachable from the cluster and the credentials are correct. Migrations run automatically on startup, so no separate migrate step is needed. -
First-run admin. The default admin is seeded on first startup from
ADMIN_USERNAME/ADMIN_PASSWORD/ADMIN_EMAIL(defaultsadmin/admin123/admin@fastgateway.local). Seeding only happens when the admin does not yet exist.
Authentication
"Unauthorized" (401)
- Token expired. Sign in again to get a new token.
- JWT secret changed. Rotating the JWT secret invalidates all existing tokens, so everyone must re-login.
- Missing header. API requests need an
Authorization: Bearer <token>header.
Can't change the admin password
The admin is seeded once from the ADMIN_* settings, so changing ADMIN_PASSWORD afterward has no effect. Change it in the application instead: from the UI, or via PUT /api/v1/auth/password with currentPassword and newPassword. An Owner can reset another user with PATCH /api/v1/users/{userId}.
Kubernetes
"Envoy Gateway not found"
Route deployment fails with a missing Gateway or GatewayClass.
-
Install Envoy Gateway. FastGateway targets Envoy Gateway v1.8, which ships the CRDs it relies on (e.g.
BackendandEnvoyExtensionPolicy):helm install eg oci://docker.io/envoyproxy/gateway-helm \
--version v1.8.4 \
-n envoy-gateway-system \
--create-namespace -
Verify the install:
kubectl get gatewayclass
kubectl get gateway -A
kubectl get pods -n envoy-gateway-system
Routes not working
A route shows as deployed but traffic returns 404.
-
Check the Gateway and HTTPRoute:
kubectl get gateway -A
kubectl get httproute -A
kubectl describe httproute <route-name> -n <namespace> -
Confirm the backend service has endpoints:
kubectl get endpoints <service-name> -n <namespace> -
If the route has authentication, check its SecurityPolicy:
kubectl get securitypolicy -A
"Forbidden" / RBAC denied
Deploying routes fails with authorization errors.
-
Check the ServiceAccount and ClusterRoleBinding:
kubectl get serviceaccount fastgateway -n fastgateway
kubectl get clusterrolebinding fastgateway -
Test a specific permission:
kubectl auth can-i create httproutes.gateway.networking.k8s.io \
--as=system:serviceaccount:fastgateway:fastgateway -
Reapply the ClusterRole. See RBAC Configuration for the complete manifest.
Debugging
# Backend logs
kubectl logs -n fastgateway deploy/fastgateway-backend -f
# Cluster events in a namespace
kubectl get events -n <namespace> --sort-by='.lastTimestamp'
# Health check (via port-forward)
kubectl port-forward -n fastgateway deploy/fastgateway-backend 8081:8081
curl http://localhost:8081/health
For more detail, set LOG_LEVEL=debug on the backend deployment.
Getting help
If you're still stuck:
- Check GitHub Issues for similar problems.
- Open a new issue with your FastGateway version, Kubernetes version, Envoy Gateway version, the error messages and logs, and steps to reproduce.