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.

Original image by Travis Wise, found via Wikimedia

Fun With Kustomize nameReference

In a previous post we looked at how to add extensions to the new Keycloak operator. In that article we used a ConfigMap to store those extensions. In the real world a PersistentVolumeClaim (PVC) would be a more realistic choice, especially for larger or more extensions.

In this post we will look at how to change out the ConfigMap for a PVC, and how to set up a Job that can fill that PVC with the content we want.

Adding Custom Extensions To The New (Quarkus) Keycloak Operator

In recent times the Keycloak Operator for OpenShift has moved from the old EAP based implementation to a new implementation based on Quarkus. At the same time the Custom Resource Definition for a Keycloak object has moved from apiVersion v1alpha1 to v2alpha1.

While on average this is a good move, and it brings many improvements, some functionality appears to have not made the transition yet, most notably the ability to easily add custom extensions and providers.

Since one of our customers encountered this and asked for our help we went and sought a solution to this, without having to resort to building custom images, as those would add an extra maintenance burden on an already busy team.

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.