Cloud-native technologie is iets waar geen enkele lead developer nog omheen kan. Iedere ontwikkelaar kijkt dan ook met een schuin oog naar wat de concurrentie op het gebied van containers, gedistribueerde applicaties en microservices doet, want achterblijven is geen optie. Hoe ziet een optimaal ecosysteem er echter uit? En hoe zorg je voor harmonie binnen jouw Kubernetes of Docker Swarm omgeving? In deze blogpost schrijven we over welke cloud-native technologie je nodig hebt om met cloud-native technologie en een Kubernetes omgeving aan de slag te gaan en waarom. Ook lees je welke tools inmiddels zijn uitgegroeid tot een de facto standaard.
Het origineel is verschenen op True.nl door Guido Bruijn
De Cloud Native Computing Foundation (CNCF) host kritieke componenten van deze softwarestack. De stichting creëert en onderhoudt een ecosysteem van open source en vendor-neutrale projecten. Projecten die onderdeel uitmaken van de CNCF ontvangen middelen voor en ondersteuning bij de verdere ontwikkeling van hun technologie(ën) of tool(s). De projecten blijven echter onafhankelijk van elkaar opereren en worden onderhouden door hun eigen team. De CNCF is onderdeel van The Linux Foundation.
De CNCF is de thuishaven van een breed scala aan cloud-native technologieën en tools, variërend van ontwikkel- en orkestratie- tot monitoring- en analysetools. Voor nagenoeg ieder doeleinde refereert de stichting naar relevante oplossingen die in hun ogen kwaliteit leveren. De stichting bundelt deze inzichten in de ontwikkeling van het CNCF-landschap, een grote plaat die visueel weergeeft wat de mogelijkheden zijn als je een container orkestratie platform ontwerpt. Het CNCF-landschap kan worden onderverdeeld in verschillende categorieën, wat helpt bij het identificeren van de juiste tools voor het juiste doeleinde. We zetten de verschillende categorieën uiteen:
Deze categorie omvat technologieën en tools die het ontwikkelen en bouwen van apps ondersteunen. Denk hierbij aan databasemanagementsystemen, die zekerstellen dat data op de juiste wijze worden opgeslagen en alleen voor geautoriseerde gebruikers toegankelijk zijn. Ook zijn streaming- en messagingtools beschikbaar die communicatie tussen services en apps faciliteren.
Daarnaast omvat de categorie application definition- en image build-tools. Deze brede categorie kan worden opgesplitst in twee segmenten: developer-gerichte tools die helpen bij het onderbrengen van applicaties in containers en operations-gerichte tools voor het gestandaardiseerd uitrollen van apps. Tools voor continuous integration en continuous delivery (CI/CD) zijn het laatste onderdeel van de categorie.
De categorie Orchestration & Management omvat – zoals de naam wellicht al doet vermoeden – tools die helpen bij het orkestreren en beheren van applicaties. Onderdeel hiervan zijn onder meer orkestratie- en planningstools die het uitrollen van een container over een cluster ondersteunen.
Een gedistribueerde applicatie is doorgaans opgedeeld in verschillende microservices, die onderling met elkaar communiceren. Service discovery-tools helpen deze microservices bij het lokaliseren van elkaar en maken communicatie mogelijk. Communicatie tussen microservices vindt vaak plaats via API’s. Via API gateways – die eveneens onder deze categorie vallen – wordt deze communicatie centraal beheerd.
Runtime is een categorie binnen het CNCF-landschap die alle tools en technologieën omvat die nodig zijn voor het draaien van een container in een cloud-native omgeving. Een voorbeeld zijn tools voor het creëren van de code die nodig is voor het starten van de container, wat ook wel de container runtime wordt genoemd. Denk echter ook aan cloud-native netwerktools, die een virtueel netwerk bovenop bestaande netwerken legt. Via een dergelijk overlay netwerk kunnen gedistribueerde applicaties met elkaar communiceren. De categorie omvat ook cloud-native storage tools. Deze helpen zekerstellen dat data van containers behouden blijft, ook als een container naar een andere locatie verhuist.
Provisioning is de vierde categorie die het CNCF-landschap kenmerkt. De categorie omvat tools die helpen bij het creëren van de juiste fundering voor het bouwen en uitrollen van cloud -native apps. Hoe creëer, beheer en configureer je bijvoorbeeld een dergelijke omgeving?
Onder deze categorie vallen ook automatiserings- en configuratietools die helpen bij het sneller opzetten en configureren van resources, of bij het definiëren van container registries. Ook tools op het gebied van security en compliance vind je in deze categorie terug.
Het monitoren en analyseren van eventuele problemen is van groot belang voor het bewaken van de beschikbaarheid van een applicatie en het snel kunnen oplossen van onverhoopte verstoringen. Door het continu monitoren van ieder onderdeel van een applicatie en van de containerorkestratie worden afwijkingen direct gedetecteerd, zodat zij zonder vertraging kunnen worden aangepakt.
De categorie omvat hiervoor onder meer tools voor het vastleggen van logbestanden en monitoringsoplossingen voor het verzamelen van meetwaarden. Ook beschikbaar zijn tools op het gebied van chaos engineering, een discipline waarbij technische problemen onvermijdelijk worden geacht. Chaos engineering-tools creëren daarom bewust willekeurige verstoringen in een applicatie en testen zo de veerkracht en weerbaarheid van een app.
Binnen het CNCF-landschap zijn verschillende projecten inmiddels uitgegroeid tot de facto standaarden voor cloud-native technologie. We zetten enkele populaire voorbeelden op een rijtje:
Met behulp van monitoring krijg je inzicht in de gezondheid van een Kubernetes implementatie. Prometheus is voor veel gebruikers op dit gebied uitgegroeid tot de tool naar keuze. Met behulp van Prometheus kan je onder meer servers, virtuele machines en databases monitoren, wat inzicht geeft in de prestaties van applicaties en infrastructuur. De tools helpen onder meer bij het weergeven van je data weergeven in handige grafieken. Ook is het mogelijk alarmmeldingen in te stellen en versturen via onder meer e-mail en Slack.
Package managers helpen bij het uitrollen en beheren van gedistribueerde applicaties. Helm is op dit gebied een veelgebruikte tool. Met behulp van Helm kan je ‘Charts’ uitrollen, die onder meer alle configuratie van een applicatie omschrijven. Niet alleen vereenvoudigen Charts de uitrol van complexe applicaties, ook zorgen zij voor een repliceerbare installatie. Wil je de configuratie van een applicatie wijzigen? Met Helm doe je dit door eenvoudig door het uitrollen van een nieuwe versie van de Chart met een andere configuratie.
Continuous Integration & Continuous Delivery (CI/CD) tools versnellen het ontwikkelproces. De tools zorgen dat code met minder fouten wordt uitgerold de productie-omgeving en verhogen hiermee de productiviteit van ontwikkelaars. Een populaire tool op dit gebied is Argo, een container workflow engine voor het creëren van native workflows en pipelines. Met behulp van deze tool kan iedere stap van een workflow worden ondergebracht in een container. Argo zorgt hierbij dat de output van de ene container wordt doorgezet naar de volgende container en de workflow zo stap voor stap wordt doorlopen.
Security is voor ieder bedrijf een belangrijk aandachtspunt, ook bij het gebruik van cloud-native technologie en Kubernetes. Container registry helpt bij het veilig stellen van containers. Harbor is op dit gebied een populaire keuze. Met behulp van de tool kan je onder meer images beschermen door het toepassen van beleid en functie-gebaseerde toegangscontrole, en kunnen vertrouwde images worden ondertekend. Ook scant Harbor images op eventuele aanwezige kwetsbaarheden.
Het CNCF-landschap is continu in ontwikkeling en wordt voortdurend aangevuld met nieuwe projecten. Op de website van CNCF is een actueel overzicht van het landschap beschikbaar. Ben je op zoek naar Kubernetes tools die je op weg helpen? Lees dan ons e-book met tools voor Kubernetes beginners of bekijk onze documentaire over Kubernetes!
Heb je behoefte aan ondersteuning bij de inzet van Kubernetes? Wij denken graag met je mee! Neem contact met ons op voor meer informatie.