Skip to content

feat: migrate cluster dashboard from legacy k8s-dashboard to Headlamp#181

Open
BetoFandino wants to merge 2 commits intoopenedx:mainfrom
eduNEXT:JorgeF/headlamp_chart
Open

feat: migrate cluster dashboard from legacy k8s-dashboard to Headlamp#181
BetoFandino wants to merge 2 commits intoopenedx:mainfrom
eduNEXT:JorgeF/headlamp_chart

Conversation

@BetoFandino
Copy link
Copy Markdown
Member

Description

This PR replaces the deprecated kubernetes-dashboard with Headlamp, a modern, extensible, and open-source Kubernetes UI from Kubernetes SIGs.

Since the original dashboard has been moved to a "retired" status, this migration ensures the Harmony project remains up-to-date with current Kubernetes ecosystem standards.

Key Changes

1. Chart Dependency Update

  • Removed: kubernetes-dashboard (v7.14.0) from the kubernetes-retired repository.
  • Added: headlamp (v0.40.0) from the kubernetes-sigs official repository.

2. Values Configuration

  • Refactored values.yaml to replace the k8sdashboard key with headlamp.
  • Updated comments and internal references to reflect Headlamp as the default cluster UI.
  • Cleaned up templates/NOTES.txt to prevent nil pointer evaluation errors when legacy dashboard values are absent.

Recommended Configuration

Ingress Values

The following configuration is recommended for production-like environments using Nginx Ingress and Cert-Manager.

Note: Headlamp's internal service operates on port 80 (HTTP). The Ingress is configured for SSL Termination (HTTPS externally, HTTP internally) to avoid 502/503 errors.

headlamp:
  enabled: true
  ingress:
    enabled: true
    ingressClassName: nginx
    annotations:
      cert-manager.io/cluster-issuer: "letsencrypt-global"
      nginx.ingress.kubernetes.io/ssl-redirect: "true"
      nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
      # Required to match Headlamp's default service protocol
      nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
    tls:
      - hosts:
          - url.dashboard.example.net
        secretName: headlamp-tls
    hosts:
      - host: url.dashboard.example.net
        paths:
          - path: /
            type: Prefix

Security & RBAC

Unlike the previous panel, Headlamp requires explicit authentication. This example provides a GitOps-compatible RBAC configuration that automates token generation for Kubernetes 1.24+ via Secret annotations.

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: {namespace}
---
apiVersion: v1
kind: Secret
metadata:
  name: admin-user-token
  namespace: {namespace}
  annotations:
    # Triggers automatic token generation
    kubernetes.io/service-account.name: admin-user
type: kubernetes.io/service-account-token
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user-binding
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: {namespace}
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin

Migration Guide

For existing installations:

  1. Cleanup: The old dashboard will be automatically disabled as the k8sdashboard key is no longer supported.

  2. Activation: Set headlamp.enabled: true in your implementation values and add the configurations in the ingress value shown in the examples.

  3. Authentication: After implementation and if I configure RBAC as shown in the previous steps, retrieve the login token by running:

kubectl -n {namespace} get secret admin-user-token -o jsonpath={.data.token} | base64 -d

@openedx-webhooks
Copy link
Copy Markdown

Thanks for the pull request, @BetoFandino!

This repository is currently maintained by @openedx/openedx-k8s-harmony-maintainers.

Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review.

🔘 Get product approval

If you haven't already, check this list to see if your contribution needs to go through the product review process.

  • If it does, you'll need to submit a product proposal for your contribution, and have it reviewed by the Product Working Group.
    • This process (including the steps you'll need to take) is documented here.
  • If it doesn't, simply proceed with the next step.
🔘 Provide context

To help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:

  • Dependencies

    This PR must be merged before / after / at the same time as ...

  • Blockers

    This PR is waiting for OEP-1234 to be accepted.

  • Timeline information

    This PR must be merged by XX date because ...

  • Partner information

    This is for a course on edx.org.

  • Supporting documentation
  • Relevant Open edX discussion forum threads
🔘 Get a green build

If one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green.

Details
Where can I find more information?

If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources:

When can I expect my changes to be merged?

Our goal is to get community contributions seen and reviewed as efficiently as possible.

However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:

  • The size and impact of the changes that it introduces
  • The need for product review
  • Maintenance status of the parent repository

💡 As a result it may take up to several weeks or months to complete a review and merge your PR.

@openedx-webhooks openedx-webhooks added the open-source-contribution PR author is not from Axim or 2U label Mar 19, 2026
@BetoFandino BetoFandino requested a review from gabor-boros March 19, 2026 01:33
@github-project-automation github-project-automation bot moved this to Needs Triage in Contributions Mar 19, 2026
@BetoFandino BetoFandino requested a review from jfavellar90 March 19, 2026 01:33
@BetoFandino BetoFandino changed the title Jorge f/headlamp chart feat: migrate cluster dashboard from legacy k8s-dashboard to Headlamp Mar 19, 2026
@mphilbrick211 mphilbrick211 moved this from Needs Triage to Ready for Review in Contributions Mar 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

open-source-contribution PR author is not from Axim or 2U

Projects

Status: Ready for Review

Development

Successfully merging this pull request may close these issues.

3 participants