10min

Google Anthos werd begin 2019 gepresenteerd als het platform voor het moderniseren van applicaties en daarmee indirect ook de onderliggende infrastructuur. Google sprak toen over onbegrensde mogelijkheden. Nu we alweer een jaar verder zijn, is het goed om de balans op te maken. Voor welke doeleinden is Google Anthos geschikt en waarin onderscheidt Anthos zich van een standaard Kubernetes container platform? 

Google Anthos bestaat uit een aantal managed services die waarde toevoegen aan het Kubernetes container platform. Voordat we hier dieper op ingaan is het goed om nog even stil te staan bij de voordelen van containers en Kubernetes. 

Containers vormen de basis van de moderne applicatiearchitectuur

Met een moderne applicatiearchitectuur worden grote applicaties in allemaal kleinere stukjes opgedeeld. Daarbij wordt vooral gesplitst op functies en services die allemaal hun eigen primaire taak hebben en deze zelfstandig kunnen uitvoeren. Deze delen worden vervolgens allemaal in aparte containers geplaatst. Hierdoor bestaat een applicatie niet langer uit één grote codebase, maar uit tientallen of misschien wel honderden verschillende containers. Deze functies en services vormen gezamenlijk nog steeds de complete applicatie, hier communiceren functies en services vaak onderling via API’s over een netwerkverbinding wanneer ze elkaar nodig hebben. 

Wat is een container?

Een container is een geïsoleerde omgeving met applicatiecode en libraries, waarbij het besturingssysteem gevirtualiseerd wordt vanaf het onderliggende platform. Containers zijn veel eenvoudiger van opzet dan bijvoorbeeld VM’s die een onderliggende hardwarestack virtualiseren. Containers delen de resources van een onderliggende VM of appliance, starten veel sneller op en gebruiken maar een fractie van het geheugen vergeleken met het opstarten van een volledig (besturings-)systeem. Technisch gezien draaien containers op hardware, virtueel of fysiek. Ook kunnen er meerdere instanties van dezelfde container tegelijkertijd actief zijn. Hierdoor kan elke service of applicatie in een container naar eigen behoefte worden geschaald en een hoge mate van beschikbaarheid voor de applicatie als geheel worden bereikt. 

Ontwikkelaars kunnen met containers voorspelbare omgevingen maken die de functies en services logisch van elkaar scheiden. Zo kunnen afhankelijkheden voor elke applicatiecomponent apart worden ondervangen. Een specifieke runtime versie of softwarebibliotheek is gegarandeerd consistent, ongeacht waar de service en  de container wordt gebruikt. Het grote voordeel hiervan is dat er minder tijd aan het opsporen van fouten hoeft te worden besteed. Bij het testen kan ervan worden uitgegaan dat een container in een testomgeving zich precies hetzelfde gedraagt als in productie. Een ander voordeel is dat functies en services los van elkaar kunnen worden doorontwikkeld en verbeterd. Het is een kwestie van een specifieke container vervangen met een container die de nieuwe versie van een functie of service bevat. Dit alles verhoogt de productiviteit van een continu ontwikkelproces.

Voordelen van containers

  • Een container is een geïsoleerde omgeving. Specifieke software-afhankelijkheden worden per container ondervangen. CPU, geheugen, opslag en netwerkresources worden gevirtualiseerd op het niveau van het besturingssysteem, waardoor containers onderling logisch gescheiden zijn;
  • Doordat het besturingssysteem wordt gevirtualiseerd van het onderliggende platform is dit ook veiliger en altijd up-to-date. Het onderhoud hiervan wordt vaak door de cloudprovider of leverancier gedaan; 
  • Containers garanderen een consistente implementatie, ongeacht de doelomgeving. Een container in een ontwikkelomgeving op een laptop gedraagt zich identiek in productie op een containerplatform;
  • Containers starten sneller op, gebruiken een fractie  van de resources vergeleken met applicaties op traditionele VM’s. De resource behoeften kunnen per container worden bepaald, net als de hoeveelheid containers per service. 

Bestaande applicaties

Om deze moderne applicatiearchitectuur te omarmen, is het het eenvoudigst om applicaties opnieuw te ontwerpen en te ontwikkelen. Er kan dan direct rekening worden gehouden hoe de applicatie het beste opgedeeld kan worden in containers. Veel organisaties hebben echter al een groot applicatielandschap en die kan je niet even allemaal opnieuw bouwen. Uiteindelijk moeten er ook veel bestaande (commerciële) applicaties worden gemigreerd. Er zal dan gekeken moeten worden of die wel opgesplitst kunnen worden in kleinere onderdelen om ze vervolgens in containers te verpakken.

