Immediate Fix: Using the Built-in Proxy
The fastest way to resolve a blank screen in the MicroK8s dashboard is to use the integrated proxy command. This bypasses most common certificate and routing issues.
microk8s dashboard-proxy
Once you run this, the terminal will output a specific URL (usually https://127.0.0.1:10443) and a login token. Copy the token, open the link in your browser, and paste the token when prompted. This method ensures the correct RBAC permissions are used during the session.
Technical Explanation: Why the Screen is Blank
A blank screen in the MicroK8s dashboard usually occurs because of browser security policies regarding self-signed certificates or incorrect API server routing. When the dashboard attempts to fetch resources from the Kubernetes API and fails due to an unauthorized request (401) or a forbidden request (403), the UI fails to render.
Common triggers include expired tokens, missing “cluster-admin” role bindings, or attempting to access the dashboard via an insecure HTTP connection when the service expects HTTPS.
| Issue | Root Cause | Resolution |
|---|---|---|
| Empty White Screen | CORS or Certificate Mismatch | Use dashboard-proxy or accept self-signed certs |
| Login Loop | Expired Token | Generate new secret token |
| 403 Forbidden | Insufficient RBAC Permissions | Apply cluster-admin role binding |

Alternative Methods
Method 1: Manual Token Generation
If the proxy works but you cannot log in, manually generate a long-lived token for the dashboard-admin user. This bypasses the session timeout issues often seen in newer MicroK8s versions.
microk8s kubectl -n kube-system create token default
Method 2: Patching for External Access
If you need to access the dashboard from a remote IP and keep seeing a blank screen, you may need to change the service type to NodePort and skip the login requirement (only recommended for local development).
microk8s kubectl patch deployment kubernetes-dashboard -n kube-system --type 'json' -p '[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--enable-skip-login"}]'
After patching, restart the dashboard pod to apply the changes. This allows you to bypass the authentication screen entirely, which often resolves rendering issues tied to the login redirect logic.