How to Install Kubernetes Dashboard Using Helm

Easily set up the Kubernetes Dashboard using Helm, a powerful tool for visualizing and managing your Kubernetes cluster through a web-based interface.

Kubernetes Dashboard is a popular web-based UI for managing Kubernetes clusters, providing insights into your cluster's status, resource usage, and workloads. Helm, the package manager for Kubernetes, simplifies the installation and management of Kubernetes applications. In this guide, we'll walk you through installing the Kubernetes Dashboard using Helm, enabling you to efficiently manage your Kubernetes resources with an intuitive graphical interface.

Table of Contents

  1. Introduction
  2. Prerequisites
  3. Setting Up Helm
  4. Installing Kubernetes Dashboard
  5. Accessing the Dashboard
  6. Configuring Access and Permissions
  7. Managing Your Cluster with the Dashboard
  8. Troubleshooting Common Issues
  9. Conclusion

1. Introduction

The Kubernetes Dashboard offers a convenient way to interact with your Kubernetes cluster, allowing you to deploy applications, troubleshoot issues, and manage resources. By using Helm, we can streamline the installation process, ensuring that all dependencies and configurations are handled automatically.

2. Prerequisites

Before starting, ensure you have the following:

  • A running Kubernetes cluster.
  • kubectl installed and configured to interact with your cluster.
  • Helm installed on your local machine.
  • Sufficient permissions to deploy resources in your Kubernetes cluster.

3. Setting Up Helm

If Helm is not already installed, follow these steps to set it up:

3.1 Install Helm

Download and install Helm using the following script:

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

Verify the installation by checking the Helm version:

helm version

3.2 Initialize Helm (If using Helm v2)

If you're using Helm v2, initialize Helm and set up Tiller:

helm init --service-account tiller

For Helm v3, Tiller is not required, simplifying the setup process.

4. Installing Kubernetes Dashboard

4.1 Add the Kubernetes Dashboard Helm Repository

First, add the official Helm stable repository if you haven't already:

helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/ helm repo update

4.2 Install the Kubernetes Dashboard

Install the Kubernetes Dashboard using the Helm chart:

helm install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --namespace kubernetes-dashboard --create-namespace

This command installs the dashboard in the kubernetes-dashboard namespace, creating the namespace if it doesn't already exist.

5. Accessing the Dashboard

5.1 Create a Service Account and ClusterRoleBinding

To access the dashboard, you'll need a service account with appropriate permissions. Create a service account and bind it to the cluster-admin role:

kubectl create serviceaccount dashboard-admin-sa -n kubernetes-dashboard kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin-sa

5.2 Obtain the Bearer Token

Retrieve the bearer token for the service account:

kubectl get secret $(kubectl get serviceaccount dashboard-admin-sa -n kubernetes-dashboard -o jsonpath="{.secrets[0].name}") -n kubernetes-dashboard -o jsonpath="{.data.token}" | base64 --decode

Copy the output token, as you'll need it to log in to the dashboard.

5.3 Access the Dashboard

To access the dashboard, start a proxy server:

kubectl proxy

Open a web browser and navigate to the following URL:

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

Log in using the bearer token obtained earlier.

6. Configuring Access and Permissions

For a more secure and fine-grained access control, consider creating specific roles and role bindings:

6.1 Create a Role and RoleBinding

Create a custom role with limited permissions:

apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata:  namespace: kubernetes-dashboard  name: dashboard-viewer rules: - apiGroups: [""]  resources: ["pods", "services", "deployments"]  verbs: ["get", "list", "watch"]

Apply the role:

kubectl apply -f role-dashboard-viewer.yaml

Bind the role to a service account:

kubectl create rolebinding dashboard-viewer-binding --role=dashboard-viewer --serviceaccount=kubernetes-dashboard:dashboard-admin-sa --namespace=kubernetes-dashboard

6.2 Update the Service Account

Modify the service account to use the new role:

kubectl delete clusterrolebinding dashboard-admin-sa kubectl create rolebinding dashboard-admin-sa-binding --clusterrole=dashboard-viewer --serviceaccount=kubernetes-dashboard:dashboard-admin-sa --namespace=kubernetes-dashboard

7. Managing Your Cluster with the Dashboard

Once logged into the dashboard, you can perform various tasks:

7.1 Monitoring Cluster Health

The dashboard provides an overview of your cluster's health, including node status, resource usage, and workload performance.

7.2 Deploying Applications

You can deploy applications directly from the dashboard by providing a YAML file or using the form-based interface.

7.3 Managing Resources

View and manage all Kubernetes resources, including pods, deployments, services, and more. The dashboard makes it easy to scale deployments, restart pods, and troubleshoot issues.

7.4 Viewing Logs

Access logs for individual pods and containers to diagnose issues and monitor application performance.

8. Troubleshooting Common Issues

Here are some common issues you might encounter and their solutions:

8.1 Dashboard Not Accessible

Ensure the proxy server is running and you are using the correct URL. Verify the service account has the necessary permissions.

8.2 Authentication Issues

Check that the bearer token is correct and has not expired. Regenerate the token if necessary.

8.3 Permissions Errors

Review your role and role bindings to ensure the service account has the appropriate permissions for the actions you're trying to perform.

9. Conclusion

By following this guide, you've successfully installed the Kubernetes Dashboard using Helm, providing a powerful and user-friendly interface for managing your Kubernetes clusters. The dashboard enhances visibility and control, making it easier to deploy, monitor, and troubleshoot applications. For more advanced configurations and further reading, refer to the official Kubernetes Dashboard documentation and the Helm documentation.

References:

By following these steps, you've integrated the Kubernetes Dashboard into your cluster, leveraging Helm's simplicity and power. This setup enhances your ability to manage and monitor your Kubernetes environment effectively, providing a centralized, graphical interface for all your cluster management needs.