Het opsplitsen van een applicatie is in de basis al redelijk complex, maar er is nog een ander element dat het nog complexer maakt. Zoals eerder vermeld bevatten containers alleen de applicatiecode, het opslaan van data en bestanden gebeurt buiten de container, bijvoorbeeld via een externe (persistent) storage oplossing en een databaseserver. Dat kan een database-storagedienst in de cloud zijn of on-premise-servers. Hier worden bijvoorbeeld alle gebruikersdata in opgeslagen of de fotobestanden en PDF’s die binnen een applicatie worden gebruikt. 

Google heeft nu als één van de eerste hiervoor een oplossing ontwikkeld met de naam Anthos Migrate, waar we verderop in dit artikel dieper op in gaan.

Kubernetes uitgebeeld door een stuurwiel

Kubernetes

Voor het uitvoeren van containers heb je niet alleen hardware nodig van een cloudprovider of een fabrikant, maar je hebt ook een softwareplatform nodig, ook wel een container orchestration platform genoemd. De industrie heeft vandaag de dag massaal gekozen voor Kubernetes als dé standaard voor het uitvoeren en beheren van containers. 

Het belangrijkste van Kubernetes is dat het een containerplatform is dat overal kan worden toegepast: on-premise, in de cloud of in een hybride/multicloud oplossing. Met Kubernetes kunnen services geautomatiseerd worden uitgerold, teruggedraaid en op- of afgeschaald al naar de behoefte van het moment. Containers worden gemonitord en herstart indien nodig, waardoor services alleen worden aangeboden wanneer zeker is dat de containers goed zijn opgestart. Bovendien wordt Kubernetes declaratief beheerd. Dit betekent dat je beschrijft wat de gewenste status van je applicaties en hun containers is. Kubernetes zal de huidige status evalueren en bepalen welke stappen nodig zijn om weer in de gewenste status te komen. Dit betekent bijvoorbeeld een failover doen als er sprake is van een hybride of multi-cloud oplossing.

Bij alle grote cloudproviders en fabrikanten is er inmiddels ondersteuning voor Kubernetes aanwezig. Hetzij middels een Kubernetes-platform binnen hun cloudomgeving, hetzij door ondersteuning binnen hun al bestaande software stack. 

Kubernetes komt uit de keuken van Google. Google heeft het project gedoneerd aan de open source-community, waardoor iedereen kan bijdragen aan Kubernetes. Deze bijdragen van over de hele wereld hebben ervoor gezorgd dat het een volwassen platform is geworden en een standaard begrip in de wereld van containerisering. Kubernetes zal dus ook niet snel weer verdwijnen en de ontwikkeling ervan zal hoe dan ook doorgaan. 

We hebben even gezocht wie de grootste bijdragers zijn; 

  1. Google
  2. Onafhankelijke ontwikkelaars
  3. Red Hat
  4. Huawei
  5. ZTE
  6. Microsoft
  7. VMware
  8. IBM

De lijst is uiteraard nog veel langer. Deze grote bedrijven zorgen er op dit moment voor dat Kubernetes vlot wordt doorontwikkeld. 

Anthos als multicloud platform voor je moderne applicaties

Hoewel Google Kubernetes heeft gedoneerd aan de open source-wereld, is daar de ontwikkeling niet gestopt voor Google. Het draagt nog steeds actief bij aan de open source-versie, maar het ontwikkelt daarnaast ook aanvullende commerciële managed services die gebruikmaken van Kubernetes en zo waarde toevoegen aan het containerplatform. Google is hierin overigens niet de enige. Veel cloudproviders en fabrikanten zien de open source-versie van Kubernetes als een startpunt om additionele diensten aan toe te voegen. 

Google Anthos is een set van managed services die de containerservice naar een hoger niveau tillen. Deze managed services helpen klanten bij het configureren en beheren van Kubernetes-clusters, waardoor de veiligheid toeneemt, de compliancy beter is te regelen en het geheel ook goed te monitoren is. Dit is mede mogelijk doordat Anthos geschikt is voor de hybrid- en de multicloud. 

