In korte tijd is Kubernetes het populairste platform geworden voor het beheren en aansturen van applicaties over netwerken. Waarom is dit eigenlijk en wat zijn de voordelen?
In onze vorige blog beschreven we al de ontstaansgeschiedenis van het platform, dat ooit begon als intern beheersysteem voor applicatiemanagement bij Google (toen nog onder de naam ‘Borg’) en zich met het project Omega ontwikkelde tot de wereldwijde standaard voor het ontwikkelen, testen en uitrollen van applicaties in containers. De Cloud Native Computing Foundation (CNCF), die als onafhankelijke stichting de software beheert, omschrijft Kubernetes als volgt: “Kubernetes is a portable, extensible open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation.”Een flinke zin, die – hoewel zeker niet onjuist – nog niet meteen uitlegt wat de praktische voordelen zijn. En dat zijn er veel. Wij geven er hieronder alvast zeven.
1 – Meerdere versies in dezelfde container
Eén van de belangrijkste voordelen van Kubernetes is het kunnen draaien van meerdere versies van een applicatie tegelijk. Hierdoor hoeft software niet meer achtereenvolgens door verschillende test- en acceptatieomgevingen voordat deze ‘live’ kan gaan. Een strategie rondom continuous deploymentstelt beheerders in staat snel en in korte cycli veel software uit te rollen, zonder het risico dat een dienst uitvalt. Want mocht iets onverhoopt toch niet werken, dan is het heel eenvoudig om terug te schakelen naar de oudere – werkende – versie van de software. Het gelijktijdig draaien van versies brengt daarbij ook nog eens nieuwe mogelijkheden met zich mee zoals het A/B-testen van verschillende designs, iets wat met name marketingprofessionals al jaren doen met content.
2 – Modulair
Applicaties zijn het meest effectief als modules klein zijn. Neem als voorbeeld Gmail, dat op de achtergrond communiceert met allerlei services, afhankelijk van het profiel en achtergrond van de gebruiker. Al deze services zijn ook eenvoudig te vervangen, te updaten en/of op te schalen, zonder dat de gebruiker hier hinder van hoeft te ondervinden. Deze denkwijze is de basis van de schaalbaarheid die grote internetbedrijven als Google, Amazon en LinkedIn gebruiken om hun dienstverlening continu te verbeteren en uit te breiden.
3 – Aansturen van netwerkdiensten
Meerdere versies kunnen draaien en het hebben van afzonderlijke modules is voor de businesskant ook erg voordelig. Maar ook aan de controlekant is Kubernetes interessant. De IT-infrastructuur van bedrijven bevindt zich steeds vaker in verschillende datacenters en het bereiken van de (eind)klant van daaruit is een belangrijke overweging. Daarbij geldt dat software tegenwoordig vaak een kernonderdeel is van producten is geworden. Philips bijvoorbeeld, is van oorsprong een lampenfabrikant maar door de komst van technologie zoals Internet of Things (IoT) en via wifi aangestuurde verlichting heeft het bedrijf inmiddels toch echt een probleem als de online lampenservice eruit ligt. Kubernetes schakelt op een betrouwbare manier netwerkdiensten in voor miljoenen gebruikers overal ter wereld, zonder dat een organisatie veel omkijken heeft naar traditionele netwerkvraagstukken zoals configuraties met routers, switches en load balancers. Schaalbaar is deze benadering ook nog eens. Doordat alle netwerkcomponenten in containers draaien, wordt het mogelijk volledige clusters te updaten of te upgraden terwijl ze in gebruik zijn.
4 – Eén taal voor alle onderdelen
Een ander belangrijk – en vaak vergeten – voordeel is de ‘declarative configuration’. Dit is één manier om alle onderdelen te beschrijven. Waar vroeger vijf specialisten nodig waren voor elk onderdeel (netwerk, machine, OS, back-up, routing, etc.) met allemaal hun eigen programmeertalen voor systemen, die vervolgens magischerwijs samen moesten komen – en wat eigenlijk nooit goed ging – is er nu één taal en één beschrijving. Dit betekent dat er ruimte ontstaat voor generalisten in IT en bovendien, in de toekomst, mogelijkheden om clusters aan te sturen door middel van AI.
5 – Automation
Een grappig aspect van Kubernetes is dat de software ervanuit gaat dat de gebruiker niet weet wat hij doet. Dat betekent dat deze niet constant alles gevraagd hoeft te worden. Wie als gebruiker een applicatie stopzet, zal merken dat Kubernetes automatisch een nieuwe opstart. Dit is het auto healing-aspect van Kubernetes. De consequentie ervan is dat, mocht een component stukgaan, er altijd weer een andere wordt opgestart. Dit is een sterk mechanisme waardoor een dienst altijd blijft draaien. Automation betekent bij Kubernetes bovendien ook auto scaling. Als machines overbelast raken, bijvoorbeeld door veel bezoekers op een website, treedt automatisch een load balancerin werking die de volgende machine opstart, waardoor de site goed bereikbaar blijft.
6 – Open source
Omdat alles bij Kubernetes draait op basis van API’s en open-source, is het mogelijk er eigen modules aan te hangen. Bijvoorbeeld voor het linken van applicaties of een database. Hier zijn tal van frameworks, zogeheten sidecars, voor beschikbaar.
7 – Veilig
Toegangsrechten vormen doorgaans een van de grootste veiligheidsproblemen bij software. In Kubernetes zit standaard een role based access control-mechanisme ingebakken. Ook het gebruik van certificaten is slim ingeregeld. Het ‘secrets-mechanisme’ voorkomt dat onbevoegde toegang krijgen tot een sign-on keyin clusters die over verschillende datacenters worden uitgerold. De combinatie van de juiste rollen en rechten in de secrets-manager maakt een veilige koppeling van omgevingen mogelijk met nodes in cloudplatforms als Azure, Amazon, AliCloud of waar dan ook. Kortom: geheimen blijven geheimen, ook in hybride cloudomgevingen.