Kubeapps is een platform voor het beheren en uitrollen van toepassingen op een Kubernetes-cluster. Het biedt een eenvoudige en gebruiksvriendelijke interface voor het zoeken, installeren, updaten en beheren van toepassingen en diensten op een Kubernetes-cluster.
Met Kubeapps kun je snel en eenvoudig toepassingen installeren die zijn opgeslagen in verschillende soorten registries, zoals Docker Hub, Quay.io en andere privéregistries. Je kunt bovendien toepassingen bekijken en beheren via een dashboard vanuit je browser, waarmee je snel kunt zien hoe toepassingen presteren, welke versies beschikbaar zijn en hoe je deze kunt updaten of verwijderen.
In deze handleiding laten we zien hoe je Kubeapps installeert op je Kubernetes-cluster.
Voor de stappen in deze handleiding heb je de Helm package manager nodig, zie onze Helm-installatiehandleiding.
Kubeapps installeren
Stap 1
Installeer de Kubeapps Helm chart met het commando:
helm install my-release bitnami/kubeapps
Je bent vrij de naam 'my-release' naar wens aan te passen.
Stap 2
Na de installatie krijg je een melding te zien met daarin twee commando's. Voer deze nog niet uit:
echo "Kubeapps URL: http://127.0.0.1:8080" kubectl port-forward --namespace default service/my-release-kubeapps 8080:80
Het eerste commando laat het adres zien waar je vanaf je computer met Kubeapps mee kunt verbinden na het uitvoeren van het tweede commando. Het tweede commando stelt Kubeapps enkel beschikbaar vanaf de computer waar je dit tweede commando op uitvoert.
Als je ook vanaf andere locaties gebruik wil kunnen maken van Kubeapps, is het handiger om een loadbalancer service aan te maken voor Kubeapps, zodat je een IP-adres krijgt waarmee je ook extern kunt verbinden met Kubeapps. Gebruik hiervoor het commando:
kubectl expose deploy my-release-kubeapps --port=8080 --type=LoadBalancer --name=kubeapps-lb
My-apps-kubeapps is in dit voorbeeld zowel de naam van de deployment, als van een van de actieve services (te controleren met kubectl get svc). Standaard maakt het kubectl expose deploy commando een loadbalancer aan met de naam van de service, wat hier niet mogelijk is. De toevoeging --name= zorgt ervoor dat de loadbalancer service een andere naam krijgt.
Het duurt even voor de loadbalancer service een extern IP-adres toegewezen heeft gekregen. We komen hier verderop in deze handleiding op terug.
Stap 3
Om gebruik te kunnen maken van Kubeapps heb je een 'token' nodig. Voor een 'user-facing installatie' raad Kubeapps aan om een OAuth2/OIDC provider te configureren. Voor overige use cases, volstaat doorgaans een Kubernetes service account en de daarbij horende API token. In deze handleiding gaan we uit van het laatste.
Maak een Kubernetes service account en bijbehorende secret (de secret bevat de token) aan voor Kubeapps als volgt:
kubectl create --namespace default serviceaccount kubeapps-operator
kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=default:kubeapps-operator
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
name: kubeapps-operator-token
namespace: default
annotations:
kubernetes.io/service-account.name: kubeapps-operator
type: kubernetes.io/service-account-token
EOF
Let op: in het tweede commando geef je het service account de 'clusterrole' cluster-admin. Voor de beheerder van een cluster is dat in veel gevallen prima, maar je kunt de rechten van gebruikers verder specificeren. Zo kun je een gebruiker bijvoorbeeld ook enkel lees en/of schrijfrechten geven. Meer informatie daarover vind je hier.
Stap 4
Vraag de token op met het commando:
Linux/MacOS:
kubectl get --namespace default secret kubeapps-operator-token -o go-template='{{.data.token | base64decode}}'
Werkt je token niet? Probeer dan het volgende commando:
kubectl describe secret kubeapps-operator-token
Windows Powershell:
[Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($(kubectl get --namespace default secret kubeapps-operator-token -o jsonpath='{.data.token}')))
Stap 5
Vraag het externe IP-adres van je LoadBalancer-service op:
kubectl get svc kubeapps-lb
Mocht je in stap 2 een andere naam voor je loadbalancer hebben gebruikt, vervang dan kubeapps-lb door die naam.
Het externe IP-adres ziet er ongeveer als volgt uit:
88-44-123-123.haip.transip.net
Het is vrij lastig om een dergelijk adres te onthouden, dus het is altijd aan te raden om een (sub)domein te gebruiken en die naar dit adres te verwijzen.
Stap 6
Ga in een browser naar het externe IP-adres, of je eigen (sub)domein, met de toevoeging :8080
:8080
Je wordt gegroet door een inlogscherm. Log hier in met het in stap 4 opgevraagde token.
Gefeliciteerd! Je kunt nu eenvoudig via Kubeapps applicaties op je Kubernetes-cluster installeren.