Door: Philippe Van De Vreken
Vorig jaar kreeg ik via Geo Solutions de kans om een tweedaagse opleiding te volgen bij Esri Inc. over het ontsluiten van ArcGIS Enterprise via Kubernetes. In deze blogpost gaan we dieper in op deze technologie en wat ze betekent voor ArcGIS Enterprise.
Cloud-native technologie
Naast de traditionele manier om ArcGIS Enterprise te deployen via Windows of Linux heeft Esri enkele jaren geleden een derde deploymentoptie geïntroduceerd via Kubernetes. Het gaat om een volledig nieuwe ontwikkeling met als doel ArcGIS Enterprise beschikbaar te maken als een cloud-native technologie.
Niet alle software die je in een cloudomgeving installeert, is automatisch cloud-native. Cloud-native verwijst naar een reeks praktijken en ontwerpprincipes voor het bouwen en runnen van applicaties die optimaal gebruikmaken van de mogelijkheden van cloud-computing omgevingen. Cloud-native applicaties zijn specifiek ontworpen om te profiteren van:
- Schaalbaarheid
- Verhoog of verlaag de capaciteit van je systeem quasi onmiddellijk
- Elasticiteit
- Stem de capaciteit van je systeem af op de actuele vraag
- Bespaar kosten door inactieve resources te stoppen
- Veerkracht (resilience)
- Garandeer een hoge beschikbaarheid
- Behoud beschikbaarheid tijdens upgrades
- Maak de infrastructuur bestand tegen storingen
Cloud-native technologie wordt typisch geïmplementeerd via microservices. Daarbij wordt software opgesplitst in kleine, onafhankelijke services, elk belast met een specifieke taak. Deze services kunnen los van elkaar worden gedeployed, geschaald en geüpdatet.
Cloud-native applicaties worden uitgerold via containers. Een container is een compact, autonoom pakket dat naast de applicatie ook alle benodigde ondersteunende software bevat. Developers pushen deze containers naar een cloud-based registry (zoals Docker Hub), vanwaar ze kunnen worden gepulld en gedeployed.
Kubernetes
Kubernetes (vaak afgekort als K8s) is een open-source platform voor het automatiseren van het deployen, schalen en beheren van containerized applicaties. De technologie werd oorspronkelijk ontwikkeld door Google en staat in voor de orkestratie van containers.
Kubernetes zorgt voor schaalbaarheid door automatisch containers toe te voegen of te verwijderen in functie van de load. Daarnaast maakt het applicaties high available door falende containers automatisch te vervangen en workloads te verdelen over meerdere machines (nodes) binnen een cluster.
Een applicatie wordt zo als het ware zelfherstellend: wanneer een container faalt of onstabiel wordt, herstart of vervangt Kubernetes deze automatisch. Ook load-balancing wordt actief toegepast, waarbij netwerkverkeer automatisch verdeeld wordt over gezonde containers om bottlenecks te vermijden.
Verder ondersteunt Kubernetes rolling updates en rollbacks, waardoor applicaties zonder downtime kunnen worden geüpdatet en indien nodig teruggedraaid. Configuratie gebeurt typisch via YAML- of JSON-bestanden waarin je de gewenste toestand van het systeem definieert. Kubernetes zorgt er vervolgens voor dat die toestand ook effectief wordt bereikt.
De kleinste eenheid binnen een Kubernetes-cluster is een pod. Een pod vertegenwoordigt één of soms meerdere containers en heeft binnen het cluster een uniek IP-adres.
ArcGIS Enterprise op Kubernetes
Binnen ArcGIS Enterprise vormt Kubernetes een derde deploymentoptie naast Windows en Linux. Waar ArcGIS Enterprise op Windows of Linux bestaat uit vier afzonderlijke componenten (Portal for ArcGIS, ArcGIS Server, ArcGIS Datastore en de Web Adaptors), wordt ArcGIS Enterprise op Kubernetes gedeployed als een set van microservices die samen worden georkestreerd binnen een Kubernetes-cluster.

ArcGIS Enterprise op Kubernetes groepeert zijn pods in vier conceptuele categorieën:
- Framework pods
Omvat onder meer de Ingress controller pod (het toegangspunt tot het cluster dat inkomende requests van de load balancer doorstuurt naar de nodes) en de Help pod voor de helpdocumentatie. - Administration pods
Omvatten de API-pods (ArcGIS Enterprise Administrator API en Portal Sharing API) en de ArcGIS Enterprise Manager pod, waarmee je de organisatie initieel aanmaakt en later beheert. - GIS services pods
Afzonderlijke pods voor de verschillende types GIS webservices. - System managed storage pods
Pods die instaan voor het opslaan van systeemdata zoals logs, gebruiksstatistieken, indices, Portal content en hosted feature data.

Bron: https://enterprise-k8s.arcgis.com/en/latest/deploy/system-architecture.htm
Hoewel eindgebruikers nauwelijks een verschil merken in het gebruik van ArcGIS Enterprise, verandert het beheer voor GIS-admins aanzienlijk door de volledig andere backend.
ArcGIS Enterprise op Kubernetes (v. 12.0) wordt ondersteund in verschillende omgevingen:
- Managed Kubernetes services van grote cloudproviders
- Microsoft Azure Kubernetes Service
- Amazon Elastic Kubernetes Service
- Google Kubernetes Engine
- Red Hat OpenShift Container Platform
- Als Platform as a Service (PaaS) op on-premise hardware of bij een cloudprovider
- Via een Red Hat Enterprise Linux (RHEL) operating systemÂ
- Rancher Kubernetes Engine 2
- VMware Tanzu
Bij een deployment kies je uit drie architectuurprofielen: Enhanced, Standard en Development. Deze profielen verschillen in de mate van redundantie van de pods. Enhanced en Standard zijn bedoeld voor productie, waarbij Enhanced de hoogste beschikbaarheid biedt. Het Development-profiel is geschikt voor niet-productieomgevingen. Elk profiel vereist een minimum aantal worker nodes met minimaal 8 vCPU en 32 GB RAM per node.

