Kubernetes op de Commodore 64!

Ze zeiden dat het niet kon. Dat er niet genoeg CPU was, niet genoeg geheugen, niet genoeg I/O.

Maar ze hadden het allemaal fout!

Na maanden zwoegen over een assembler, wat vieze hacks, en een heleboel optimalisatie is het dan gelukt: HCS heeft Kubernetes geport naar de Commodore 64!

Nog lang niet alle resource types worden ondersteund, meer dan 2 à 3 containers draaien (of een grotere container) is nog wat moeizaam, maar het werkt!

Nu we de eerste hordes hebben genomen staan de volgende items op onze roadmap voor de eerste release:

  • Ram Expansion Unit (REU) support → Dit zou ervoor moeten zorgen dat we meer en grotere containers kunnen draaien
  • Persistent Storage (Storageclasses, PVs, PVCs). Heeft waarschijnlijk IDE64 support nodig, 1541 en 1571 zijn te langzaam

Kubernetes PVC Recovery

Het standaard gedrag van de meeste StorageClasses op Kubernetes is het verwijderen van een onderliggend PersistentVolume (PV) wanneer de bijbehorende PersistentVolumeClaim (PVC) wordt verwijderd.

Nu is dit in de meeste gevallen gewenst gedrag, waarom zouden we oude rotzooi bewaren, maar in sommige gevallen is dit juist precies niet wat je wilt.

Microservices zijn (waarschijnlijk) niet voor jou

Één van de “hippe” design-patronen voor applicaties van de afgelopen paar jaar is de Microservice. Het uit elkaar trekken van je applicatie in meerdere, kleine, services, die via het netwerk en een afgesproken (simpele) API met elkaar praten. Hier horen dan ook principes bij als “loosely-coupled” die zeggen dat het falen van component A niet tot het falen van component B mag leiden (maar component B mag best zeggen dat iets nu niet kan).

Podman en Tijdzones

Wanneer je een container start met podman zal de tijzone binnen de container standaard op UTC gezet worden, standaard universele tijd. Wanneer je hosts in meerdere tijdzones hebt draaien is dit erg fijn, want de logtijden etc. van de verschillende containers zullen allemaal met elkaar gelijk lopen.

Sommige mensen vinden dit daarentegen minder fijn, omdat ze dan in hun hoof moeten gaan omrekenen naar de lokale tijd wanneer ze de logs aan het interpreteren zijn.

Kubernetes is NIET voor jou

Tegenwoordig is “Kubernetes” het standaard antwoord op de vraag “Hoe moeten we dit draaien?”.

Wander is het hier niet mee eens. Hoe leuk hij Kubernetes ook vind, het zou niet per definitie het goede antwoord moeten zijn. Kubernetes voegt een laag aan beheer en complexiteit toe die in veel gevallen vermeden kan worden, of in ieder geval zwaar gereduceerd tot een meer Linux-native oplossing.

STOP HIERMEE!

Als consultant kijkt Wander graag mee over de schouder (of via screenshare) naar de terminals van andere mensen. Soms leert hij een nieuw trucje, soms ziet hij iets moois, maar soms ziet hij ook dingen waar de haren op zijn rug van overeind gaan staan.

Kyverno GeneratingPolicies en OpenShift Route externalCertificate

Op dit kanaal hebben we in het verleden al eens gekeken naar Kyverno, een handige manier om beleid af te dwingen op Kubernetes objecten, en externe certificaten voor OpenShift Routes.

Met de release van Kyverno 1.15 een aantal maanden geleden is er een aantal nieuwe policy types beschikbaar gekomen voor Kyverno die gebruiken maken van Common Expression Lanaguage (CEL), dezelfde taal die ook door Kubernetes zelf gebruikt wordt op objecten als validatingadmissionpolicies, maar ook door dingen als Tekton Webhook Triggers.

CEL regels evalueren meestal sneller, en met minder resource gebruik dan traditionele Kyverno regels.