Istio

Alle nieuwe ontwikkelingen op het gebied van cloud, serverless, blockchain, microservices en meer biedt een enorm scala aan nieuwe mogelijkheden. Veel van de traditionele problemen met betrekking tot schaalbaarheid en of applicatie-ontwikkeling worden met deze nieuwe technieken geen probleem meer maar bieden een mogelijkheid tot het eenvoudig bouwen van nog meer functionaliteit. Kubernetes is het platform waarop we de containers goed kunnen beheren en het ontwikkelprocess mee kunnen ondersteunen.

De realiteit

Maar deze nieuwe technologie├źn introduceren ook weer nieuwe problemen die we vroeger met de monolitische applicaties niet of in veel mindere mate tegen kwamen. Denk hierbij bijvoorbeeld aan logging, bij een monolitische applicatie waarbij de applicatie op een of enkele servers draaide was er automatisch een centrale locatie waar alle log files beschikbaar waren. Nu met een orchestratie tool als Kubernetes, die applicatie instanties en microservices kan bij- en of afschakelen is er geen centrale locatie voor de log files. Ook de traditionele netwerkbeveiliging door bijvoorbeeld firewalls welke op basis van het netwerk adres verkeer al dan niet toelaten is niet meer van toepassing indien applicatie instanties dynamisch bestaan.
IBM heeft samen met Google en Lyft in 2017 Istio publiek gebracht als open source software project. Istio is een zogenaamde Service Mesh welke het applicatie verkeer en service-to-service verkeer eenvoudig mogelijk maakt. Het zorgt er daarnaast voor dat de communicatie onderling veilig, snel en betrouwbaar plaats kan vinden.

Inzicht

Istio als component zit tussen alle communicatie tussen applicaties en services. Hierdoor weet Istio precies wie en wat met elkaar communiceert. Deze afhankelijkheden van de services kunnen met Istio grafisch inzichtelijk worden gemaakt, inclusief bijvoorbeeld performance cijfers. In een productie omgeving biedt dit inzicht in hoe de omgeving functioneert en waar zich problemen (kunnen) voordoen.

Policy Enforcement

Met behulp van de centrale management omgeving van Istio kunnen we centraal de omgeving beheren. Hierin kunnen we bijvoorbeeld aangeven wie met wie mag communiceren maar ook wie met wie moet communiceren. Denk hierbij bijvoorbeeld aan een test release die alleen voor iPhone of interne gebruikers beschikbaar mag komen. Maar ook een een klant met een gouden contract die meer informatie krijgt dan een klant met een bronzen of gratis contract. Deze logica kunnen we Istio uit de applicatie halen wat de beheersbaarheid ten goede komt en het aantal regels code sterk beperkt.

Traffic Management

Met Istio kunnen we dus via een centrale policy de flow tussen sevices bepalen. Maar met Istio gaan we veel verder. Voor testen kunnen bijvoorbeeld fout codes of vertragingen in de infrastructuur injecteren waardoor we niet alleen positieve situaties testen maar ook echte productie situaties. Mocht het dan als nog fout gaan, dan bied Istio de mogelijkheid voor circuit breakers waardoor bepaalde services kunnen worden gelimiteerd in het aantal aanroepen of helemaal worden uitegschakeld.

Service Identity en Security

Met behulp van Istio kunnen we standaard alle verkeer dat tussen de services en applicaties plaatsvindt, beveiligen met TLS. Omdat er gebruik wordt gemaakt van mutual TLS wordt niet alleen het verkeer beveiligd maar kunnen we ook services identificeren en authentificeren. Hiermee is het mogelijk dat we aangeven welke services met welke services mogen communiceren. Hiermee krijgen we dus een hoger niveau van beveiliging dan dat we vroeger hadden met de traditionele firewalls.

 

The overall architecture of an Istio-based application.