Blog

Hybride deployments met Kubernetes

Eén van de motivaties die ik vaker hoor wanneer mensen in container technologie en Kubernetes hebben geïnvesteerd (of gaan gebruiken) is “Wij willen een hybride / multi-cloud oplossing. Maar hoe eenvoudig is het om dit te bewerkstelligen?’’

Gepubliceerd: 12 november 2020

Er zijn zeker technologieën die je hier bij kunnen helpen, daarover later meer. Om een succesvolle hybrid cloud strategie te implementeren heb je kennis nodig van alle platformen welke je wilt gaan gebruiken. Wat zijn de voordelen, de nadelen en waar moet je misschien maatwerk toepassen?

Wanneer je container technologie gebruikt lijkt het allemaal eenvoudig “dit kan op iedere omgeving draaien” en dat is grotendeels waar. Echter bij grotere deployments worden orchestration oplossingen als Kubernetes steeds belangrijker. Hoe goed werken die eigenlijk in een multi / hybrid-cloud scenario? Yup, dan wordt het wel iets ingewikkelder.

Er zijn verschillende redenen waarom je op meerdere clouds / hybride je oplossing wil of moet aanbieden. Misschien is het een eis van de klanten, een klant kan vragen of zelfs eisen dat je oplossing op Azure draait, een andere klant kan hetzelfde stellen voor AWS.

Het is dus goed om te kijken wat er technisch mogelijk is in de markt. Om het nog even wat ingewikkelder te maken. De ontwikkelingen van Kubernetes als oplossing zelf en de oplossing op de bekende public clouds gaat vreselijk snel. Wat vandaag nog niet mogelijk is kan volgende maand al als nieuwe feature worden uitgerold.

Let wel op dat we in dit artikel inzoomen op Kubernetes als het gaat om hybride / multi-cloud oplossingen. In realiteit komt er natuurlijk veel meer bij kijken en zeker als het gaat om legal, compliance en security.

Verschillende technologieën

Waar hebben we het eigenlijk over? Natuurlijk we hebben Kubernetes zelf. Je kunt het installeren en in je eigen omgeving of hosted afnemen. Daarnaast hebben we de bekende hosted Kubernetes clusters van de grotere Public Clouds. Denk hierbij aan Azure, Google of Amazon Web Services. Dat zijn al best wel wat keuzes.

Om het nog even wat makkelijker te maken hebben al deze partijen een Kubernetes aanbieding gekoppeld aan technologieën specifiek voor dat platform.

Voor Amazone hebben we Amazon Elastic Container Service for Kubrnetes (Amazone EKS) op Google hebben we Google Kubernetes Engine (EKS) en voor Microsoft Azure is Azure Kubernetes Service (AKS) beschikbaar. Zij gebruiken alleen een Kubernetes versie zoals deze publiekelijk door Kubernetes is gepubliceerd en onderhouden. Echter, de functionaliteiten welke binnen de standaard Kubernetes beschikbaar zijn hoeven niet altijd beschikbaar te zijn in de public clouds. Andersom geldt hetzelde. We hebben het hier vaak over Autoscaling, pricing en monitoring. Als we andersom kijken heeft Azure weer Azure Policy integratie met Kubernetes wat in de eerste instantie niet beschikbaar is op die andere clouds (hierover later meer). Dit lijken nog eenvoudige verschillen maar als het gaat om Enterprise scale deployments en configuraties dan zijn deze functionaliteit van groot belang voor het succes van je omgeving, helemaal als het gaat om een hybride oplossing.

Pipelines

Wanneer je hebt geïnventariseerd en besloten op welke platform jij je cluster(s) wil gaan draaien kom je bij een nog grotere uitdaging. Deployment pipelines. Ja, containers blijven hetzelfde en wanneer je netjes de Yaml files schrijft of gebruikt maakt van Helm zal dit ook niet veel verschillen. Echter, hoe deploy je de Kubernetes omgeving zelf? Dit wordt vaak gedaan met een technologie die hoort bij die specifiek cloud. Voor Azure hebben we het dan over Azure Resource Manager Templates of scripting met behulp van Azure CLI.

Daarnaast hebben deze clouds allen verschillende features. Wat als een feature op de ene cloud wel beschikbaar is en op de andere niet? Een goede vuistregel is om te standaardiseren op de cloud met de minst beschikbare technologieën zodat je zeker weet dat alles op alle omgevingen beschikbaar is. Dit kan je zeker beperken maar sluit uiteraard maatwerk niet uit wanneer de vraag daar is. Echter, je moet ergens beginnen.

Dan is de vraag welke deployment technologie je gaat gebruiken. Eigenlijk heb je twee opties:

  • Gebruik de cloud technologie van die specifieke cloud zelf;
  • Gebruik een meer generieke third party oplossing.

