Beheer je AME-Cluster met de AME-Console
Door Thomas Kooi / mrt 2022 / 1 Min
Door Thomas Kooi / / 5 min
Het beheren van applicaties en Kubernetes-omgevingen kost tijd en geld. Kubernetes is software, waarmee applicaties op 100% geautomatiseerde wijze beheerd worden. Zonder training en ondersteuning op het gebied van Kubernetes-omgevingen, kan dit zelfs nog meer tijd en geld gaan kosten! Dit gaat vaak ten koste van doorontwikkeling van het product. Daarnaast speelt Compliancy een belangrijke rol bij het beheren van deze omgevingen. Een ontwikkelaar mag bijvoorbeeld geen toegang hebben tot productie, en hosting in Europa of Nederland is een must. Maar hoe zorg je er dan voor dat de beheer van de omgeving soepel verloopt? Door de hosting van omgevingen volledig uit te besteden. Hier komt Avisi Managed Environments (AME) om de hoek kijken.
Avisi Managed Environments is een platform waarop applicaties veilig, betrouwbaar en gecontroleerd worden gehost. Het bestaat uit een kant-en-klare Kubernetes (K8s) omgeving, waarop klanten software kunnen installeren. In deze blog kijken we naar het technische aspect van het Avisi Managed Environments-platform. Waaruit bestaat het? En hoe zorgt AME ervoor dat jij je kunt focussen op het doorontwikkelen van jouw applicaties.
Het Avisi Managed Environments-platform levert volledig gescheiden omgevingen, waarbij elke omgeving tenminste één cluster betreft. De omgevingen worden geleverd inclusief de benodigde tooling voor monitoring en log-collection. De totaaloplossing AME is onderverdeeld in drie elementen:
Het platform bestaat uit een kant-en-klare Kubernetes-omgeving en operational services. Kubernetes is een open-source systeem voor het automatisch beheren van gecontaineriseerde applicaties. Een Kubernetes cluster bestaat uit meerdere virtual machines, die worden gehost bij een Cloud Provider en een Control Plane (API Server). AME automatiseert de volledige lifecycle van Kubernetes, waardoor jij je niet druk hoeft te maken over het upgraden van je cluster. Deze virtual machines worden binnen Kubernetes geregistreerd als node in het cluster. Hierop draaien de containers.
Een AME Kubernetes cluster bestaat uit meerdere virtual machines, een controle plane en een eigen firewall. Ook bestaat het uit standaard services, zoals audit, backup & disaster recovery en certificaatbeheer. Deze onderdelen worden volledig beheerd door Avisi.
Het cluster is volledig immutable opgebouwd, waarbij Avisi de combinatie van verschillende versies aan tooling en software valideert. Op basis hiervan maakt het AME-team een platform version. Hiermee wordt gegarandeerd dat een versie van het cluster ook correct functioneert.
Het cluster control plane bestaat uit onder andere de Kubernetes API Server. Vanuit dit control plane wordt het cluster verder aangestuurd. Onze klanten hebben volledig toegang tot de Kubernetes API Server om applicaties te beheren en uit te rollen. Dit houdt in dat onze klanten een cluster-admin ter beschikking gesteld krijgen, met de optie om alle toegang fine grained te configureren via het standaard RBAC mechanism van Kubernetes. Voor toegang wordt gebruikgemaakt van persoonlijke accounts, welke gefaciliteerd worden door OpenID Connect.
Het belangrijkste in een AME-cluster zijn de applicaties die gehost worden door de klant. Hierbij ondersteunen wij vanuit Avisi Cloud, met behulp van een Performance Engineering/Consult. Vanuit Avisi Managed Environment zorgen wij dat alle benodigde tooling gefaciliteerd is, zodat onze klanten zich kunnen focussen op hun core-business.
Dit doen wij door middel van de application infrastructure. Dit zijn ondersteunende applicaties voor het beschikbaar maken van de business applications. Denk hierbij aan proxies en databases. Dit is een scheidingslijn qua verantwoordelijkheden tussen Avisi en onze klanten. Dit zijn diensten die veel overlap hebben met de klant en de applicaties die zij hosten.
Wij helpen onze klanten om een goed passende verdeling te maken. Zo leveren wij standaard een Ingress Controller binnen een cluster, waarvoor wij de hardening en configuratie verzorgen.
Om optimaal gebruik te maken van de beschikbare resources, gebruikt AME node pools. Een node pool is een set aan virtual machines die in een bepaalde datacenter/zone beschikbaar. Deze zijn allemaal van hetzelfde type en grootte. Hierdoor kan je bijvoorbeeld andere type machines toevoegen voor het draaien van webapplicaties, als voor het verwerken van achtergrondtransacties. Dit kan helpen om de juiste verhouding CPU, memory en performance te waarborgen.
Binnen een cluster draait ook een stuk aan core-infrastructuur. Dit zijn componenten die wij binnen een cluster draaien die absoluut noodzakelijk zijn voor een werkbare omgeving. Dit zijn plugins op Kubernetes, zoals voor networking, storage of autoscaling. AME faciliteert een hand-picked selectie, zodat onze klant snel waarde kan halen uit het gebruik van Kubernetes. Daarnaast is het mogelijk om te kiezen tussen verschillende netwerk-implementaties. Standaard geven wij de keuze tussen Calico en Weave net, met meer opties op de roadmap.
Om te helpen met Day 2 operations, installeren wij ook een logging agent op het cluster. Hiermee wordt alle container logging verzameld en verstuurd naar een centrale logging service. Mocht er toch iets fout gaan, dan is de application logging beschikbaar voor het troubleshooten.
Als logging agent gebruiken wij Promtail. Dit is een light-weight proces dat een first class integratie heeft met Kubernetes. Ontwikkeld door Grafana als onderdeel van het open-source project Loki, past Promtail als geen ander in het cloud-native ecosysteem.
Naast het verzamelen van log events, wordt er ook standaard een Prometheus deployment uitgerold binnen het cluster. Dit wordt gedaan op basis van het Prometheus Operator project. Hiermee kan je gemakkelijk metrics verzamelen voor jouw applicaties, door gebruik te maken van de Custom Resource Definitions van het Prometheus Operator project. Wil je weten hoe je hier gebruik van kan maken? Zie de documentatie van het Prometheus Operator project.
Metrics worden net als de log events buiten het cluster verzameld. Hierdoor heb je, als je cluster of Prometheus-instantie binnen de omgeving niet meer beschikbaar is, nog steeds toegang tot alle data.
Het control plane van het Kubernetes cluster is uitgerold op onze eigen infrastructuur. Deze componenten zijn niet zichtbaar in je cluster. Als je bijvoorbeeld een lijst van nodes ophaalt, dan zie je hier geen leader nodes tussen staan.
$ kubectl get node
NAME STATUS ROLES AGE VERSION
ip-
10
-
0
-
0
-
14
.eu-west-
1
.compute.internal Ready workers 4h30m v1.
21.5
ip-
10
-
0
-
0
-
45
.eu-west-
1
.compute.internal Ready workers 4h30m v1.
21.5
ip-
10
-
0
-
0
-
7
.eu-west-
1
.compute.internal Ready workers 3h45m v1.
21.5
Dit is gedaan, zodat wij de hoogst mogelijke beschikbaarheid en integratie van het control plane kunnen garanderen. Ook componenten zoals storage (de CSI controllers) draaien wij buiten het Kubernetes cluster en behandelen wij op dezelfde manier.
We hebben het al eens benoemd, maar wij draaien ook een aantal diensten buiten het cluster die onze klant helpen met hun Day 2 operations. De belangrijkste hiervan zijn een Identity Provider, waarbij klanten via self service hun eigen accounts en rollen kunnen beheren. Ook zijn er diensten voor de opslag en verwerking van metric en logging data uit de clusters.
Wij maken gebruik van Loki voor het verwerken van log events. Voor langdurige opslag van de metrics vanuit Prometheus, gebruiken wij het CNCF project Cortex. Deze diensten ontsluiten wij voor onze klanten, zodat zij altijd toegang hebben tot de benodigde data. Het ontsluiten van deze diensten doen wij door gebruik te maken van Grafana.
In onze volgende blog lichten we toe hoe wij Cortex toepassen om metrics op te slaan én welke voordelen dit voor ons en onze klanten heeft.
Wij gebruiken upstream Kubernetes, zodat wij zo dicht mogelijk bij de standaardfunctionaliteit en gedrag van Kubernetes blijven. Een AME-omgeving voldoet aan de standaard Kubernetes conformance testen. Hierdoor heb je zekerheid dat je jouw applicaties gemakkelijk naar een andere vendor kan overzetten. Zo voorkom je vendor lock-in.
Bij elke release van het AME-platform voeren wij uitgebreide testen uit om de functionaliteit te waarborgen, waaronder de end-to-end testen voor het Kubernetes conformance program.
Via AME worden de nodes volledig geautomatiseerd beheerd. Door gebruik te maken van een immutable infrastructuur, worden patches veilig doorgevoerd.
Bij het updaten van je cluster, worden je nodes vervangen. Hierbij begint AME door eerst nieuwe nodes toe te voegen aan je cluster. Zodra deze up and running zijn, worden de applicaties van de oude notes verplaatst.
Hierboven is een weergave te zien die illustreert hoe een node binnen het cluster eruitziet. Dit proces wordt gevolgd totdat er geen verdere acties meer nodig zijn.
Door eerst een nieuwe node toe te voegen, zorgt AME ervoor dat je altijd de benodigde capaciteit binnen je cluster beschikbaar hebt.
Naast het node replacement proces, wordt er continue gemonitord of de nodes binnen een cluster nog healthy zijn. Mocht er s'nachts een node uitvallen, bijvoorbeeld door hardware failure, dan zorgt AME ervoor dat er een nieuwe node toegevoegd wordt. Zo heb je altijd de gewenste capaciteit beschikbaar op je omgeving.
Via AME kan je clusters uitrollen op meerdere cloud providers. Hierbij is alles geïntegreerd zodat je overal met dezelfde tooling werkt en eenzelfde gebruikerservaring ervaart. Deze clusters zijn terug te vinden in een overzicht.
De clusters zijn uitgerold met ondersteuning voor het afnemen van storage bij de cloud provider waar het cluster draait. Hierbij ondersteunen wij ook het aanmaken van volume snapshots via de Kubernetes CSI snapshot API.
Door gebruik te maken van onze automation tooling, versimpelen wij het maken en werken met volume snapshots. Volume snapshots zijn een gemakkelijke manier om back-ups terug te zetten of data te verplaatsen.
Optioneel kan op elk cluster het netwerkverkeer tussen nodes versleuteld worden. Dit is een setting die live aangepast kan worden voor een bestaand cluster. Network encryptie op node niveau is interessant voor use-cases waarbij je niet zelf met mTLS, client certificaten of een service-mesh aan de gang wilt of kan.
Alle uitgevoerde acties worden in de auditlog opgenomen. Hierdoor is het altijd mogelijk om in te zien welke acties ondernomen zijn op het cluster. Deze audit events zijn opvraagbaar via een Grafana. Aanvullende operationele diensten, zoals ten behoeve van logging en monitoring, zijn door Avisi gefaciliteert per omgeving en worden buiten het cluster opgeslagen. Deze zijn inzichtelijk via Grafana, welke ook is ontsloten via OpenID Connect.
Via onze managed add-ons bieden wij extra functionaliteiten aan, die noodzakelijk zijn om Kubernetes goed te kunnen gebruiken. Zo helpen wij klanten met het installeren van een Ingress Controller en beheren wij een Velero-instantie binnen elk cluster voor disaster recovery.
Wij hebben CLI-tooling beschikbaar voor het beheer en gebruik van een AME-omgeving. Hiermee kan je gemakkelijk een totaal-overzicht van al je omgevingen opvragen en credentials inregelen voor Kubernetes clusters.
$ acloud clusters get
ID SLUG ORG ENV REGION VERSION CPU MEM
ffffcf57-
1761
-4b7a-b0b3-d16dc135e765 demo ame demo eu-west-
1
v1.
20.11
-ame.
1
4
8GB
9d6ff5ba-c3a9-4d88-
9093
-fafb83b4ba5d dev ame development eu-west-
1
v1.
20.11
-ame.
1
8
16GB
Via Avisi Managed Environments ontvang je een platform met alle benodigde tooling en support om je applicaties gecontroleerd in productie te draaien op een Kubernetes-omgeving. Wij hebben in deze post een overzicht van het platform besproken en zullen in een volgende blog post verder inzoomen op de functionaliteit en het gebruik van verschillende onderdelen. Wil jij ook het gemak van 100% geautomatiseerde beheerprocessen ervaren, neem dan contact met ons op.
| Avisi Managed Environments
Door Thomas Kooi / jun 2023
Dan denken we dat dit ook wat voor jou is.