<@ULVA73B9P> deployed prefect via prefect-helm on ...
# ask-marvin
b
@Marvin deployed prefect via prefect-helm on a pinned version (prefecthq/prefect:3.6.20-python3.11). but i encounter issues when trying to access the dashboard UI:
Copy code
runtime-core.esm-bundler.js:275 

TypeError: Cannot read properties of undefined (reading 'ui')
    at fhe.fn (ContextSidebar.vue:55:71)
    at QX (reactivity.esm-bundler.js:391:28)
    at get value (reactivity.esm-bundler.js:1655:5)
    at setup (ContextSidebar.vue:58:90)
m
thought for 330.3 seconds
Thanks for the details. That stack trace points to the UI trying to read
serverSettings.server.ui...
but getting an undefined object. In practice, this almost always happens when the UI can’t load the server settings from the API (the GET to /api/admin/settings fails or returns an unexpected response), so
serverSettings
(or
serverSettings.server.ui
) is undefined and the Vue component crashes. Quick checks to pinpoint the cause: - In your browser devtools, Network tab, reload the page and look for a request to /api/admin/settings. - Status should be 200 and the JSON should include:
Copy code
{
  "server": {
    "ui": {
      "enabled": true,
      "serve_base": "/",
      "api_url": "...",
      "show_promotional_content": true
    }
  }
}
- If it’s failing (404, 500, CORS, or network error), that’s the root cause. - Hit these endpoints directly in your browser: - https://YOUR-HOST/api/health - https://YOUR-HOST/api/admin/settings - Check the Prefect API server pod logs for startup/errors: -
kubectl logs -f deploy/<your-prefect-server-deployment>
Common causes in Helm/Kubernetes: - Ingress path or subpath mismatch: If you’re serving the UI under a subpath (e.g. /prefect), the API route /api must still resolve correctly. You’ll need to: - Ensure your ingress rewrites map the UI base path and /api correctly to the API service. - Set the server UI base to match your subpath so UI links resolve: - Env var on the server container:
PREFECT_SERVER_UI_SERVE_BASE=/prefect
- UI cannot find the API at the expected URL: - By default, the UI tries window.location.origin +
/api
. If your API is on a different hostname or path, set: -
PREFECT_SERVER_UI_API_URL=<https://your.domain.tld/api>
- Make sure your ingress and CORS allow the browser origin to access that API. - Timing/initialization hiccups: If the API isn’t ready yet, the first UI load can fail. A refresh after the API is ready should load once /api/admin/settings returns. Recommendations: 1) Verify connectivity - Confirm /api/health and /api/admin/settings are reachable from your browser at the same host/path you use for the UI. - If you see CORS errors, allow your UI origin in the API’s CORS configuration and/or adjust ingress headers. 2) If serving behind a subpath or different host - Set these on the Prefect server container (in the Helm chart, add them to the server container env):
Copy code
PREFECT_SERVER_UI_API_URL=<https://your.domain.tld/api>
  PREFECT_SERVER_UI_SERVE_BASE=/           # or your subpath, e.g. /prefect
Then ensure your ingress rewrites /api to the API service and the UI base path to the UI service. 3) Consider updating to the latest 3.6.x patch - There have been small improvements between 3.6.20 and newer 3.6.x that make the UI more resilient if the settings call fails briefly. Changelog: 3.6.20 → 3.6.21 If you can share: - Your prefect-helm chart version - The URL (and whether you’re on a subpath) - Relevant bits of your values.yaml (ingress and any server UI env overrides) - A screenshot or copy of the Network tab result for /api/admin/settings …I can help you zero in on the exact fix and provide the right Helm values snippet.