Kubernetes is natuurlijk een super krachtig en mooi container orchestration platform. Ondanks dat de meeste zichzelf respecterende ontwikkelaars zullen claimen alleen nog gebruik te willen maken van de CLI tool kubectl, is voor sommige beginnende- of wat minder keyboard georiënteerde senior kubernetes adepts, het dashboard een mooie tool om snel en goed inzicht te krijgen in de status van het platform. In dat geval is kubectl proxy al snel het eerste commando wat men zal gebruiken.

De visuele indicatoren over de status van de deployments, pods, replica’s en de hoeveelheid CPU of memory gebruik zijn vaak een heel handig hulpmiddel in het geval men moet troubleshooten.

Maar zoals de oom al aan Spider-Man vertelde “With great power, comes great responsibility”. Het kubernetes dashboard heeft standaard veel mogelijkheden die men wellicht niet aan iedereen beschikbaar wil stellen, zoals het inzien van de secrets het verwijderen van deployment of het aanpassen van yaml bestanden. Hoe geeft men nu gebruikers nu wel toegang tot het kubernetes dashboard maar geen toegang tot alle overige beschikbare functionaliteiten?

Dit is mogelijk door gebruikers b.v. lees rechten te geven op kubernetes en deze uit te breiden met een minimale set aan rules welke benodigd zijn om het dashboard te starten. Dan kan men als gebruiker het dashboard openen met alleen lees rechten. De gebruikers van kubernetes moeten hiervoor natuurlijk wel inloggen met een een persoonlijke account, dit kan men bewerkstelligen door kubernetes te koppelen met een RBAC (role based access control) uit b.v. AzureAD. Meer informatie hierover kan men hier vinden.

Inrichting “alleen lees” rechten role

Kubernetes heeft een aantal standaard cluster rollen beschikbaar. De “view” role is er hier één van. Deze role geeft gebruikers rechten om alles (behalve de secrets) in te zien, maar ze kunnen niets aan passen.

Deze rol is een ideaal startpunt om de rechten voor het kubernetes dashboard aan toe te voegen. Men kan de configuratie yaml van deze bestaande rol uitvragen met het volgende commando: kubectl get clusterrole view –o yaml

Vervolgens kan men hier een nieuwe clusterrole van maken door de naam aan te passen (in dit geval ‘rbacview’), en de volgende minimale set van rechten voor het dashboard eraan toe te voegen:

Vervolgens kan men dan een ClusterRoleBinding aanmaken voor een specifieke group uit AzureAD:

De clusterrolebinding heeft een referentie naar de clusterrole (in dit geval ‘rbacview’). Met deze wijziging heeft de gespecificeerde groep nu de mogelijkheid om het kubernetes dashboard te open met alleen lees rechten.

Auteur: Patrick Bes, Bergler Competence Center © 2019