Deze inzichten voor Kubernetes management komen van Rick Wagenaar, Kubernetes engineer bij True, en van Martijn van Calker, eerder werkzaam als Solutions Architect bij True. We vroegen naar hun inzichten van meer dan 4 jaar Kubernetes management voor klanten van True.
Inzicht 1: Itereren om je Kubernetes platform steeds beter maken
“De belofte van Kubernetes is nog wel eens dat het ál je problemen van ontwikkelen, deployen en managen wegneemt. Al vrij snel nadat we met Kubernetes begonnen, zagen we: dat is het niet”, zegt Martijn. “De weg naar een optimaal Kubernetes platform kent veel optimaliseren, aanpassen en verbeteren. Het is continu itereren om je platform steeds beter te maken. Om telkens de beste oplossing voor dit moment en voor je ambitie in de toekomst te zoeken.”
“Tijdens onze Kubernetes journey maken we steeds meer gebruik van advanced features die het platform kent. Dat kunnen we doen omdat we het platform inrichten en managen voor meerdere klanten. Uiteindelijk willen we Kubernetes uitspelen! Al weten we dat dat niet gaat lukken door de continue doorontwikkeling van Kubernetes zelf,” grapt Rick. “Advanced features gaan bijvoorbeeld over het verhogen van de reliability van je app. Zo kun je 2 instances van je applicaties draaien, op 1 node of op 2 nodes (pod anti-affinity). Bij dat laatste: is er update beschikbaar óf heb je te maken met onverwachte problemen, dan is een node makkelijk te rebooten. Je klanten merken daar helemaal niets van.”
Inzicht 2: De (on)mogelijkheden van het platform door en door kennen
“Kubernetes is ontzettend goed in het schedulen van containers. De grootste uitdaging zit ‘m niet zozeer in het managen van het platform, maar in het kennen van de mogelijkheden en onmogelijkheden”, zegt Rick. “Het automatisch op- en afschalen is gaaf! Maar je webapplicatie moet het wel aankunnen. Heeft een container heel veel tijd nodig om op te schalen, bijvoorbeeld meer dan een minuut, dan heb je voor je klanten niet zoveel aan dit voordeel.”
Martijn: “In de 4 jaar dat we nu Kubernetes managen, hebben we geleerd goed door te vragen bij ontwikkelaars welke kennis ze al hebben, wat de verwachtingen van het platform zijn en hoe hun website of web applicatis is opgebouwd. Daarmee is het makkelijker aan te geven of Kubernetes voor hun organisatie in de richting van de grote probleemoplosser gaat.”
Inzicht 3: Kubernetes is niet alleen een technisch platform, maar ook een cultuur shift
“Alles is anders en nieuw aan het platform in vergelijking met traditionele hosting en monoliete applicaties”, geeft Martijn mee. “Ontwikkelaars moeten niet alleen Kubernetes leren, maar ook Helm charts (package manager voor Kubernetes), ArgoCD (voor automatische deployments), Falco (threat detection engine), en meer tools. Al deze tools – en de werkwijze die ze ondersteunen, zoals DevOps – is nieuw voor een team. Het betekent een cultuur shift in je organisatie en vooral voor je ontwikkelteams.”
“Als voorbeeld: bij traditionele hosting draait een app op een server. Die is daar statefull: alle benodige informatie, data en programmatuur draait op diezelfde server”, zegt Martijn. “Een container echter moet continu op andere plekken kunnen draaien, of dat nu op een niet-productie- of productie-omgeving is. Een container moet zichzelf ook kunnen herstarten. Alleen: een container is stateless en biedt geen ruimte aan opslag van informatie of de state van de container. Storage en data verhuist niet mee als een container opnieuw start. Daar moet je rekening mee houden bij het inrichten en managen van je Kubernetes platform. Dit is nog maar één component; bij The Twelve-factor App vind je een lijst van andere factoren van best practices voor moderne web applicaties.”
Inzicht 4: Samen kom je verder
“Eén van onze inzichten in het begin van onze Kubernetes journey met klanten: alleen een ‘kaal’ platform opzetten, werkt niet. Er komen meer zaken bij kijken dan alleen een container erop zetten! Hoe log je in op een cluster? Hoe regel je storage? Hoe richt je deployments in? Welke tools uit het CNCF landschap wil ik gebruiken en waarvoor?” zegt Rick. “Voor individuele organisaties is het lastig om naast het developmentwerk ook hierop te focussen. Daarom begeleiden we klanten hierin en managen we hun hele Kubernetes platform. Developers kunnen zich zo volledig focussen op ontwikkelen.”
Inzicht 5: Kubernetes is niet ‘opzetten en klaar’
“Kubernetes ontwikkelt zelf ook door: vier keer per jaar komt er een nieuwe upgrade, een nieuwe versie, van het platform uit. Heb je een applicatie op een oude versie van het platform staan, dan is deze niet per definitie compatible met de nieuwe update. Dat gebeurt vooral als je meer dan 2 updates achterloopt”, zegt Martijn. “Ons inzicht: houd vooral in de gaten wat deprecated wordt, welke oude versies van configuraties eruit gaan en op welke manier je jouw app naar de nieuwe configuraties kunt overzetten. Vanuit True houden we voor klanten in de gaten welke configuraties deprecated raken, controleren hun platform en app en geven aan waar het spaak kan lopen. Dan valt de upgrade heel erg mee!”
Rick vult aan: “Veel van onze klanten hebben 2 Kubernetes platformen bij ons: een productie-cluster en een klein testcluster. Deze testclusters gebruiken we samen met de klant om de compabiliteit van hun app met de nieuwste versie te testen. Voordat de productie-omgeving naar de nieuwe upgrade overgaat, weten we door de upgrade in het testcluster al waar het werkt en waar het aangepast moet worden.”
Bonus-inzicht: wat is je persoonlijke inzicht van de afgelopen 4 jaar inrichten en onderhouden van Kubernetes?
Martijn: “Wat mijn inzicht van 4 jaar werken met Kubernetes is, is vooral het steeds verder naar de klant groeien. We begonnen met een kaal platform, een kaal cluster, dat de klant zelf moest inrichten, zelf de applicatie op moest zetten en zelf moest deployen. Nu bieden we complete inrichting en architectuur aan, met tools die goed samenwerken en zich bewezen hebben. Onze volgende stap: het managen van je pipelines en (automatische) deployments als dienstverlening. Supertof!”
Rick: “We sleutelen en optimaliseren continu om applicaties toe te voegen aan de standaard set-up van Kubernetes, bouwen daar automatisering voor in, voegen eigen operators en pipelines toe om het uit te breiden. Met geleerde best practices en automatisering van bijvoorbeeld deployments geven we een blauwdruk aan klanten mee voor hun werkwijze. Dat vinden ze gaaf!”
Meer informatie over Fully Managed Kubernetes?
Steeds meer ontwikkelteams verkennen containerisatie en microservices. Het levert veel voordelen op maar kan ook complex zijn. Fully Managed Kubernetes helpt ontwikkelteams met meer efficiëntie en zorgvuldigheid te ontwikkelen.