Promoties met Kustomize

Wanneer je kustomize gebruikt om met Overlays de lifecycle-fases van je applicatie te beheren dan ga je vroeger dan later een keer de vragen stellen hoe je promoties van images (en Bases) tussen deze fases kunt automatiseren. Met de hand references en image transformers doorzetten is meestal geen optie vanwege de kans op fouten, en het willen automatiseren van de promotie pipelines.

Nu zijn er bestaande oplossingen met tools als Renovate die dit (gedeeltelijk) voor je kunnen oplossen, maar die hebben vaak wat meer infrastructuur nodig. Als je deze tools nog niet gebruikt dan zou je zelf wat scriptjes kunnen schrijven, maar nu heb je nog iets extras om te beheren en bij te houden.

Argo Rollouts op OpenShift

Argo Rollouts op OpenShift

Met Argo Rollouts kun je Deployment objecten vervangen door Rollout objecten die meer controle geven over hoe updates aan een Deployment uitgerold worden. Langzaam aan met Canaries, atomisch met Green-Blue changeover, en meer. Dit alles kan automatisch gebeuren, met handmatige promotie stappen, combinaties daarvan, en zelfs met probes die kijken of een nieuwe versie goed werkt.

Openshift Vertical Pod Autoscalers

Één van de uitdagingen die wij vaak zien bij klanten op het gebied van platform management is het “right-sizen” van applicaties; Het goed zetten van de requests en limits voor applicaties zodat ze altijd aan resources kunnen gebruiken wat ze nodig hebben, maar niet onnodig veel aanvragen dat niet door de rest van de applicaties op het cluster gebruikt kan worden.

Naast educatie van applicatie teams, een belangrijke stap, kan het ook handig zijn om teams (geautomatiseerde) adviezen te geven over de “juiste” instellingen voor hun applicaties. Een tool die daarbij kan helpen is de Vertical Pod Autoscaler van OpenShift.

OpenShift Root zonder Root

Met de release van OpenShift 4.17 is er een feature in Technology Preview gekomen waar Wander al heel lang op zat te wachten: User Namespaces.

User Namespaces hebben niks te maken met Kubernetes Namespaces, maar met Linux Kernel Namespaces. Met User Namespaces kan een container een ander idee hebben van wat user ids zijn dan het onderliggende OS. Zo kan een proces in een container denken root te zijn, en alle rechten hebben (binnen de container) die daarbij horen, maar buiten de container stiekem een ander UID hebben. Dit is hetzelfde principe als met Rootless Podman, maar nu beschikbaar (als beta) op Kubernetes, en dus ook op OpenShift.

Met deze feature hoeven cluster beheerders minder vaak uitzonderingen te maken voor onder andere COTS applicaties door toegang to verlenen tot de anyuid of nonroot Security Context Constraints (SCC), wat kan leiden tot een beter security posture.

Kustomize Patches - Interactief Lab

In de Kubernetes wereld is “Kustomize” één van de handigste manieren om met je manifesten om te gaan als je naar meerdere omgevingen of life cycle fases wilt uitrollen. Het is niet voor niks dat de basis-functionalieit van Kustomize ook in het kubectl en oc commando zit ingebakken.

Naast alle ingebouwde transformatie die Kustomize kan uitvoeren op zaken als replicas, images, labels, etc. is er ook een ingebouwde transformer die patches kan uitvoeren, zowel Strategic Merge patches die misschien kent van kubectl apply als JSON6902 patches zoals bekend van kubectl patch.

Containerfiles 101 - Interactieve Tutorial

Op dit kanaal hebben we het vaak over containers en container-gerelateerde zaken zoals Kubernetes. Één van de dingen die we daarentegen nog nooit besproken hebben is de basis van het zelf maken van containers en container images.

Deze week gaan we hier wat nieuws mee uitproberen, in plaats van een video met uitleg, en eventueel wat source-code, krijgen jullie een interactieve leeromgeving met instructies waar je de uitleg tegelijk in de praktijk kunt toepassen.

Je kunt dit lab vinden op Killercoda in de HCS Sudo Friday omgeving

Bash Trucjes: Until en ${RANDOM}

Veel beheerders brengen (terecht) een groot deel van hun dag door op de command prompt. Nu wordt natuurlijk alles wat geautomatiseerd kan worden ook geautomatiseerd, maar wat handwerk zal er altijd zijn. Nu kan het zijn dat sommig van dat handwerk een kans van falen heeft, bijvoorbeeld omdat een remote systeem (tijdelijk) niet bereikbaar is, omdat een mirror nog niet gesynchroniseerd is, of gewoon omdat de stand van de maan je systeem niet aanstaat.

In plaats van een commando dan met de hand meerdere keren te proberen kun je ook je shell dit voor je laten doen. Één van de manieren waarop dat kan is met een until block.

Custom SELinux Policy Modules

Bij veel bedrijven draaien er naast de standaard software die door de OS leverancier is aangeleverd ook custom applicaties op de servers. Soms zijn deze in huis geschreven, soms zijn deze door een andere leverancier aangeleverd. Maar in beide gevallen is de kans klein dat deze services al restricties opgelegd hebben gekregen via een SELinux policy.

Het is gelukkig mogelijk om zelf policy modules te schrijven die de bestaande SELinux policy uitbreiden met extra types en regels voor je custom applicaties. Hoever je wilt gaan in het opleggen van restricties is aan jou.

Openshift AdminNetworkPolicies

