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
- 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. - Basiskennis van Kubernetes.
Wat zullen we doen?
- Implementeer het Kubernetes Dashboard.
- Stel een ServiceAccount in om toegang te krijgen tot het Kubernetes Dashboard.
- 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
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
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
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
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
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}')
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
Als je je met succes aangemeld hebt, zou je het Kubernetes Dashboard als volgt moeten zien.
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.
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.