19/12/2022

Hoe installeer je Kubernetes en wat is Haven Compliance?

Kubernetes wordt steeds populairder binnen organisaties. Een handig opensource-software om containers mee te beheren. Een van de veel gestelde vragen is hoe je Kubernetes installeert. Hiervoor hebben we speciaal een blog geschreven waar we inzoomen op het installeren van Kubernetes in de cloud, on-premise en haven compliance.

Acht belangrijke punten

Voordat we ingaan op hoe je Kubernetes installeert, is het goed om te weten met welke punten je rekening dient te houden. 

 

1: Node pools

Het is belangrijk dat de node pools vervangbaar zijn als je bijvoorbeeld op Azure geen virtual machine scale set maakt. Dan kun je namelijk de node pools namelijk niet aanpassen zonder een redeploy van van het cluster. Je wilt natuurlijk flexibel zijn en Kubernetes wordt voor verschillende workloads gebruikt en dat veranderd altijd. Vooral wanneer een product groeit, wil je er snel nodes bij kunnen zetten.

 

2: Permanente externe IP-adressen

Zorg standaard voor permanente externe IP-adressen op een cloud. Geef het type loadbalancer aan zodat je automatisch een tijdelijk IP-adres krijgt.  Wanneer je een server opnieuw aanmaakt, krijgt hij nieuwe ID’s en dus ook een nieuw extern IP-adres. Denk daarom van te voren na over permanente IP-adressen want anders mag je een hoop DNSsen aanpassen als je de server steeds veranderd.

 

3: Storage

Zorg voor storage, bedenk hoe je je storage op het cluster connect. Je kunt de standaard storage gebruiken met storage classes, hier heb je ook hetzelfde als met een IP-adres. Als je de storage class weghaalt, dan is de storage ook weg. Je kan bijvoorbeeld op azure ook een nfs connectie maken, native op linux. Je kan ook de storage van te voren aanmaken en dan kan je hem meteen op NFS zetten. Houd er rekening mee dat dit op elke cloud anders is. Doe daarom van te voren altijd onderzoek.

 

4: Firewall

Zorg voor een firewall of een access list voor het management van Kubernetes. Let op: het management IP-adres veranderd regelmatig dus gebruik hier DNS voor. Als je dit niet doet, betekent het niet dat iedereen met je Kubernetes kunt verbinden want hier heb je altijd nog certificaten voor nodig. Dit is puur vanuit security perspectief.

 

5: Windows Nodes

Houd rekening met Windows Nodes als deze nodig zijn. In alle clouds moet je dit van te voren aangeven. Het is een groot verschil met alleen linux nodes. Het cluster moet namelijk anders opgezet worden, anders kun je opnieuw beginnen. In Azure moet bijvoorbeeld het subnet waarmee je Kubernetes installeert compatible zijn met Windows.

 

6: Netwerken

Let op dat de netwerken die je aangeeft in het juiste subnet vallen zodat je ze kunt bereiken. De meeste clouds hebben hier een standaard voor, maar die is vaak groot of die overlappen met andere netwerken. Op Azure wordt hier standaard het gehele 10 netwerk voor gebruikt.

 

7: Extern verkeer

Waar je ook rekening mee moeten houden is dat als een pod het netwerk verkeer initieert, bijvoorbeeld als hij wat bij een externe api server informatie gaat ophalen buiten het kubernetes cluster, dan is het extern ip van de pod gelijk aan het externe ip van de node waar de po actief is. Vaak wordt dit gerouteerd naar een algemeen extern adres anders heb je uitdagingen met firewalls. 

 

8: Service accounts

Bedenk ook dat je in sommige clouds een service account moet aanmaken, anders kun je geen rechten geven waar het kubernetes cluster bij kan. Zoals een docker registry. Dit service account kun je niet achteraf opzetten deze gebruik je met de installatie.

 

Cluster uitrollen op on-premise

Voor het uitrollen van clusters op on-premise zijn er ok belangrijke zaken om rekening mee te houden. Zie hieronder acht belangrijke punten:

·         Netwerk, zorgt voor genoeg ruimte in het subnet, de nodes en de externe IP-adressen van de services komen in hetzelfde subnet

·         Minimaal 2 masters

·         Storage, welke en hoe

·         Welke container netwerk interface (CNI)

·         Log aggregation ofwel centrale logging

·         Monitoring

·         Externe toegang tot het cluster

·         Windows nodes

 

Bovenstaande zaken moet je uitgezocht hebben voordat je van start gaat. Het installeren van Kubernetes kan je ook met verschillende tools doen en met verschillende resultaten. Als standaard van de Kubernetes website kan je Kubeadmin gebruiken. Als je voor de eerste keer Kubernetes uitrolt, is dit de ideale keuze. Er staat uitstekende documentatie op de kubernetes.io website.

 

Haven compliance

Gemeenten gebruiken applicaties voor het uitvoeren van hun taken. Die applicaties draaien op een IT-infrastructuur (zoals rekenkracht, opslag en netwerkverbindingen). Iedere gemeente heeft haar IT-infrastructuur anders georganiseerd. Bij de ene gemeente draait bijvoorbeeld veel lokaal en bij de ander juist meer in de cloud. Applicaties moeten worden aangepast aan de infrastructuur waarop ze draaien. Dat maakt het voor gemeenten lastig om samen applicaties te ontwikkelen en deze snel in te zetten bij alle gemeenten. Haven biedt daarvoor een oplossing. 

 