Praktisch elke Kubernetes/OpenShift beheerder kent het principe van de NetworkPolicy, objecten binnen een namespace die bepalen welk verkeer van en naar je pods is toegestaan binnen die namespace.

Om hier gezonde defaults voor af te dwingen hebben de meeste (multi-tenant) clusters ook al maatregelen, zoals DefaultProjectRequestTemplates of Kyverno “generate” regels, die een set “standaard” NetworkPolicies in elke namespace neerzetten.

Het probleem dat nu ontstaat is dat als tenants hun eigen NetworkPolicies moeten kunnen maken, om de toegang binnen hun applicaties fijnschalig te kunnen regelen, ze ook rechten moeten hebben om de defaults aan te passen of te verwijderen. Nu hoeft dat geen probleem te zijn, maar als teams minder voorzichtig of ervaren zijn kan dat al snel leiden tot support calls omdat de OpenShift ingress pods bijvoorbeeld niet meer bij hun applicatie mogen, en hun Routes zijn stukgegaan.

Gelukkig hebben in OpenShift 4.14 NetworkPolicies een uitbreiding gehad, die in 4.16 GA gegaan is en dus ondersteund gebruikt kan worden: AdminNetworkPolicies.

Template je Containers met Systemd en Podman

Twee jaar geleden hebben we samen met jullie gekeken naar het handmatig maken van een Systemd unit van je containers. Een jaar geleden hebben we laten zien hoe je dat moderner kunt doen met Quadlets. Vandaag willen we met jullie kijken naar een recente uitbreiding op quadlets van Podman 5.0.0 (hopelijk straks in RHEL9.5, maar nu al in Fedora) die het mogelijk maakt om ook je containers via Systemd templates aan te maken. Templates geven je de mogelijkheid om een basis unit te definiëren, waar je vervolgens instanties van kunt starten met hun eigen naam. Die naam kun vervolgens ook als variable in je units gebruiken voor bijvoorbeeld de locatie van data-directories of commandline parameters.

Makkelijke VMs met Gnome Boxes

Nu heel het land schoolvakantie heeft en het (hopelijk) iets rustiger is op het werk is het tijd om wat aan je persoonlijke ontwikkeling te doen. Één van de manieren waarop je dat zou kunnen doen is door jezelf bloot te stellen aan wander andere Operating Systemen dan je gewend bent.

Natuurlijk kun je dat doen hoe je het altijd al gedaan hebt, door een ISO te downloaden en die in je virtualisatie software naar keuze te steken, maar je zou ook een keertje wat nieuws kunnen proberen.

Track je Shows met Ticket Booth

Nu het (bijna) vakantie is wordt het voor veel mensen weer tijd om bij te lopen met het kijken van de series en films die ze het afgelopen jaar gemist hebben. Wanneer je alles van je streamingdiensten afhaalt wordt er automatisch voor je bijgehouden wat je al gekeken hebt, en waar je bent gebleven. Maar als je ook gebruik maakt van de bioscoop, DVDs/Blu-Rays, of andere digitale media, dan kan het zijn dat je een geheugensteuntje nodig hebt van waar je bent gebleven.

Lokale AI met LM Studio

Je kunt tegenwoordig geen steen gooien zonder iets “AI” te raken. Nu mist de “I” uit AI nog overal, maar sommige dingen kunnen dat wel geloofwaardig nadoen. Één van de huidige hype vlakken zij Large Language Models (LLM), software met datasets die plausibel klinkende antwoorden kunnen geven op vragen. Waarschijnlijk ben je wel bekend met commerciële LLMs, zoals bijvoorbeeld ChatGPT.

Zero to Hero: Autofs

Wanneer je op een Linux systeem regelmatig dynamisch bestandssystemen moet mounten (bijvoorbeeld NFS home directories), of liever niet alle mounts standaard aan hebt staan terwijl ze nauwelijks gebruikt worden, kan de automounter (autofs) uitkomst bieden.

Autofs mount zichzelf op een directory, en mount dan vervolgens dynamisch subdirectories wanneer ze aangesproken worden, en unmount ze na een periode van inactiviteit weer.

Back To Basics: Root Password Reset

Iedere beheerder komt wel een keer op het punt dat hij het root wachtwoord van een systeem niet (meer) kent. Misschien is het een oud, niet goed gedocumenteerd, systeem, misschien is het een super-speciaaltje uit een verloren tijd, of misschien had iemand dikke vingers bij het instellen.

In een moderne setup kan het het makkelijkst zijn om dat systeem gewoonweg opnieuw in te spoelen, maar helaas is dat niet altijd een mogelijkheid. In het geval van een virtuele machine zou je ook het disk-image ergens anders kunnen koppelen en op die manier /etc/shadow bewerken, maar ook dat is niet altijd een uitkomst.

Wat je wel (bijna) altijd kunt doen, als er geen wachtwoord op de bootloader staat, of dat wachtwoord is bekend, is inbreken op het boot proces en op die manier jezelf toegang verschaffen tot het systeem, waarna je dingen kunt doen als het root wachtwoord resetten naar een bekende waarde.

Transformeer je Tekst met Text Pieces

Mensen die de hele dag in hun editor of IDE naar keuze leven hebben waarschijnlijk een flinke lading aan trucjes, kunstjes, macros, en zwarte magie die ze uit hun vingertoppen schudden om veelvoorkomende transformaties uit te voeren. Denk bijvoorbeeld aan Base64 Encode/Decode, het omzetten van een document tussen JSON en YAML, of het escapen van speciale karakters in URLS.

