<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Deepanshu Bisht</title>
    <description>The latest articles on DEV Community by Deepanshu Bisht (@deebi9).</description>
    <link>https://dev.to/deebi9</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3020350%2Fa3606e66-cb39-4672-a881-f671618f00ea.jpeg</url>
      <title>DEV Community: Deepanshu Bisht</title>
      <link>https://dev.to/deebi9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/deebi9"/>
    <language>en</language>
    <item>
      <title>Kubernetes Dashboard: Headlamp on Kind</title>
      <dc:creator>Deepanshu Bisht</dc:creator>
      <pubDate>Sat, 05 Apr 2025 19:44:17 +0000</pubDate>
      <link>https://dev.to/deebi9/kubernetes-dashboard-headlamp-on-kind-3c2d</link>
      <guid>https://dev.to/deebi9/kubernetes-dashboard-headlamp-on-kind-3c2d</guid>
      <description>&lt;p&gt;Headlamp is a Kubernetes UI that helps you visualize your containerized workloads through a user-friendly graphical interface.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgh1g37jatmmxlvwzcdus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgh1g37jatmmxlvwzcdus.png" alt="Image description" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s especially useful for beginners who might feel overwhelmed when using Kubernetes only through the CLI.&lt;/p&gt;

&lt;p&gt;With the growing popularity of &lt;strong&gt;Kind (Kubernetes IN Docker)&lt;/strong&gt; for local Kubernetes testing and development, it's helpful to pair Headlamp with it for better visualization.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing Kind
&lt;/h3&gt;

&lt;p&gt;You can follow the &lt;a href="https://kind.sigs.k8s.io/docs/user/quick-start/#installation" rel="noopener noreferrer"&gt;official guide&lt;/a&gt; to install Kind.&lt;br&gt;
For this tutorial, we used Kind v0.26.0.&lt;/p&gt;
&lt;h3&gt;
  
  
  Installing Headlamp in Kind
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Step 1: Create a Kind Cluster
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kind create cluster --name kind-cluster
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xhu6d7w0cb0ep7zgtkl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xhu6d7w0cb0ep7zgtkl.png" alt="Image description" width="800" height="323"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 2: Switch Context to Kind
&lt;/h4&gt;

&lt;p&gt;If you're using Minikube or another cluster, make sure to switch to your new Kind context:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl config use-context kind-kind-cluster
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqpp1gs7hgmqqkhbbrn7m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqpp1gs7hgmqqkhbbrn7m.png" alt="Image description" width="705" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3: Deploy Headlamp Using the Manifest
&lt;/h4&gt;

&lt;p&gt;Apply the official Headlamp deployment manifest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f https://raw.githubusercontent.com/kinvolk/headlamp/main/kubernetes-headlamp.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw0yp2n4qb81jyfqr2huo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw0yp2n4qb81jyfqr2huo.png" alt="Image description" width="800" height="104"&gt;&lt;/a&gt;&lt;br&gt;
This uses the &lt;code&gt;kube-system&lt;/code&gt; namespace by default.&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 4: Verify the Deployment
&lt;/h4&gt;

&lt;p&gt;Check if the Headlamp pod and service are running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get pods,svc -n kube-system
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhchpnmbu856weokyweue.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhchpnmbu856weokyweue.png" alt="Image description" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Accessing the Dashboard
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Port Forward the Service
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl port-forward -n kube-system service/headlamp 8080:80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqlit48i93p49uzrj9m0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqlit48i93p49uzrj9m0.png" alt="Image description" width="800" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now open &lt;code&gt;http://localhost:8080&lt;/code&gt; in your browser.&lt;/p&gt;

&lt;h3&gt;
  
  
  Logging in with a Service Account Token
&lt;/h3&gt;

&lt;p&gt;To access the dashboard, you’ll need to authenticate with a service account token.&lt;/p&gt;

&lt;h4&gt;
  
  
  Create a Service Account
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl -n kube-system create serviceaccount headlamp-admin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Bind Admin Role
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl create clusterrolebinding headlamp-admin --serviceaccount=kube-system:headlamp-admin --clusterrole=cluster-admin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Generate the Token
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl create token headlamp-admin -n kube-system
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Copy the token and paste it into the Headlamp login screen&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You’ll be redirected to the full dashboard:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cez0bumxgrqt98cheqo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cez0bumxgrqt98cheqo.png" alt="Image description" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;In this blog, we walked through setting up Headlamp in a Kind cluster from scratch. After creating a Kind cluster, switching context, deploying Headlamp using the official manifest, and accessing it via port-forwarding, you now have a clean and functional Kubernetes UI.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why Headlamp?
&lt;/h4&gt;

&lt;p&gt;It provides a beginner-friendly GUI to visualize resources, inspect logs, and monitor workloads which makes it easier for newcomers to explore Kubernetes.&lt;/p&gt;

&lt;p&gt;For production environments, avoid giving full admin access. Instead, follow the principle of least privilege by configuring RBAC carefully. You can also integrate &lt;a href="https://headlamp.dev/docs/latest/installation/in-cluster/oidc" rel="noopener noreferrer"&gt;OIDC&lt;/a&gt; for secure authentication&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>kind</category>
      <category>headlamp</category>
    </item>
  </channel>
</rss>