Beide opties hebben voor en nadelen. Zoals benoemd heeft iedere cloud zijn eigen technologie. Ga je deze gebruiken en flink kennis investeren in al deze oplossingen of ga je naar een meer generieke oplossing als Terraform of Pulumi? Deze twee third party oplossingen zijn zeker niet je enige opties maar worden wel veel gebruikt. Let er wel op dat dit doorgaans niet betekent dat je één deployment hebt voor meerdere clouds. Het schrijven van infrastucture as code zal in dit geval wel in dezelfde taal gebeuren maar zal er voor iedere cloud iets anders uit zien. Daarnaast ondersteunen deze third party oplossingen vaak niet de allerlaatste features van die specifieke cloud. Dus ook hier weer iets om rekening mee te houden.

Eigenlijk is geen van de opties een verkeerde keuze. Het is van belang je dat van te voren goed onderzoek doet naar je eigen wensen en de requirements van de klanten.

 

Azure Arc

Als we verder kijken dan de uitrol zelf maar inzoomen op het beheren van een hybride scenario dan wordt de uitdaging weer iets groter. Microsoft heeft hiervoor in 2019 een technologie in het leven geroepen: “Azure Arc”. Deze technologie is gebouwd voor hybride scenarios. Azure Arc is beschikbaar voor meerdere technologieën dan Kubernetes maar voor nu richten we ons even op dat laatste.

Azure Arc is nog steeds in preview en kan in termen van features beperkt lijken maar de toekomst ziet er goed uit.

Door je Kubernetes cluster te configureren met Azure Arc wordt deze ook zichtbaar binnen het Azure Portal. Hiermee wordt een zogenaamde “Single control plane” gecreëerd en kun je al je clusters vanuit één scherm beheren. Best wel cool toch?

Als we het vanuit technisch perspectief bekijken dan wordt er een agent uitgerold in de azure-arc namespace op het cluster. Deze agent is verantwoordelijk voor de communicatie met Microsoft Azure. Op dit moment worden alle CNCF gecertificeerde clusters ondersteund (AKS-Engines). De volgende technologieën zijn door Microsoft succesvol getest:

  • RedHat OpenShift 4.3
  • Rancher RKE 1.0.8
  • Canonical Charmed Kubernetes 1.18
  • AKS Engine
  • AKS Engine on Azure Stack Hub
  • AKS on Azure Stack HCI
  • Cluster API Provider Azure

(bron: Microsoft Docs)

Okay, welke features heb je dan beschikbaar wanneer je azure-arc gebruikt? Op dit moment kun je je Kubernetes resources in het Azure Portal zien en daarmee technologieën als tagging en grouping toepassen. Maar er is meer. Zo kun je ook je configuratie deployen en is er support en integratie met Azure Monitor en Azure Policy.

Samenvattend

Hybride deployments lijken een schot in de roos en de way to go, echter de eerste vraag is altijd “Heb je dit wel nodig” en de tweede vraag is dan “welke platformen wil je gaan gebruiken?”.

Een goede inventarisatie en marktonderzoek is nodig nog voordat je aan de technische handelingen begint. Het is van belang om goed te begrijpen wat de verschillende clouds bieden en of dit is wat jij en je klanten nodig hebben. Om het samen te vatten:

  • Doe marktonderzoek, kijk wat je klanten nodig hebben en leg je technische requirements vast. Kies dan welke platformen je wilt ondersteunen;
  • Bouw je deployment pipeline. Kies ook hier weer welke technologie je wilt gebruiken. Ga je voor de native deployment technologie van die cloud of een meer generieke third party oplossing?
  • Gebruik Azure Arc om één management portaal te creëren.

Er komt natuurlijk veel meer bij kijken en afhankelijk van de complexiteit van je omgeving zal je veel onderzoek moeten doen. Echter, deze onderwerpen komen altijd terug. Wat je niet wilt is eindigen met 3 verschillende monitoring dashboards, 3 code bases voor je deployment code en 3 verschillende teams om 3 verschillende clouds te managen.

 

 

Dit artikel is onderdeel van een reeks 

Lees in dit vervolg artikel alles over microservices op AKS.

Vorige artikel teruglezen? Klik hier: De evolutie van AKS


Wil je niets missen? Schrijf je dan hier in voor onze Intercept Insights. Dan houden we je op de hoogte van de laatste nieuwsberichten.


Bezoek onze AKS workshop

Leer nog meer over AKS door onze interactieve AKS workshop. In 1.5 uur ontvang jij de voordelen en de best practices om jouw omgeving efficiënter te maken. Middels veelvoorkomende AKS uitdagingen ben jij klaar voor AKS. Klik hier voor data en meld je aan!