Mar de mensen die dit soort acties met minder regelmaat uit moeten voeren zijn vaak op zoek naar de goede plugin of commandline tool voor wat ze willen, en vallen vaak terug op (soms wat minder betrouwbare) websites om dit voor ze te doen.

Zij die gelukkig genoeg zijn om op een moderne Linux desktop te werken kunnen ook gebruik maken van “Text Pieces”, een handige grafische applicatie die je makkelijk transformaties laat uitvoeren op (stukken van) je tekst.

Naast een hele rits aan ingebouwde filters kun je Text Pieces ook uitbreiden met je eigen filters door daar (eenvoudige) scripts voor te schrijven.

Beyond the Basics: SELinux Policy Queries

Op een RHEL systeem is standaard een SELinux policy (meestal targeted) actief die bepaalt wat services wel, maar vooral ook niet, mogen doen. In principe is alles wat niet expliciet is toegestaan verboden, maar wat er nou precies is toegestaan is voor veel beheerders een enigma.

Gelukkig zijn er tooltjes waarmee je een SELinux policy kunt uitlezen om te zien wat er nou precies allemaal inzit, zonder naar de source van de policy te hoeven grijpen. Een bijkomend voordeel van je draaiende systeem uitlezen is dat eventueel geladen modules en extensies ook uitgelezen worden.

Custom Atomic RHEL met Bootc

Sinds de release van Red Hat Enterprise Linux (RHEL) 9.4 is er een toffe Technology Preview (TP) waarmee je ostree gebaseerde RHEL systemen kunt uitrollen met je eigen custom images. Denk de Universal Blue variant van Silverblue, maar dan voor je eigen custom RHEL deployments, of het nou gaat om machines in de cloud, bare-metal, lokale VMs, etc.

Een van de leukste dingen hieraan, naast de standaard voordelen van image-based deployments met ostree zoals pijnloze rollbacks etc., is hoe makkelijk het is om je eigen images te maken aan de hand van een Containerfile (Dockerfile voor degenen die in het vorige decennium leven).

CLI Monitoring met btop/bpytop

Iedereen die ooit wat op een Unix, Linux, of BSD commandline gedaan heeft kent waarschijnlijk het tooltje top wel. Een handig manier om snel een overzicht van het CPU en geheugen van je processen te krijgen. Nu is er niks mis met het top commando, maar het mist informatie over dingen als netwerk en disk gebruik, en erger nog, het ziet er niet 733t uit.

Commandline Applicaties in Flatpaks?

De meeste mensen die Flatpak kennen zullen dat waarschijnlijk vooral doen vanwege het feit dat het een makkelijke, distributie onafhankelijke, manier is om grafische applicaties mee te installeren en te draaien, vaak in een sandbox.

Maar wist je dat je ook commandline apps kunt draaien met Flatpak? Dit kan handig zijn om de bijbehorende CLI tools van je grafische applicaties te gebruiken, maar ook om tools uit de runtimes van je Flatpak applicaties te gebruiken.

Zwevende Mini Vensters voor Iedereen

In veel browsers heb je tegenwoordig de mogelijkheid om van een spelende video een kleiner, zwevend Picture-in-Picture (PiP) venster te maken, dat boven je andere vensters blijft zweven. Nu zou het handig zijn als je dat met elk venster zou kunnen doen, bijvoorbeeld om een langlopend shell commando in de gaten, of de webcamviewer voor je 3D printer.

Als je gebruikt maakt van de Gnome Desktop dan is er een handige extensie die je kunt installeren die je precies die functionaliteit biedt: van elk venster dat je maar wilt een (schaalbare) miniatuur maken die je kunt verplaatsen, en die boven je andere vensters blijft zweven: WTMB (Window Thumbnails).

Paas Puzzel 2024

Zoals elk jaar heeft HCS Company ook dit jaar weer een leuke puzzel voor jullie met Pasen.

Dit jaar is de Paashaas langs geweest op Wander zijn desktop, en heeft daar wat woorden voor jullie verstopt achtergelaten. De woorden kunnen zich echt overal bevinden, in plaatjes, applicaties, tekstbestanden, etc., maar overal staat duidelijk aangegeven om welk woord het gaat. Aan jullie de taak om alle zes de woorden te vinden, die in de goede volgorde te zetten, en de resulterende zin op te sturen.

Kubernetes Events de Baas

Één van de meest onmisbare tools bij het debuggen van problemen ope een Kubernetes/OpenShift cluster zijn de “Events”. Kleine stukjes informatie/logging die door de verschillende controllers gegeneerd worden (als Kubernetes objecten) met informatie over wat er allemaal gebeurt en misgaat. Zo zul je in deze events berichten tegenkomen over het al dn niet succesvol ophalen van container images, het starten van pods en containers, het aanmaken van Jobs vanuit een CronJob, het falen van de verschillende probes die op een pod kunnen staan, en meer.

Helm Charts in OpenShift GitOps

Als je een applicatie die via Hem charts wordt gedistribueerd in je OpenShift GitOps (ArgoCD) wilt opnemen heb je twee opties:

  1. Een ArgoCD applicatie van het type “Helm” maken
  2. De Helm chart via kustomize laten renderen, en de kustomization.yaml in je ArgoCD opnemen.