Haven legt verbinding tussen ontwikkelde applicaties en iedere gemeente IT-infrastructuur. Met Haven kunnen gemeenten applicaties overal hosten zonder dat zij daarvoor hun IT-infrastructuur hoeven aan te passen. Daardoor kunnen gemeenten applicaties samen ontwikkelen en snel inzetten bij alle gemeenten. Dit zorgt onder meer voor uniformiteit, lagere kosten en minder afhankelijkheid van leveranciers. Daarnaast zit er een groot deel security in waarbij je goed over na kan denken. Er is wel een probleem, niet alle voorwaarden werken of zijn zo bij de grote clouds. Haven bestaat momenteel uit 16 verplichte en 2 voorgestelde checks.

 

Haven compliance

Gemeenten gebruiken applicaties voor het uitvoeren van hun taken. Die applicaties draaien op een IT-infrastructuur (zoals rekenkracht, opslag en netwerkverbindingen). Iedere gemeente heeft haar IT-infrastructuur anders georganiseerd. Bij de ene gemeente draait bijvoorbeeld veel lokaal en bij de ander juist meer in de cloud. Applicaties moeten worden aangepast aan de infrastructuur waarop ze draaien. Dat maakt het voor gemeenten lastig om samen applicaties te ontwikkelen en deze snel in te zetten bij alle gemeenten. Haven biedt daarvoor een oplossing. 

 

Haven legt verbinding tussen ontwikkelde applicaties en iedere gemeente IT-infrastructuur. Met Haven kunnen gemeenten applicaties overal hosten zonder dat zij daarvoor hun IT-infrastructuur hoeven aan te passen. Daardoor kunnen gemeenten applicaties samen ontwikkelen en snel inzetten bij alle gemeenten. Dit zorgt onder meer voor uniformiteit, lagere kosten en minder afhankelijkheid van leveranciers. Daarnaast zit er een groot deel security in waarbij je goed over na kan denken. Er is wel een probleem, niet alle voorwaarden werken of zijn zo bij de grote clouds. Haven bestaat momenteel uit 16 verplichte en 2 voorgestelde checks.

 

De Haven compatibility checker (HCC)

Er zijn 16 verplichte checks waarvan sommige outdated zijn of er standaard in zitten, maar het is wel slim om ze te weten. De Haven compatibility checker is een tool om alle punten te controleren. Deze wordt regelmatig geüpdatet. De Haven Compatibility checker is recent en niet ouder dan 3 maanden.Dat betekent dat het cluster in meerdere datacenters moet staan of datacenters die het snel kunnen overnemen.

 

Minimaal 3 master nodes en 3 worker nodes

Gebruik minimaal drie master nodes. Nodes hebben SELinux, Grsecurity, AppArmor, LKRG of Talos enabled. Deze heeft ontzettend veel impact. De nodes moeten helemaal speciaal geprepareerd worden hiervoor. Houd er rekening mee dat je de worker nodes en de masters niet direct aan het internet hangt.

 

De Kubernetes versie, de laatste stabiele versie of 2 minors achter

Dus de laatste stabiele versie van Kubernetes, maar de clouds lopen altijd één versie achter. Ook in de processen is het belangrijk om te testen voordat je de versie naar klanten brengt.

 

Role Based Access Control

Zorg ervoor dat je Role Based Access Control aan is. Het is een mooie manier om rechten in het cluster te beheren.

 

Basic auth is disabled

Het is lastig om Basic authentication te onderhouden. Er zijn mooie oplossingen zoals dex of OpenID Connect om gebruikers te authentiseren.

 

ReadWriteMany persistent volumes support

Zorg ervoor dat deze ook standaard aan staat. De ondersteuning zit al in de huidige versies en dit zorgt ervoor dat meerdere pod’s naar de storage kunnen verbinden.

 

LoadBalancer service type support

In de nieuwere versies hoor je deze standaard aan te zetten. Een type loadbalancer geeft een extern IP aan een service.

 

CNCF Kubernetes conformatie

Kubernetes zit al vanaf het begin in de Cloud Native Computing Foundation

 

Geautomatiseerde HTTPS certificate provisioning

Houd er rekening mee om te kijken of het nieuwe automatische certificaat wel tegen het juiste root certificaat is gemaakt. Ook is het makkelijker om een certificaat aan te vragen als je misschien het domein niet hebt. Deze zijn makkelijker te vervalsen. Als je er één van een certificaat leverancier maakt, dan zou dit veiliger moeten zijn. Vooral als je de extra certificering aangezet hebt. Dan moet je ook informatie opleveren en wordt er contact met je opgenomen of je wel dezelfde persoon bent.

 

Log aggregation is operationeel

Centrale logging is geweldig, aangezien een docker na een herstart de logging verdwijnt.

 

Metrics-server is operationeel

Je wilt graag weten of en hoe de containers performen. En dan zijn er nog twee voorgestelde checks.

 

Haven Dashboard is uitgerold

Haven heeft een dashboard om deployments te beheren, Haven heeft deze graag als vast onderdeel.

 

CIS Kubernetes Security Benchmark

Dit is misschien wel de belangrijkste. Center for Internet Security’s Kubernetes benchmark helpt je met de beste manier om het cluster te beveiligen en is zeker aan te bevelen.

 

Zelf aan de slag met Kubernetes

Wil je interactief aan de slag met Kubernetes? Het gehele jaar door organiseren wij masterclasses over Kubernetes. De categorieën waar je uit kunt kiezen zijn technische masterclasses, strategische masterclasses en Kubernetes & Security. Interesse? Meld je hier aan.

Deel deze post
Merijn Plaisier
Merijn is Lead Engineer en tevens Partner bij ACC ICT. Merijn is vanaf 2010 werkzaam bij ACC ICT in verschillende rollen en maak je blij met de meest technische vraagstukken waar hij zich in vast kan bijten. Merijn schrijft graag over ontwikkelingen in de IT-branche.