Google Anthos is in principe overal uit te rollen, zowel on premise in het eigen datacenter als in de cloud. Met overal bedoelen we ook echt overal. Ook in concurrerende clouds van Microsoft Azure en Amazon Web Services, of een van de vele andere.

Waarom Google Anthos?

Nu we de voordelen van Kubernetes hebben toegelicht en hebben samengevat wat Anthos te bieden heeft, is het tijd om beter naar Anthos te kijken. Waar Kubernetes open source is, is Anthos dat niet. Anthos is zoals eerder gemeld een set van managed services rond Google’s Kubernetes Platform. Deze managed services zijn deels ook toepasbaar op Kubernetes engines van andere providers, zolang die zich houden aan de open source-standaard.

Google Kubernetes Engine (GKE)

Hoewel Anthos zich houdt aan de Kubernetes open source-standaarden en daarmee met vrijwel alle Kubernetes-clusters van verschillende aanbieders overweg kan, zijn er een aantal voordelen die Anthos biedt met de eigen Google Kubernetes Engine (GKE). 

Als er nieuwe versies van Kubernetes uitkomen, met nieuwe features, optimalisaties of beveiligingspatches, moeten die naar alle actieve clusters worden uitgerold. Het tempo waarin dit gebeurt verschilt per aanbieder. Zo’n Kubernetes update moet ook overweg kunnen met eigen implementaties van de provider, moet goed worden getest want er mogen geen clusters omvallen door een verkeerde software-update. 

Hierdoor kan het gebeuren dat als je Kubernetes-clusters van verschillende providers gaat combineren, de prestaties uiteenlopen, dat bepaalde functionaliteiten niet goed werken, of dat clusters alsnog kwetsbaar zijn door ontbrekende patches. 

Door gebruik te maken van een managed Kubernetes-engine, hoef je al die updates en tests niet zelf uit te voeren, maar wordt dit voor je gedaan. Het hele onderhoud van het cluster wordt door de provider gedaan of in dit geval door Google. 

Anthos overal (on-premise, AWS, Azure en meer) 

Als onderdeel van Anthos is GKE on-premise geïntroduceerd. Hiermee kun je GKE ook uitrollen in je eigen datacenter. Van GKE on-premise bestaan ook specifieke versies voor AWS en Azure, daarmee is het mogelijk om Anthos uit te rollen bij AWS en Azure. Dit kan geheel automatisch worden gedaan met de juiste configuratie. Anthos kan direct met de IaaS-API’s van AWS en Azure praten om een GKE op te bouwen in deze cloudomgevingen. Als ervoor wordt gekozen in alle datacenters en clouds met GKE te werken, kan Google Anthos garanderen dat de Kubernetes-versie en daarmee de ervaring overal hetzelfde is. Google stelt zorgt te dragen voor vlekkeloze updates voor GKE die met één druk op de knop zijn uit te rollen in alle GKE-clusters.

Kubernetes-clusters centraal beheren

Bepalen waar je je Kubernetes-clusters gaat uitrollen en opzetten is de eerste stap. De volgende stap is om het beheer van je clusters en de onderliggende infrastructuur zoveel mogelijk te automatiseren. Zo kun je focussen op het bouwen van moderne applicaties in plaats van het beheren van infrastructuur. 

Het centraal en eenvoudiger beheren van je Kubernetes-clusters is een van de mogelijkheden van Google Anthos. Als bedrijven hun Kubernetes beheer en configuratie willen vereenvoudigen is een keuze voor Anthos dus zeker de moeite waard. Dit kunnen GKE-clusters zijn, maar ook van andere leveranciers. 

Als er gebruik wordt gemaakt van Kubernetes-clusters van andere providers dan is het management gelimiteerd tot configuraties, policies en compliancy. Voor het upgraden en toepassen van beveiligingsupdates op die Kubernetes-clusters ben je zoals eerder vermeld afhankelijk van die specifieke leverancier. Dit kan Google wel aanbieden middels de eigen GKE. 

Anthos Config Management

