In einem K3D Cluster das Kubernetes Dashboard deployen
Hat man einen K3D Cluster aufgesetzt, dann liegt es gerade in den Anfängen nahe das Dashboard zu installieren. Für das Kubernetes Dashboard gibt es sogar ein Helm Chart.
Die Installation mit Helm ist ja an und für sich nicht schwierig, nur wird man nach der Installation eine Überraschung erleben. Folgt man der Anleitung:
# Add kubernetes-dashboard repository
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
# Deploy a Helm Release named "my-release" using the kubernetes-dashboard chart
helm install kubernetes-dashboard/kubernetes-dashboard --name my-release
Nach der Installation wird man anders als gedacht, von einem freundlichen internal server error empfangen.
Ingress
Der Ingress-Controler steuert das Routing anhand der vorhandenen Host Informationen im Header. Bei K3S/K3D wird implitziet Traefik v1.7 installiert.
Diese sorg für das genannte Problem und daher müssen wir ein paar Änderungen vornehmen, damit wir das Dashboard mit dem K3D Cluster zum laufen bringen.
Variante 1
Man übergibt direkt in den ingress.annotations die ingress.class=traefik und setzt den Host direkt.
--set ingress.annotations."kubernetes\.io/ingress\.class"=traefik \
--set ingress.enabled=true \
--set ingress.hosts[0]=dashboard.k3d.duckdns.org
Variante 2
Bei der Variante 2 wird das Ingress in dem Helm Chart nicht genutzt und das Ingress klassisch als Kubernetes Manifest gesetzt.
Ingress in dem Helm Chart deaktivieren
Wie bereits angesprochen, müssen wir zunächst das Ingress in dem Helm Chart deaktivieren. Das geschied über den Parameter **–set ingress.enabled=false **
--set ingress.enabled=false
Traefik Ingress per Kubernetes Manifest
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
labels:
name: kubernetes-dashboard
name: kubernetes-dashboard-secure
namespace: default
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: dashboard.k3d.duckdns.org
http:
paths:
- backend:
serviceName: dashboard-kubernetes-dashboard
servicePort: 8080
Das Skript create_cluster_admin.sh
Das Skript create_cluster_admin.sh verwende ich, um einen Service Account mit der Rolle cluster-admin.
create_cluster_admin dashboard
Installation
Insgesamt ergeben sich nun daraus folgende Installationsschritte.
# add repo
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
# add SA for Dashboard
create_cluster_admin.sh dashboard
# install chart
helm install dashboard kubernetes-dashboard/kubernetes-dashboard --set protocolHttp=true --set metricsScraper.enabled=true --set service.externalPort=8080 --set serviceAccount.name=dashboard --set serviceAccount.create=false
# set traefik ingress
kubectl apply -f ./ingress.yaml