Bron: https://enterprise-k8s.arcgis.com/en/latest/deploy/system-requirements.htm
Verschillen met ArcGIS Enterprise op Windows of Linux
Een belangrijk verschil is de life cycle. Voor ArcGIS Enterprise op Kubernetes bestaan geen short- en long-term support releases. Zodra een nieuwe versie verschijnt, gaat de vorige in mature support en ontvangt ze geen patches meer. Nog een release later wordt die versie volledig retired. In de praktijk betekent dit dat een versie ongeveer één jaar ondersteund blijft. Werken met ArcGIS Enterprise op Kubernetes veronderstelt dus dat je regelmatig upgrades inplant.

Bron: https://support.esri.com/en-us/products/arcgis-enterprise-kubernetes/life-cycle
Ook het deployproces verloopt anders. Dat gebeurt altijd in twee stappen. Eerst deploy je via een script een beperkt aantal pods, waaronder de Enterprise Manager pod. Daarna doorloop je in Enterprise Manager een wizard om de ArcGIS Enterprise-organisatie aan te maken.

Bron:Â Screenshot demo-omgeving
Via die wizard kies je het gewenste architectuurprofiel, upload je een licentiebestand, maak je een adminaccount aan en configureer je de opslag. Vervolgens worden de overige pods gedeployed en is ArcGIS Enterprise na ongeveer 35 tot 45 minuten operationeel.
Een derde verschil is ArcGIS Enterprise Manager zelf. Dit is dé centrale beheerinterface voor GIS-admins. Je kan er onder meer SSL-certificaten uploaden, backups nemen en terugplaatsen, logs raadplegen, GIS-services beheren en updates of upgrades uitvoeren. Taken die bij ArcGIS Enterprise op Windows- of Linux-deployments verspreid zitten over verschillende beheertools, komen hier samen in één interface.

Bron: Screenshot demo-omgeving
Bij ArcGIS Enterprise op Kubernetes maak je onderscheid tussen updates en upgrades. Een update kunnen we vergelijken met het uitrollen van een patch. Updates vervangen slechts enkele microservices en gebeuren meestal via rolling updates. Ze kunnen altijd worden teruggedraaid. Upgrades vervangen alle microservices en combineren rolling updates met blue-green updates. Bij een blue-green update worden nieuwe pods naast de bestaande uitgerold en pas na succesvolle tests actief gemaakt. Upgrades kunnen niet worden teruggedraaid; bij problemen moet je een backup terugplaatsen.
Zowel updates als upgrades gebeuren in read-only mode, maar ArcGIS Enterprise blijft wel beschikbaar. Dat is een groot verschil met upgrades op Windows of Linux, die vaak downtime vereisen. Bovendien verlopen upgrades op Kubernetes doorgaans sneller.
Tot slot maakt een Kubernetes-deployment het systeem veel elastischer. Dankzij cluster autoscaling worden automatisch extra nodes toegevoegd wanneer CPU of RAM ontoereikend zijn, en weer verwijderd wanneer de belasting afneemt. Dit laat toe om kosten te optimaliseren.

Bron: https://www.perfectscale.io/blog/kubernetes-cluster-autoscaler
Bij Windows- of Linux-deployments ligt de beschikbare capaciteit vast en kan die enkel aangepast worden via manuele ingrepen door een systeembeheerder. Naast cluster autoscaling bestaat ook horizontal pod autoscaling (HPA), waarbij het aantal pod-replica’s automatisch wordt aangepast wanneer bepaalde grenswaardes voor CPU- of RAM-gebruik worden overschreden.
Wie komt in aanmerking om over te stappen naar ArcGIS Enterprise op Kubernetes?
Niet elke organisatie met een ArcGIS Enterprise op Windows of Linux hoeft over te stappen. Voor eenvoudige deployments en organisaties zonder Kubernetes-ervaring blijven Windows en Linux vaak de beste keuze.
Heb je daarentegen Kubernetes-knowhow in huis en beheer je vandaag een complexere ArcGIS Enterprise-omgeving (bijvoorbeeld met een high availability setup van Portal of een ArcGIS Server site die uit meerdere machines bestaat), dan is ArcGIS Enterprise op Kubernetes zeker het overwegen waard. Zeker voor kritische business systemen, waar downtime tijdens upgrades moeilijk te verantwoorden is, biedt Kubernetes duidelijke voordelen dankzij rolling updates.
Wel belangrijk om te vermelden: er bestaan vandaag geen kant-en-klare tools om bestaande ArcGIS Enterprise deployments op Windows of Linux zomaar via lift-and-shift naar Kubernetes te migreren.
ArcGIS Enterprise op Kubernetes is een nieuwe manier om ArcGIS Enterprise te deployen en biedt duidelijke voordelen ten opzichte van traditionele Windows- of Linux-deployments. Voor eindgebruikers verandert er weinig, maar voor GIS-admins betekent het een fundamenteel andere manier van werken.
Wordt cloud-native werken steeds belangrijker binnen jouw organisatie? Hou deze blog dan zeker in het achterhoofd encontacteer ons vrijblijvend voor meer informatie.


