Files
headlamp-polaris-plugin/deployment/PLUGIN_LOADING_FIX.md
T
Chris Farhood 20e8063cbb chore: bump version to 0.3.1
- Update package.json version
- Update artifacthub-pkg.yml version and archive URL
- Add PROJECT_ASSESSMENT.md for tracking improvements
- Add deployment/ directory with plugin loading fix documentation

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-02-11 21:48:04 -05:00

2.5 KiB

Headlamp Plugin Loading Issue - Root Cause and Fix

Problem

Headlamp v0.39.0 was not loading plugins installed via the plugin manager. Plugins appeared in Settings → Plugins but:

  • No sidebar entries appeared
  • No plugin settings were available
  • Plugin JavaScript was not being executed in the browser

Root Cause

When config.watchPlugins: true (the default), Headlamp treats catalog-managed plugins in /headlamp/plugins/ as "development directory" plugins. This causes:

  • Backend serves plugin metadata correctly
  • Backend logs show "Treating catalog-installed plugin in development directory as user plugin"
  • Frontend does NOT execute the plugin JavaScript
  • Plugin registrations (registerSidebarEntry, registerRoute, etc.) never happen

Solution

Set config.watchPlugins: false in the Headlamp HelmRelease values:

spec:
  values:
    config:
      watchPlugins: false
    pluginsManager:
      enabled: true
      configContent: |
        plugins:
          - name: polaris
            source: https://artifacthub.io/packages/headlamp/polaris/headlamp-polaris-plugin
          # ... other plugins

Why This Works

With watchPlugins: false:

  • Headlamp no longer treats catalog-managed plugins as "development" plugins
  • Frontend properly loads and executes plugin JavaScript on startup
  • Plugin registrations happen correctly
  • All plugin features (sidebar, routes, settings, etc.) work as expected

Testing

After applying this fix:

  1. Verify plugins are installed: kubectl logs -n kube-system <headlamp-pod> -c headlamp-plugin
  2. Verify watchPlugins is false: kubectl logs -n kube-system <headlamp-pod> -c headlamp | grep "Watch Plugins"
  3. Hard refresh browser (Cmd+Shift+R / Ctrl+Shift+F5) to clear cached JavaScript
  4. Verify plugin sidebar entries appear
  5. Verify plugin functionality works

Additional Notes

  • This appears to be a bug/limitation in Headlamp v0.39.0
  • The watchPlugins feature is intended for development scenarios where plugins are being actively modified
  • For production deployments with catalog-managed plugins, watchPlugins: false is the correct configuration
  • Once plugins are loaded, subsequent restarts or updates work correctly as long as watchPlugins remains false

References