KubeCon 2019: Istio, we have a problem

Istio is hot: er gaan meerdere sessies over en IBM en Google hebben belangrijke sprekers gestuurd om het verhaal te vertellen. Dat verhaal is dat Istio een belangrijke, misschien wel onmisbare aanvulling op Kubernetes is. Ik heb twee sessies bijgewoond waar dat op niet mis te verstane toon werd verkondigd.

Uitgangspunt bij Istio is het service mesh, een netwerk van microservices dat door Istio (en Envoy) wordt bestuurd. Istio is echter meer dan een mesh, zoals uit de eerste presentatie blijkt: het product is prima in te zetten om applicaties mee te debuggen. Dat werd gedemonstreerd met het terugkerende mantra van fouten maken mag: “you all create bugs”. Voordat je een probleem kunt oplossen, moet je erkennen dat er een probleem is: alle ontwikkelaars maken fouten en die kunnen ook gewoon op productie landen.

Een applicatie in meerdere pods deployen met Istio biedt de ontwikkelaar volledige zichtbaarheid op wat er exact is gedeployed, in de vorm van een lijst van endpoints en de mogelijkheid traces te bekijken. Dit soort zichtbaarheid is wat de belofte van sneller ontwikkelen en deployen mede mogelijk maakt, maar is functionaliteit die niet standaard in Kubernetes zit. Met een combinatie van de tools Kiali, Grafana en Jaeger is vervolgens makkelijk (en grafisch) inzicht te verkrijgen in het gedrag van de applicatie.

Istio biedt nog andere functionaliteit die debuggen eenvoudiger maakt, zoals traffic mirroring (een kopie van al het verkeer dat de eindgebruikers op de applicatie genereren wordt naar een andere versie van de applicatie gestuurd, zodat een fix snel te testen is), Canary (deployen van functionaliteit of een fix naar een specifieke gebruiker, bijvoorbeeld op basis van http headers) en Blue/Green deployments (waarbij bijvoorbeeld een in te stellen gedeelte van gebruikers naar een specifieke versie van functionaliteit wordt geleid). En dat alles in real time aan te passen, met minimale impact op de infrastructuur.

En hoe verhoudt Istio zich dan tot ingress-functionaliteit, zoals NGiNX? Zelfs die functionaliteit zou Istio kunnen overnemen, werd gesuggereerd – maar beter is het de ingress die al draait, hiervoor beschikbaar te houden.