Troubleshooting¶
Common issues and their solutions.
Authentication Issues¶
Cannot Log In - OIDC Redirect Fails¶
Symptoms: - Redirect to OIDC provider fails - Browser shows "Connection refused" or timeout - Error: "Failed to fetch OIDC configuration"
Solutions:
-
Check OIDC Discovery URL:
-
Verify redirect URI:
- Check that
APP_URL/callbackmatches OIDC client configuration -
Example: If
APP_URL=https://velerodash.example.com, redirect URI should behttps://velerodash.example.com/callback -
Enable Dex Proxy (if using Dex):
-
Check CORS settings:
- If Dex proxy doesn't help, configure CORS on your OIDC provider
Logged In But Get "Access Denied" on All Pages¶
Symptoms: - Login succeeds but all pages show 403 Forbidden - Error: "You don't have permission to access this resource"
Solutions:
-
Check username in Casbin policy:
-
Verify policy file format:
-
Check policy reload:
-
Verify OIDC claims:
- Check that username claim matches what's in policy file
- Common claims:
email,preferred_username,sub
Cluster Connectivity Issues¶
"Failed to Connect to Cluster"¶
Symptoms:
- Cluster shows as "Disconnected" in dashboard
- Error: "Failed to connect to cluster:
Solutions:
-
Verify API server is reachable:
-
Check authentication method:
For kubeconfig:
# Verify kubeconfig file exists and is readable
ls -la /path/to/kubeconfig
# Test with kubectl
kubectl --kubeconfig=/path/to/kubeconfig get nodes
For token:
# Verify token is valid
curl -k -H "Authorization: Bearer $TOKEN" \
https://k8s.example.com:6443/api/v1/namespaces
- Check certificate authority:
- For token auth, ensure
certificate_authority_datais correct -
Test without cert verification first (dev only):
OIDC_VERIFY_SSL=False -
Verify network connectivity:
"Velero Not Found in Cluster"¶
Symptoms: - Cluster connects but shows "Velero not detected" - No backups/restores visible
Solutions:
-
Verify Velero is installed:
-
Check Velero CRDs:
-
Verify permissions:
-
Check Velero namespace:
- Dashboard looks for Velero in
veleronamespace by default - If installed in different namespace, you may need to modify code
Permission Issues¶
Can View But Cannot Create Backups¶
Symptoms: - Dashboard loads, clusters visible - "Create Backup" button missing or disabled - Error: "You don't have permission to create backups"
Solutions:
-
Check Casbin policies:
-
Verify role assignment:
-
Check domain matching:
Cannot Access Specific Namespace¶
Symptoms: - Can see some namespaces but not others - Error: "Namespace not found" or "Access denied"
Solutions:
-
Check namespace-specific policies:
-
Verify Kubernetes RBAC:
Resource Not Found¶
Backups/Restores Not Showing¶
Symptoms: - Cluster connected, Velero detected - But no backups or restores visible
Solutions:
- Check namespace:
- Velero resources must be in
veleronamespace -
Verify:
kubectl get backups -n velero -
Verify Velero is working:
-
Check dashboard logs:
-
Pagination:
- By default, only 100 items shown
- Check if there are more pages
- Adjust
DEFAULT_ITEMS_PER_PAGEif needed
Kopia Repository Browser Issues¶
"Kopia Binary Not Found"¶
Symptoms: - Repository browser fails - Error: "Kopia binary not found at /usr/local/bin/kopia"
Solutions:
-
Install Kopia:
-
Set KOPIA_BIN environment variable:
-
Docker: Kopia is included in the image, should work out of the box
"Failed to Connect to Repository"¶
Symptoms: - Kopia installed but cannot connect to repository - Error: "Failed to list snapshots"
Solutions:
- Check S3 credentials:
- Repository browser uses credentials from Backup Storage Location
-
Verify BSL has correct S3 credentials
-
Verify repository exists:
-
Check S3 endpoint:
- Ensure S3 endpoint is reachable from dashboard
- Test:
curl https://s3.amazonaws.comor your S3-compatible endpoint
Performance Issues¶
Dashboard Slow to Load¶
Symptoms: - Pages take a long time to load - Timeouts when listing resources
Solutions:
-
Reduce pagination size:
-
Filter by namespace:
- Use namespace dropdown to limit results
-
Don't try to list all resources across all namespaces at once
-
Increase resources (Kubernetes):
-
Check cluster API server performance:
- Slow responses may indicate overloaded API server
- Consider using multiple dashboard replicas
High Memory Usage¶
Symptoms: - Dashboard pod shows high memory usage - OOMKilled events
Solutions:
-
Increase memory limits:
-
Reduce concurrent requests:
- Don't open too many cluster tabs at once
-
Close unused tabs
-
Check for memory leaks:
Configuration Issues¶
Hot-Reload Not Working¶
Symptoms: - Changed config files but changes not reflected - No reload message in logs
Solutions:
-
Check file permissions:
-
Verify watchdog is running:
-
Docker volume mounts:
-
File system events:
- Some file systems don't support inotify (e.g., NFS)
- Consider polling mode or restart container after changes
Logging and Debugging¶
Enable Debug Logging¶
# Environment variable
export FLASK_DEBUG=True
export FLASK_ENV=development
# View logs
docker logs -f velerodashboard
# Kubernetes
kubectl logs -n velero-dashboard -l app=velerodashboard -f --tail=100
Check Health Endpoint¶
Common Log Messages¶
| Log Message | Meaning |
|---|---|
| "Cluster configuration reloaded" | Config file updated successfully |
| "Policy file changed, reloading enforcer" | Casbin policies updated |
| "Failed to connect to cluster" | Cluster connectivity issue |
| "User not authorized" | RBAC denial |
| "OIDC token expired" | Need to log in again |
Getting Help¶
If you're still stuck:
- Check logs with debug mode enabled
- Search GitHub Issues for similar problems
- Open a new issue with:
- Detailed description of the problem
- Steps to reproduce
- Logs (sanitize sensitive data!)
- Configuration files (sanitize secrets!)
- Environment (Docker, Kubernetes, etc.)