Web UI Dashboard voor Kubernetes

Kubernetes dashboard biedt een webgebaseerde UI voor het cluster. Men kan toepassingen op het cluster inzetten met behulp van het dashboard, en ook de bestaande toepassingen in het cluster troubleshooten. Het dashboard geeft ook inzicht in de middelen in het cluster. Het dashboard wordt officieel door Kubernetes verstrekt. Men kan Kubernetes objecten maken, wijzigen, bijwerken en verwijderen met behulp van het dashboard.

In dit artikel zullen we het officiële door Kubernetes verschafte dashboard installeren en een dienstaccount instellen om er toegang toe te krijgen. Alvorens verder te gaan met dit artikel, wordt aangenomen dat je bekend bent met Kubernetes en een Kubernetes Cluster hebt.

Pre-requisites

  1. Kubernetes Cluster met ten minste 1 worker node.
    Als je wilt leren hoe je een Kubernetes Cluster maakt, klik danhier. Deze gids helpt je een Kubernetes cluster te maken met 1 Master en 2 Worker Nodes op AWS Ubuntu 18.04 EC2 Instances.
  2. Basiskennis van Kubernetes.

Wat zullen we doen?

  1. Implementeer het Kubernetes Dashboard.
  2. Stel een ServiceAccount in om toegang te krijgen tot het Kubernetes Dashboard.
  3. Krijg toegang tot het Kubernetes Dashboard.

Zet het Kubernetes Dashboard uit

Om het Kubernetes dashboard in te zetten, kunnen we het objectbestand ervan downloaden van Github. Gebruik het volgende commando om het objectbestand te downloaden. Dit bestand bevat definities voor Namespace, ServiceAccount, Service, Secret, ConfigMap, Role, ClusterRole, RoleBinding, ClusterRoleBinding, Deployment, Service.

pwd
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

Download sjablonen

Hernoem het bestand en verander het diensttype in NodePort. Zie de volgende schermafbeelding.

mv recommended.yaml kubernetes-dashboard-deployment.yml
vim kubernetes-dashboard-deployment.yml

Verander Diensttype in NodePort

Als je het diensttype veranderd hebt in NodePort, is het tijd om alle objecten aan te maken die verantwoordelijk zijn voor het inzetten van het Kubernetes dashboard.

kubectl apply -f kubernetes-dashboard-deployment.yml

Bekijk de inzet, Pod, Dienst die met het bovenstaande commando is aangemaakt. Het bovenstaande commando maakt ook Namespace, ServiceAccount, Service, Secret, ConfigMap, Role, ClusterRole, RoleBinding, ClusterRoleBinding, Inzet, Dienst aan.

kubectl get deployments -n kubernetes-dashboard
kubectl get svc
kubectl get pods
kubectl get pods -n kubernetes-dashboard
kubectl get svc -n kubernetes-dashboard

Maak Kubernetes objecten voor het dashboard

In de bovenstaande schermafbeelding zie je dat de Kubernetes Dashboard Dienst met het type “NodePort” is aangemaakt. Dat betekent dat het dashboard beschikbaar zal zijn op elk van de IP’s van de knooppunten op NodePort “32304”. Mogelijk zie je op je cluster een andere poort voor de dienst.

Gebruik het volgende commando om de IP’s van je knooppunten te krijgen die je in de latere stappen nodig hebt.

kubectl get nodes -o wide

Stel een ServiceAccount in om toegang te krijgen tot het Kubernetes Dashboard

Om toegang te krijgen tot het Kubernetes Dashboard heb je een token nodig. Om een token te maken moeten we eerst een ServiceAccount aanmaken

Maak een nieuw bestand en voeg er de volgende inhoud aan toe om een ServiceAccount te maken. Je kunt het objectbestand ook downloaden uit mijnGithub repo.

vim admin-sa.yml
cat admin-sa.yml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: rahul-admin
  namespace: kube-system

Als je het object bestand hebt, voer je het volgende commando uit om een ServiceAccount aan te maken.

kubectl apply -f admin-sa.yml

Maak een Service Account aan

Nu moet je de ServiceAccount “rahul-admin” koppelen aan de clusterrol “cluster-admin”. Maak een nieuw bestand met de volgende inhoud om een ClusterRoleBinding te maken of klikhier om het objectbestand te downloaden uit mijn Github repo.

vim admin-rbac.yml
cat admin-rbac.yml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: rahul-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: rahul-admin
    namespace: kube-system

Voer het volgende commando uit om een “ClusterRoleBinding” te maken.

kubectl apply -f admin-rbac.yml

Maak een ClusterRoleBinding

Nu hebben we een “ClusterRole” –> “cluster-admin” gebonden aan de “ServiceAccount” –> “rahul-admin”.

We zijn nu klaar om het token op te halen dat gebruikt wordt om in te loggen in het Kubernetes dashboard. Om het token op te halen voer je de volgende commando’s uit.

SA_NAME="rahul-admin"
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${SA_NAME} | awk '{print $1}')

Krijg de penning

In de bovenstaande schermafbeelding zie je een token dat gebruikt moet worden om in te loggen in het Kubernetes dashboard. Kopieer dit token en sla de URL van het dashboard aan op “NodeIP:NodePort”.

Hier is NodeIP het IP van een van de knooppunten in het cluster en NodePort de poort (in dit geval is het 32304, in jouw geval kun je een andere poort hebben) van de dienst die we gemaakt hebben.

Zodra je de URL “NodeIP:NodePort” aanklikt, zie je een scherm als volgt. Kies hier de optie “Token”, voer de Token in die we in de bovenstaande stap opgehaald hebben en klik op de knop “Sign in”.

Toegang tot het Kubernetes Dashboard

Ga naar het Dashboard op IP:NodePort

Als je je met succes aangemeld hebt, zou je het Kubernetes Dashboard als volgt moeten zien.

Het Dashboard - Standaard Naamruimte

Bovenaan het scherm kun je zelfs de Namespace veranderen en er resources in zien. Nu ben je helemaal klaar om het Kubernetes Dashboard te verkennen.

Het Dashboard - kubernetes-dashboard namespace

Conclusie

In dit artikel hebben we alle benodigde Kubernetes objecten ingezet om het Dashboard in het cluster te hebben. We maakten een ServiceAccount en ClusterRoleBinding aan om een Token te hebben voor toegang tot het Kubernetes Dashboard, want het kan niet eenvoudig worden benaderd. Het dashboard kan je helpen om inzicht te krijgen in het cluster en alle objecten te zien die er in zitten.