Waar te beginnen… in plaats van weer een blog te maken over verschillende technieken die niemand leest, probeer ik vandaag veel informatie te stoppen in een korte blog. Ik (Mark Bertels, IT Rockstar) zal proberen kennis over te brengen over Kubernetes en Terraform. Deze technieken heb ik gekozen voor hun laagdrempelige toegankelijkheid en omdat je het ook thuis kunt proberen. Ook voor grote bedrijven is het mogelijk om dit voor elkaar te krijgen.
“Waarom zou je dit willen?!” hoor ik je je afvragen. Ik kan er veel over vertellen echter zal ik het kort samen vatten in een paar punten. Je hebt nu meer schaalbaarheid! Ik kan ophalen en afschalen wanneer je dit wilt. Naast je schaalbaarheid heb je ook risicodekking. Je werkt over verschillende clouds heen waardoor je uptime gegarandeerd is naar een hoger percentage. Ook qua kostendekking scheelt het veel, je kunt gemakkelijk switchen van Cloud omgeving. Hierdoor kun je snel van Google Cloud terug naar Azure en weer door naar AWS.
Voor een groot deel in dit blog is er helaas een vereiste dat je eigen applicatie met containers werkt. Het is gelukkig niet lastig om je applicatie te container-ficeren. Hoe je dit precies doet laat ik over aan de lezer. Met wat Google-fu kom je er echt wel. Het kost veel moeite om cloud-native te blijven. Gelukkig ontdek je veel over je services tijdens deze transitie. Je leert welke configuratie je nodig hebt maar ook welke databases en services je nodig hebt.
Veel mensen kennen het probleem, je hebt honderden verschillende cloud omgevingen maar meestal leg je je vast op een lokaal. On premise is er geen capaciteit en ook moet je gebruik maken van verschillende SQL servers, redis cluster of natuurlijk je eigen gemaakte docker containers. Dit alles zorgt ervoor dat je veel verschillende services nodig hebt.
Mocht je er nog geen KaaS (pun intended, Kubernetes as as Service) van hebben gegeten, dan kan ik gelukkig uitleggen hoe dit in kan richten. Het is de laatste tijd erg simpel om een eigen cluster neer te zetten, zie bijvoorbeeld https://rancher.com/ (ik zal in deze blog vaak naar deze website verwijzen). Er zijn op deze website goede tutorials te vinden over het optuigen van een Kubernetes omgeving, maar ook is het updaten van het cluster simpel en uitgebreid beschreven. Via Terraform is het mogelijk om snel services te installeren als er geen andere templating mogelijk is. Ook is het mogelijk om onderlinge verbindingen met elkaar te kunnen leggen. Je kan bijvoorbeeld op AWS een van de vele master nodes draaien en die vervolgens verbinden met een Azure omgeving. Deze Azure omgeving maakt het mogelijk om streaming data te verwerken die via een Google Cloud verloopt. Terraform helpt je om snel verschillende nodes op te tuigen. Er is zelfs een custom plugin om dit voor elkaar te krijgen: https://rancher.com/docs/rancher/v2.5/en/. Dit zelf schrijven is dus niet meer nodig, Wat je enorm veel tijd kan schelen!
Om te beginnen zal ik adviseren zoveel mogelijk vanilla Kubernetes te gebruiken. Dit zorgt ervoor dat je zo weinig mogelijk features gebruikt die cloud onafhankelijk zijn. Hierdoor blijf je cloud-native en zorg je dat je geen last hebt van Vendor lock-ins. Als je van verschillende Cloud features gebruik maakt kun je bijvoorbeeld Azure AD gebruiken. Echter kun je ook Cognito van AWS hiervoor inzetten. Het maakt niet uit voor welke je kiest, zolang de service met de configuratie er mee om kan gaan. Hier zie je ook wel het probleem wat cloud-native met zich meebrengt. Het is belangrijk dat je wel een mogelijkheid houd om een vendor lock-in te creëren. Het is niet erg om cloud-native te blijven met een vendor lock-in. Gedeeltes van jou omgeving kunnen nog steeds gedraaid worden in andere omgeving.
Als je nog lokaal beschikbare omgevingen nodig hebt kun je kijken naar een AWS Site-to-Site VPN, Azure VPN Gateway, Google Cloud VPN of een andere VPN provider. Hier kun je, weer via Terraform, gemakkelijk jouw datacenter based cluster mee verbinden.
In andere woorden:
Maak gebruik van Terraform om je infrastructuur op te zetten
Maak alleen gebruik van Kubernetes native features
Jou services maken gebruik van configuratie
Verbinding naar kritische lokale services gaat via VPN
Nog meer interesse? Kijk vooral naar mijn filmpje op:
https://www.teamrockstars.nl/on-demand/becoming-cloud-agnostic/
Groeten,
Mark