Met Kubernetes en Minikube op Cloud 9

In de komende blogseries deelt Jeroen de Wolf, trainer bij Vijfhart, zijn ervaringen op het gebied van Cloud Native Development met jullie.

Ongeveer een half jaar geleden werd ik door een cursist getipt eens te kijken naar micro services met Spring Boot en PCF (Pivotal Cloud Foundry), dat bij hun op grote schaal werd gebruikt. Binnen de Java wereld werd inmiddels al veel gepubliceerd rondom micro services, cloud native, Spring Boot, PCF, Kubernetes, Docker etc. en op conferenties zoals Oracle Code was er al erg veel aandacht voor. Omdat ik het belangrijk vind om bij te blijven in mijn vakgebied en de kennis hierover te delen, besloot ik dit pad in te slaan.

Na het bekijken van een video tutorial op pivital.io had ik in minder dan een half uur een werkende Spring Boot micro service compleet met Redis data store live gezet naar de cloud. Dit gaf de aanleiding om me nog meer te gaan verdiepen in deze materie waarbij ik erachter kwam dat ik veel dezelfde vragen had die ik ook regelmatig van klanten krijg. In deze blog neem ik jullie daarom graag mee op mijn verkenningsreis.

Welke taal moet ik gebruiken?

De meeste cloud omgevingen ondersteunen een diversiteit aan talen (polyglot). Hoewel ik vanuit mijn achtergrond Java georiënteerd ben zou het mooi zijn als het ook werkt voor een andere taal, bijvoorbeeld Python.

Welke runtime?

Micro services hebben een runtime omgeving nodig zoals een applicatieserver. De keuze hierin is enorm. Zelfs binnen een taal als Java is er veel diversiteit. Zo zijn er grote applicatieservers zoals Oracle WebLogic en IBM WebSphere die naast micro services ook de hele stack aan Java Enterprise ondersteunen. Toch is het aan te raden voor applicatieservers met een kleinere footprint te kiezen, zoals Payara, IBM Open Liberty, of Apache TomEE. Mijn aanpak zal voor beide situaties moeten werken, groot en klein.

Welke cloud provider? Pivotal Cloud Foundry, IBM BlueMix, Amazon, Azure, Google Cloud?

Een keuze hierin is moeilijk te maken. Al deze providers bieden wel gratis een beperkte hoeveelheid mogelijkheden (ruimte en services) maar in mijn verkenning wil ik niet vastzitten aan een account gelimiteerde oplossing. Na wat uitproberen van PCF en BlueMix was ik erover uit om een on premise oplossing te fabriceren waar ik mijn app kon hosten. Het probleem is alleen dat je niet zomaar de hardware en software neer hebt gezet om zoiets te faciliteren.

Is er dan een mogelijkheid om op mijn eigen machine, lokaal, een cloud neer te zetten op basis van marktconforme standaarden waar ik zelf de mogelijkheden heb om met microservices te experimenteren?

Dat bleek mogelijk. Met Docker is het mogelijk om een container image van je app te maken om die vervolgens op een single node Minikube/VirtualBox cluster uit te voeren. Kubernetes verzorgt de orchestratie van het hele gebeuren (scalability, routing, etc.).

Vervolgens kwam de installatie. Dit verliep niet geheel zonder problemen.

Omdat we bij Vijfhart onze cursussen uitvoeren op een VirtualBox image, was dit mijn startpunt. Maar VirtualBox installeren binnen VirtualBox bleek een doodlopend pad. Uiteindelijk maar besloten om VirtualBox direct op mijn Windows machine te installeren. Ook de installatie van Docker ging niet vlekkeloos. Docker gebruikt Hyper-V virtualisatie (Windows standaard), maar Hyper-V gaat niet goed samen met VirtualBox, dus bij ons staat het uit. In dit geval bleek downgraden naar een oudere versie van Docker, Docker Toolbox, de enige oplossing voor dit probleem. Hierna was installeren van Kubernetes en MiniKube een fluitje van een cent.

Hoe doe je dat dan?

Het mooiste is als je begint met een schone machine met betrekking tot de te installeren software. Installatie op Windows 10 Pro kan geheel via de Windows PowerShell met behulp van de Chocolatey package manager. Vanuit een PowerShell prompt geopend in administrative modus zijn het een paar commando’s:

PS C:>choco install VirtualBox

PS C:>choco install docker-toolbox

PS C:>choco install kubernetes-cli

PS C:>choco install minikube

Hierna de computer opnieuw starten.

Starten/stop/status/verwijderen van het cluster

PS C:>minikube start

PS C:>minikube stop

PS C:>minikube status

PS C:>minikube delete

Om een dashboard in de browser te openen

PS C:>minikube dashboard

En hierbij had ik dus mijn eigen single node cloud omgeving op mijn laptop, de vrijheid om te experimenteren met verschillende talen, verschillende runtime omgevingen, en verschillende Operating Systems. Spring Boot micro services op Apache Tomcat/Ubuntu? Java micro services op IBM Open Liberty/Linux? Python micro services met Flask op Alpine Linux? Het werkt allemaal. Een taalonafhankelijke, applicatie-server onafhankelijke, platform onafhankelijke oplossing. Het voelt als de zevende hemel (Cloud Nr. 9). In mijn volgende blog zal ik wat meer ingaan op Kubernetes en hoe een eenvoudige micro service daar neer te zetten.

Is jouw interesse ook gewekt en wil je meer te weten komen over het ontwikkelen van micro services binnen een cloud omgeving, kijk dan vooral naar de komende blogs maar kijk ook eens bij ons cursus aanbod op dit gebied, waaronder:

Goed om te weten.

De rode lijn die ik in mijn blogs gebruik is het 12 factor app manifest van Heroku. Dit manifest beschrijft de uitgangspunten voor het succesvol bouwen van Software As A Service (SaaS). Om deze 12 factors te kunnen toetsen en ze te begrijpen is het handig een werkende app te hebben, een simpele app, zoals HelloWorld. Daarnaast is een runtime (cloud) omgeving nodig waar de app op draait.

Onderwerpen
Actieve filters: Wis alle filters
Loading...
PRIVACY VOORWAARDEN

Jouw persoonsgegevens worden opgenomen in onze beschermde database en worden niet aan derden verstrekt. Je stemt hiermee in dat wij jou van onze aanbiedingen op de hoogte houden. In al onze correspondentie zit een afmeldmogelijkheid