De eerste oplossing is het makkelijkst, en heeft weinig extra configuratie nodig. Het nadeel is wel dat je wat betreft aanpassingen gelimiteerd bent op wat de schrijver van de chart via de values.yaml heeft aangeboden.

Wanneer je extra aanpassingen nodig hebt kom je dus al snel uit op de tweede methode: De helm chart via kustomize laten renderen (inclusief aanpassingen via values.yaml), en daar extra aanpassingen op doen via de bekende kustomize transformers zoals images:, patches:, replicas:, etc.

AWX Credentials Ontsleutelen

Soms kan het gebeuren dat er in een instantie van AWX (of Ansible Tower, of Red Hat Ansible Automation Platform) credentials staan opgeslagen die belangrijk zijn, maar die nergens anders terug te vinden zijn. Ga je in zo een geval naar de web interface van AWX, die krijg je overal bij de belangrijke velden $encrypted$ te zien, maar niet de waardes die je zo hard nodig hebt.

Gelukkig is er een manier om via het awx-manage commando deze waardes niet alleen op te vragen, maar ook te laten ontsleutelen.

Kubernetes GUIs: Seabird

In een vorige aflevering van Sudo Friday hebben we gekeken naar een aantal grafische applicaties om je Kubernetes clusters mee te managen. Een applicatie die daarvoor op Wander zijn lijst stond om te onderzoeken, maar die helaas (nog) niet met alle authenticatie methodes werkte, en dus helaas ook niet met OpenShift, was “Seabird”.

Flatpak Downgrades

Één van de belangrijkste features van elke pakketmanager is het kunnen terug rollen naar vorige versies. Dit kan bijvoorbeeld nuttig zijn wanneer een nieuwere versie een bug heeft geïntroduceerd in een applicatie waar je op vertrouwd.

Met yum/dnf heb je hiet het downgrade commando voor, die naar de vorige versie gaat, of de versie die je opgegeven hebt.

Met flatpak kun je exact hetzelfde doen, alleen gebruiken we daar geen Epoch-Version-Release nummering zoals bij RPM pakketten, maar werken we met Git commit hashes voor de versie van het manifest.

OpenSource Logos

Praktisch elk Open Source project heeft wel een logo of een mascotte, maar sommige zijn bekender dan anderen, terwijl hun project of applicatie misschien wel heer erg bekend is.

In deze video laat Wander veertien verschillende logos zien, en jullie mogen raden van welk project ze zijn.

Installeer K3S en AWX met Ansible

Niet iedereen is gelukkig genoeg om het budget te hebben voor Ansible Automation Platform (AAP), en sommige mensen gebruiken liever een upstream open-source versie van een product dan de betaalde, ondersteunde, versie. Voor Ansible orkestratie kom je dan al snel uit op Ansible AWX.

Recente versies van AWX zijn alleen geschreven om op een Kubernetes platform te draaien, en uitgerold te worden via een operator. Nu kun je wel een dev versie met podman draaien, maar dat levert ook weer problemen op.

Hoe doe je dat dan als je geen (toegang tot) een Kubernetes cluster hebt? De minikube variant zoals beschreven in de AWX documentatie is alleen bedoelt voor test omgevingen, niet productie… Het antwoord kan zijn: “K3S”. Deze lichtgewicht Kubernetes implementatie is wel geschikt voor productie, en kan ook redelijk eenvoudig geïnstalleerd worden.

GUIs voor OpenShift en Kubernetes

De hardcore CLI fanaten onder ons zullen het niet willen geloven, maar er zijn echt mensen die de voorkeur geven aan een grafische omgeving waar ze in mogen klikken met een muis of een touchscreen voor hun beheer-werkzaamheden.

Als jij ook van die mensen kent, of er zelf eentje bent natuurlijk, dan ben je waarschijnlijk blij om te weten dat er meerdere applicaties zijn die je een grafische omgeving willen geven om je Kubernetes en/of OpenShift clusters te beheren.

Bash Process Substitution