Voor het configureren van de Kubernetes-clusters heeft Google Anthos Config Management ontwikkeld. Met Anthos Config Management regel je de configuratie van de clusters. Je kunt de configuraties van alle clusters met Anthos centraal beheren vanuit een Git repository (dit kan Github of Gitlab zijn). Zodra de configuraties worden aangepast kunnen die direct naar alle aangesloten clusters worden uitgerold. Ook kun je het zo inregelen dat de lokale controle op de  Kubernetes-clusters zelf min of meer buitenspel worden gezet. Hierdoor is de configuratie vanuit de Google Cloud console altijd leidend en heb je de zekerheid dat al je clusters op dezelfde manier zijn geconfigureerd.

Onder het configureren van de clusters vallen standaard zaken als quota’s voor de hoeveelheid compute en memory. Ook policies en compliance regelen kunnen worden geconfigureerd. Wie heeft er bijvoorbeeld toegang tot een cluster? Ook kunnen op maat gemaakte compliance regels worden toegepast. Mocht een configuratie de compliance-regels overtreden dan wordt die configuratie simpelweg geweigerd of automatisch teruggesteld. 

Configuraties voor Kubernetes zijn uitgebreid en kunnen daardoor al snel complex worden. Anthos helpt hiermee door de configuraties ook op mogelijke problemen te testen. Hierdoor kan je de kans op fouten minimaliseren. 

Anthos Service Mesh 

Met Anthos Service Mesh neemt Google nog wat lastige taken over. Met deze tool kun je zaken als beveiliging en monitoring regelen tussen de verschillende containers. De Anthos Service Mesh maakt gebruik van open source project Istio. Dit is een open source servicelaag die aan een container wordt gekoppeld (ook wel sidecar genoemd) om deze te monitoren. De Service Mesh opereert onafhankelijk van de container, maar zit er dus wel dicht bovenop. Al het verkeer komt ook langs de Service Mesh, waardoor er telemetriedata wordt gemaakt voor het loggen en monitoren van de container. Vanuit de Google Cloud console kan dit nader geanalyseerd worden. 

Zeker bij storingen of onderdelen die niet soepel willen werken, kan door al die informatie razendsnel het probleem worden gelokaliseerd en kan de oplossing ook snel worden toegepast. 

Met al die log-informatie kan de Service Mesh ook exact in kaart brengen welke containers met elkaar communiceren en over welke poorten. Die poorten kunnen eventueel ook open of dicht worden gezet. Het is zelfs mogelijk een Zero Trust Security Model in te voeren, zodat goed gedrag eenmalig kan worden vastgelegd en al het andere wordt geblokkeerd.

In veel afbeeldingen en teksten zal door Google nog worden gerefereerd aan StackDriver als voornaamste tool voor het analyseren van deze data. Sinds eind februari heeft Google dit omgebouwd tot de Google Cloud Operations Suite. Daarin is alle cloud logging en monitoring samengevoegd.

Ook heeft Google de mogelijkheid om beveiligingscertificaten uit te geven doorgetrokken naar een zogenaamde Mesh CA. Hiermee kan de Anthos Service Mesh certificaten verstrekken voor de versleuteling van verbindingen. De Service Mesh kan hiermee zorgen dat alle verbindingen tussen containers en clusters zijn versleuteld. Zeker voor bedrijven die meerdere clusters willen in verschillende datacenters is dat een prettige bijkomstigheid. 

Welke workloads kan je met Anthos draaien en welke zijn geschikt voor Anthos Migrate?

Op dit moment zijn Web- en Applicatie-servers het eenvoudigste om te migreren met Anthos. Ook Business middleware als Tomcat, LAMP-stack en kleinere databases kunnen prima met Anthos worden gemigreerd naar Kubernetes containers. Het migreren van Windows applicaties naar Windows containers welke in GKE Windows Node Pools kunnen draaien zit op dit moment in preview.

Applicaties die gemigreerd kunnen worden maar afhankelijk zijn van een grote onderliggende database zullen dit moeten splitsen. De applicatie kan gewoon naar een of meerdere containers worden gemigreerd, maar de database zal naar een eigen VM of nog beter naar een PaaS database service moeten worden verplaatst. Dit is de meest efficiënte oplossing. Grote databases in Kubernetes draaien is technisch wel mogelijk, maar het wordt niet aangeraden.  

Ook zijn containers zeer geschikt voor testomgevingen en workloads die weinig resources vereisen.

Bij het schrijven van dit artikel is ons duidelijk geworden dat Anthos nog volop in ontwikkeling is, we verwachtend dan ook dat Google Cloud nog de nodige features zal toevoegen in de toekomst om Anthos en de multicloud-wereld te verbeteren.