De meeste mensen die met Bash werken zijn wel bekend met het fenomeen “Command Substitiuion”; Je zet in een commandline een commoando tussen $( en ), of tussen backticks `, en dat stuke van je commandline wordt vervangen door de output van dat commando.

Nu zijn er helaas situaties waar je die output in een (tijdelijk) bestand nodig hebt voor een ander commando, en je niet moeilijk wilt doen met het herschikken van file-descriptors of het zelf aanmaken van tijdelijke bestanden. In die gevallen kun je gebruik maken van “Process Substitution”, waarbij Bash zelf voor de tijdelijke bestanden zorgt in de vorm van named pipes.

OpenShift Network Observability Operator

OpenShift Network Observability Operator

In recente versies van OpenShift kun je de “Network Observability Operator” installeren om een beter inzicht te krijgen in de netwerk flows tussen de verschillende componenten/pods/services/etc op je cluster, als ook het netwerk verkeer dat je cluster verlaat.

Deze inzichten kunnen dan gebruikt worden voor verschillende zaken; Het doorberekenen van netwerk gebruik, optimalisatie van traffic-flow tussen de componenten van een micro service, of zelfs het detecteren van “ongebruikelijk” verkeer in een applicatie.

Organiseer je Leven met Logseq

Zo aan het begin van een nieuw jaar is voor veel mensen het uitgelezen moment om als onderdeel van de goede voornemens hun organistaie aan te pakken. Nu zijn er een heleboel tools die je hiermee proberen te helpen, van simpele todo items in Outlook, tot complexe notities in EverNote. Een nadeel is dat veel van deze tools closed-source zijn, en/of je data ergens in de wolken opslaan.

Gelukkig zijn er ook open-source oplossingen die wel om je privacy geven, en die vaak zelfs meer functionaliteit of configureerbaarheid (3x woordwaarde) hebben dan hun gesloten verwanten.

Kerst Puzzel 2023

Volgens goede HCS traditie hebben we ook dit jaar weer een leuke Kerst Puzzel voor jullie. In het verleden zijn we bezig geweest met puzzle hunts op Kubernetes, sudokus, japanse puzzels, quizzes, en meer. Dit jaar hebben we eer wat anders, en het is geweldig geworden: Onze eigen Vincent van Dam heeft een heus retro text-adventure voor jullie gemaakt!

In tegenstelling tot sommige andere text-adventures kun je niet “af”. Het is niet donker, je wordt niet opgegeten door een grue. Wel moet je met de goede mensen praten (een heuse sterrencast aan HCS-ers), de juiste voorwerpen gebruiken op de juiste plekken, een potje fußbal winnen, en het allebelangrijkste: Kerst Redden!

Blijf in Controle met Mission Center

In het verleden hebben we al vaker gekeken naar grafische systeem monitoring tools, maar er kan natuurlijk altijd meer bij.

Één van de meer recente toevoegingen aan het landschap is “Mission Center”, een tool die geïnspireerd lijkt door de standaard systeem mnonitoring view in nieuwere versies van Windows.

Een handige toevoeging van Mission Center is het ook kunnen bekijken van de load op verschillende delen van je videokaart(en), zoals de video encoding/decoding of het gebruik van de processors op je GPU.

Desktop in a Container

Af en toe kan het handig zijn om een volledige grafische desktop omgeving te draaien apart van je normale desktop. Bijvoorbeeld om een zwaar verouderde versie van een browser te gebruiken om tegen oude remote-management kaarten aan kunnen praten die vasthouden aan encryptie-standaarden die door moderne browsers als onveilig worden gezien, en dus niet meer gebruikt kunnen worden.

Hier zou je een virtuele machine voor kunnen gebruiken, maar het kan ook met minder overhead in een container.

Begrens je Gebruikers tot Containers

Als je een systeem hebt waar gebruikers van een afstand op mogen inloggen kan het handig zijn vanuit security of resource optiek om ze te beperken tot wat ze mogen doen. Hier zijn een aantal traditionele mogelijkheden voor, maar tegenwoordig kun je hun sessies ook beperken tot het draaien in een container. Dit heeft een aantal voordelen ten opzichte van traditionele methodes, zo komen bijvoorbeeld alle sessies uit in dezelfde container, en kan het verkrijgen van extra rechten permanent dichtgezet worden.

OpenShift Routes Beveiligen met cert-manager

Wanneer je bezig gaat met SSL certificaten op OpenShift kom je al snel uit bij cert-manager, een operator die certificaten kan laten (genereren en) ondertekenen door een aantal verschillende vormen van Certificate Authorities.

Een nadeel aan cert-manager is dat het niet automatisch certificaten kan genereren voor OpenShift Routes, maar wel voor reguliere Ingress objecten.

Supercronic: Crontabs Voor In Je Containers

Regelmatig terugkerende taken op een container paltform kun je op Kubernetes inregelen met een CronJob. Maar als je die taak elke minuut gaat uitvoeren levert dat misschien een belastingspatroon op op je cluster dat ongewenst is, helemaal als de taak veel resources als externe filesystemen nodig heeft.

Nu zou je natuurlijk een traditionele Cron daemon in een container kunnen draaien, maar dan kom je er al snel achter dat deze graag als root draaien, met setgid en setuid permissies, en dat vind een container platform als OpenShift weer minder grappig zonder dat je SecurityContextConstraints met veel rechten gaat uitdelen. Ook zul je een init systeem in je container moeten stoppen omdat anders mogelijke zombie processen niet goed opgeruimd worden, en voor je het weet ben je een half OS in je container aan het stoppen.

Ook als je je taken vaker dan eens per minuut wilt draaien, of als je specifieke scheduling wensen hebt zoals “elke derde dinsdag van September” voldoet een traditionele Cron daemon of een Kubernetes CronJob al snel niet meer.

Automagisch Ontgrendelen van Versleutelde Disken met TPM2

Volledige disk-encryptie op Linux systemen kan al jaren via het gebruik van Linux Unified Key Setup (LUKS). Dit zorgt ervoor dat er tijdens het opstarten van een systeem om een passphrase wordt gevraagd waarmee (een van) de encryptie-key(s) kan worden ontsleuteld, en de rest is transparant voor de eindgebruiker.

In sommige gevallen kan het handig zijn als het boot-proces niet wordt onderbroken, bijvoorbeeld bij het herstarten van servers op afstand. Om dit te bereiken kun je grijpen naar tools als clevis en tang, die de encryptie keys onder bepaalde voorwaarden via het netwerk kunnen vrijgeven, maar je zou ook gebruik kunnen maken van de Trusted Platform Module (TPM) op moderne hardware.

Is it Friday? — Cobol Edition

Een web-applicatie bouwen kun je tegenwoordig in een heleboel verschillende talen (en frameworks) doen. Als ontwikkelaar heb je de keuze uit zoveel verschillende opties dat je toolset kiezen al een eerste probleem om op te lossen kan zijn.

Dat probleem hebben we niet altijd gehad. Decennialang is de keuze voor een taal duidelijk geweest: Wetenschappelijke problemen in Fortran, Business-Applicaties in Cobol.

Ook tegenwoordig kom je nog op een hoop verschillende plekken Cobol applicaties tegen, vaak in de back-end of de batch-verwerking bij grotere administratieve partijen.

#HCS #SudoFriday #Cobol #webapp #httpd #cgi #isitfriday

Cockpit Zonder Cockpit

Je kunt al jaren lang je Linux systemen via een webbrowser managen met Cockpit, een handige tool die een aantal beheerszaken flink eenvoudiger maakt. Maar tot nu toe heb je altijd twee dingen nodig gehad: Een systeem met de Cockpit Webserver (cockpit-ws) geïnstalleerd om naar toe te verbinden met je browser, en de cockit-bridge dienst geïnstalleerd op elk systeem dat je wilt managen.

BTRFS: Quotas

Op moderne Fedora systemen (en ook andere distributies) wordt standaard een filesysteem gebruikt dat momenteel niet in RHEL beschikbaar is: Btrfs.

Btrfs heeft een aantal leuke features die anders op een andere manier (bijvoorbeeld via Stratis en/of VDO) opgevangen moeten worden, zoals copy-on-write snapshots, transparante compressie, en sub-volumes.

BTRFS: Snapshots

Op moderne Fedora systemen (en ook andere distributies) wordt standaard een filesysteem gebruikt dat momenteel niet in RHEL beschikbaar is: Btrfs.

Btrfs heeft een aantal leuke features die anders op een andere manier (bijvoorbeeld via Stratis en/of VDO) opgevangen moeten worden, zoals copy-on-write snapshots, transparante compressie, en sub-volumes.

BTRFS: Subvolumes

Op moderne Fedora systemen (en ook andere distributies) wordt standaard een filesysteem gebruikt dat momenteel niet in RHEL beschikbaar is: Btrfs.

Btrfs heeft een aantal leuke features die anders op een andere manier (bijvoorbeeld via Stratis en/of VDO) opgevangen moeten worden, zoals copy-on-write snapshots, transparante compressie, en sub-volumes.

Portable Applicatie Packaging met Flatpak

Er zijn in de Linux wereld veel manieren om applicaties te packagen voor eindgebruikers. Deze methodes zijn grofweg op te delen in twee types; Het eerste type maakt geen onderscheid tussen Operating Systeem onderdelen en applicaties, denk bijvoorbeeld aan RPM of DPKG, en het tweede type houdt applicaties gescheiden van het onderliggende OS, zoals je ook kent van je mobiele telefoon.

In dat tweede type heb je ook weer een aantal smaken, AppImage, Snap, Flatpak, en meer.

OpenShift Mirroring: Platform en Operator Catalogs

Er zijn een hoop gevallen waarbij een OpenShift cluster vanuit technische- of veiligheidsredenen niet aan het internet verbonden mag of kan zijn. Nu geeft dit natuurlijk nogal wat problemen bij het installeren, upgraden, en gebruiken van zo’n cluster.

Nu heeft OpenShift de mogelijkheid om verzoeken voor images vanaf externe container registries om te leiden naar een registry van jouw keuze. Nu moet je alleen die registry nog vullen met de goede images, en dat zijn er nogal wat…

Snelle Dev Omgevingen met podman-compose

Tijdens het ontwikkelen van een applicatie kan het helpen om snel te kunnen itereren op builds en tests, zonder steeds naar een extern systeem te moeten pushen om je builds of images te testen. ook kan het nuttig zijn om lokale versies van externe servies, zoals databases, te draaien met test data.

Maar als je meerdere containers lokaal wilt orkestreren kan het soms uiputtend worden om al die losse containers te moeten blijven stoppen, starten, bijwerken, etc. In die gevallen zou het handig zijn als je al je builds, configs, en meer met een enkel configuratie bestand en een enkel commando kon beheren.

De Desktop van de Toekomst - Fedora Silverblue

Sinds een aantal jaren kun je naast de regulier Fedora Workstation (en de spins daarvan) ook een radicaal andere versie van een Fedora desktop installeren: Fedora Silverblue.

Op een Silverblue systeem heb je niet één root filesysteem, maar meerdere. Updates werken dan ook niet op je live systeem, maar als overlays op een upstream image. Applicaties installeer je als het even kan via Flatpak, maar je mag ook zelf RPM pakketten laten layeren bovenop het basis image.

Eindelijk van RHEL7 af? In-Place Upgrades met Leapp

De beste methode om naar een nieuwe major versie van Red Hat Enterprise Linux (RHEL) te migreren is met een schone installatie of een nieuw image. In een ideale wereld kun je dit zonder problemen met al je systemen doen, je custom software werkt gewoon, en al je machines zijn volledig met behulp van automation uitgerold en geconfigureerd. In de echte wereld heb je helaas echter altijd wel een paar machines die zoveel handwerk hebben gehad, of zo slecht gedocumenteerd zijn, dat dit niet mogelijk is.

Voor die gevallen is er sinds de release van RHEL8 wel een manier om in ieder geval je OS wel te kunnen upgraden naar een nieuwe versie, zonder een nieuwe installatie te moeten doen: Leapp

De Geheimen van fstab op RHEL9

Vroeger was mounten “makkelijk”, je zette wat instellingen op wat regels in /etc/fstab, draaide mount -a, en hoopte dat het na een reboot ook nog werkte. Echte dependencies voor geneste mounts waren er niet, en alle dingen die je systeem nodig hadden om te draaien zoals /proc en /sys stonden er ook in.

Nu is dit voor eenvoudige dingen genoeg, maar zodra je ook mounts gaat toevoegen die wat moeizamer zijn, zoals mounts die netwerk nodig hebben, of die een harde afhankelijkheid hebben op een al reeds draaiende service, werdt het “interessant”, en dan niet op een leuke manier.

Ook kon een kleine typfout in een secundaire mount het hele boot proces van een systeem tegenhouden, met alle outages en andere lol van dien.

Podman Containers als systemd Units - Nieuwe Heetheid met Quadlet

Podman Containers als systemd Units - Nieuwe Heetheid met Quadlet

In een vorige video hebben we al eens gekeken hoe je een systemd unit kan maken van een Podman container. De functionaliteit zoals daar beschreven werkt nog steeds, maar vanaf Podman 4.4 is er ook een makkelijkere methode met behulp van Quadlet.

Met de nieuwe manier kun je een systemd .container unit schrijven, die tijdens het opstarten van je systeem automagisch een .service unit genereert met de juiste instellingen.

HCS Paas Puzzel 2023

Zoals elk jaar organiseert HCS Company ook dit jaar weer een leuke puzzel met Pasen. Dit jaar is het een quiz met twaalf vragen. Elk goed antwoord op een vraag brengt je vanzelf bij de volgende vraag. Hoe goed ken jij HCS, Open-Source, Memes, en je eigen browser?

De puzzel zelf kun je hier vinden, als je alle vragen goed hebt kom je vanzelf uit bij de instructies voor het insturen van je antwoord.

Onder de goede inzendingen verloten we een prachtige rugtas van Red Hat gevuld met HCS goodies. Inzenden kan tot vrijdag 14 April 2023. Inzendingen ontvangen na die datum dingen helaas niet meer mee naar de prijzen.

Ansible-Builder onthuld: de geheime tool die het leven van elke DevOps Engineer zal veranderen!

Ansible is een geweldige tool, maar versie verschillen tussen jouw versie van Ansible en die van je collega kunnen voor vervelende problemen zorgen, bijvoorbeeld als je nieuwere functionaliteit probeert te gebruiken dan wat de versie van Ansible van je collega ondersteunt.

Dit probleem wordt alleen nog maar erger als je ook gaat kijken naar de verschillende versies van geïnstalleerde collections, modules, en python dependencies. Gooi daar een sausje van benodigde systeem-pakketten (RPM, DPKG, etc.) overheen, en je eindigt al snel met een “Op mijn machine werkte het wel..” scenario.

Eerlijk zullen we alles delen?

De API servers op Kubernetes clusters (en dus ook OpenShift) zijn gelimiteerd op het aantal acties dat ze gelijktijdig uit willen voeren. Kom je hierboven, dan zegt de API server gewoon “NEE”.

Sinds Kubernetes 1.20 kun je daarentegen wel bepalen hoe belangrijk dingen zijn. Want: Alle API requests zijn gelijk, maar sommige API requests zijn gelijker dan anderen. Wel is het natuurlijk noodzakelijk dat we wel alle soorten requests worden afgehandeld, we moeten wel eerlijk blijven…

Virtueel Kaal Ijzer met Sushy Tools

Virtueel Kaal Ijzer met Sushy Tools

In sommige gevallen kan het handig zijn om een virtuele machine te kunnen behandelen alsof het BareMetal is. Denk bijvoorbeeld aan het testen van provisioning scripts met Ansible, of aan het ontwikkelen van automation rondom OpenShift installaties.

In het verleden kon je dit bijvoorbeeld doen met VirtualBMC, maar met een paar beperkingen:

  • Iedere VM had een eigen netwerk poort nodig, en moest apart geconfigureerd worden
  • Beperkt tot het IPMI protocol (dus geen upload van virtuele media)

Tegenwoordig kun je ook sushy-emulator gebruiken van het sushy-tools project. Deze spreekt geen IPMI, maar RedFish, een modernere standaard waar je bijvoorbeeld wel virtuele media mee kunt laden. Ook heb je maar een enkele instantie nodig per hypervisor, die automatisch alle draaiende LibVirt machines ontdekt en beschikbaar maakt.

Type-Hinting in Python

Sinds python 3.5 kun je in je python code gebruik maken van “Type Hints”, een manier om aan je IDE/Linter/etc. kenbaar te maken welke type je verwacht als functie parameters, en wat voor een type je teruggeeft als functie/methode.

De python runtime doet niks met deze types, maar je ontwikkel omgeving kan deze hints gebruiken om je te helpen (mogelijke) problemen op te sporen voordat ze voor ellende zorgen.

In deze video laat Wander een simpel voorbeeld zien met behulp van Codium, de volledig Open Source versie van VSCode.

Multi-Tenant Policies op OpenShift met Kyverno

In een Multi-Tenant OpenShift (of standaard Kubernetes) omgeving wil je als beheerder je eindgebruikers soms de vrijheid geven om zelf Project(Requests)s of Namespaces aan te maken, maar wwel binnen vastomlijnde naamgevings protocollen. In het verleden hebben we al eens gekeken hoe je dit met OPA Gatekeeper kunt doen, en hoe je zelf een Validating of Mutating Admission Webhook kunt maken. Dit keer kijken we hoe je dit met Kyverno kunt doen.

HA Databases op OpenShift

In veel gevallen wil je voor je databases bij je Cloud Native applicaties een externe database gebruiken, of iets op een groot database cluster in je datacenter, of iets gemanaged door je cloud provider. Maar er zijn ook veel gevallen waarin je zelf meer controle wilt over de databases, of waar het extern afnemen niet kan of niet handig is. In die gevallen kun je zelf je databases hosten in je Kubernetes/OpenShift cluster.

Kerst Puzzel 2022 - De Oplossing

Zoals ondertussen traditie is hadden we ook afgelopen kest weer een puzzel voor jullie. In deze video laat Wander zien hoe je deze had kunnen oplossen, en welke rode haringen we verstopt hadden in deze puzzel.

Wil je de puzzel zelf proberen zonder eerst naar de oplossing te kijken? Spelen kan nog steeds hier, maar de inzendtermijn is helaas wel al verstreken.

Modulaire .bashrc

Sinds RHEL9 heeft de standaard .bashrc voor nieuwe gebruikers een trucje geleerd: Het laden van bestanden uit de ~/.bashrc.d directory.

Hiermee is het mogelijk om geen custom monolithisch .bashrc bestand meer bij te houden, met alle nare neveneffecten van dien wanneer je gaat automatiseren, maar om over te stappen op een modulair systeem, waarbij je gewoonweg de goede bestanden voor de gewenste functionaliteit kopieert naar de juiste systemen.

Grafana Dashboards voor OpenShift User Workload Monitoring

Als je op OpenShift User Workload Monitoring hebt aangezet kunnen ontwikkelaars wel custom metrics laten ophalen en opslaan, en ze uitvragen via de OpenShift Web Console, maar complexere dashboards zijn (nog) niet in de console mogelijk.

Gelukkig is het wel mogelijk om via de community Grafana Operator deze metrics ook uit te vragen, en via dashboards inzichtelijk te maken. Wel loop je dan tegen het probleem aan dat als je dit via de reguliere instantie van Thanos Querier wilt doen het een alles-of-niks spel wordt: Of je hebt geen toegang tot metrics, of je mag bij alle metrics van het cluster en alle applicaties.

Ook dat laatste probleem kan opgelost, door de speciale tenancy poort van Thanos Querier te gebruiken, waarbij je per query metrics voor één namespace tegelijk mag opvragen, mits je rechten hebt op die namespace.

Custom Metrics op OpenShift

In OpenShift is een monitoring stack aanwezig, gebaseerd op Prometheus, die standaard al erg veel rijk metrics verzamelt over allerlei onderdelen van je platform. Zo kunnen applicatie-teams hier al standaard van alles in over vinden over het geheugen-, CPU-, disk-, en netwerk-gebruik van hun applicaties.

Wanneer een team hun applicatie wil verrijken met custom metrics dan kan dat ook, maar hier moeten wel zowel aan de platform kant als aan de applicatieve kant een aantal dingen voor gedaan worden.

MetalLB op OpenShift

Om verkeer van buiten een Kubernetes/OpenShift cluster in te krijgen heb je waarschijnlijk een LoadBalancer nodig, om bijvoorbeeld je Ingress te ontsluiten, of om services rechtstreeks aan te bieden.

Wanneer je in een cloud omgeving draait biedt je provider waarschijnlijk loadbalancers aan die rechtstreeks door je cluster aangestuurd kunnen worden, maar wanneer je op Baremetal draait, of op LibVirt, of op VMWare, dan missen deze opties.

Hcs Openshift Install - Automated Clusters for the rest of Us

Het uitrollen (installeren, configureren, integreren) van een OpenShift cluster in een Enterprise omgeving kan een flinke uitdaging zijn. Bij HCS zijn we die uitdaging al vele malen en bij vele klanten aangegaan. Één van de tools die we daar bijna altijd bij gebruiken is onze eigen HCS OpenShift Installer, een set van playbooks die het uitrollen en configureren in een enterprise omgeving makkelijker, en consistenter, maakt.

Next-Level Awk

Veel beheerders gebruiken de tool/programmeertaal awk niet, of niet zo goed als ze zouden kunnen. Om daar verandering in te brengen laat Wander in deze video wat voorbeelden zien van een makkelijk te gebruiken functionaliteit die je scripts beter kan maken.

Next-Level Ansible: delegate_to en run_once

Zodra je Ansible playbooks wat interessanter worden kom je al snel op het punt waarbij je minimaal één van de volgende punten tegenkomt:

  • Je wilt een bepaalde taak maar één keer uitvoeren, dus niet op alle hosts
  • Je wilt een bepaalde taak op een andere host uitvoeren dan de host die het doelwit is van je play
  • Je wilt een aantal taken achter elkaar uitvoeren op één host, voordat het play doorgaat naar de volgende host.

Next-Level Ansible: Handlers

In veel gevallen is het nuttig om in je Ansible playbooks bepaalde acties te laten afhangen van het wel of niet iets gewijzigd hebben in een vorige stap. Zo kun je bijvoorbeeld het laten herstarten van een Web server laten afhangen van het gewijzigd zijn van een configuratie.

CLI Security

Bij het werken op de command (CLI) is het soms iets te makkelijk om vertrouwelijke te lekken. Dit kan zijn via gevoelige informatie op de commandline zelf, die ook nog eens in je history kan worden opgeslagen, of zelfs via het simpelweg bestaan van een proces van een bepaalde gebruiker.