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

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.

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.

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.

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.

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.

Adore Gremlin, because we love to produce order

After meeting up with Gremlin at Kubecon I told myself; we should definitely take a closer look at the concept of Chaos Engineering. A field of which the name does not accurately reflect the meaning. After all, Chaos is subjective. According to the Cambridge Dictionary, the word Chaos means ‘a state of total confusion with no order.’ With Gremlin, you can run Chaos Engineering experiments against hosts, containers and more! To me, Gremlin  is an excellent tool to find your antidote to Chaos. Gremlin brings order and takes away confusion, nullifying Chaos. Picture yourself as a SRE in the following two situations:

Ansible en OpenShift - een krachtige combinatie voor deployment

Ansible en OpenShift zijn uitermate goed samen te gebruiken. In dit artikel zullen we kijken hoe we Ansible kunnen inzetten om een OpenShift cluster te beheren en applicaties uit te rollen op een OpenShift cluster. Traditioneel worden applicaties uitgerold vanuit OpenShift templates, Helm charts, pipelines en soortgelijke tools. In dit artikel zullen we de basis leggen voor het uitbreiden of vervangen van deze deployment methodes met Ansible.

Hoe migreer je van OpenShift 3 naar 4?

Nu OpenShift 4 alweer een tijdje uit is en ook steeds meer geschikt is geworden voor on-premise implementaties (naast de verschillende public clouds), komt steeds vaker de vraag hoe je van je bestaande OpenShift 3 installatie kunt overstappen naar 4. In dit blog nemen we de benodigde stappen met je door. 

Nieuwe features in Red Hat OpenShift 4.2

Sinds deze week is het officieel; Red Hat OpenShift 4.2 is  gereleased en voor het grote publiek beschikbaar. Waarschijnlijk kun je niet wachten om er mee aan de slag te gaan, maar wat is er nu precies nieuw? Als Red Hat Accelerator vind ik het altijd leuk om met de nieuwste technieken bezig te zijn en deze te onderzoeken. In dit blog neem ik jullie mee in een paar mooie nieuwe features die mij persoonlijk zijn opgevallen in OpenShift 4.2. 

Externe toegang in Kubernetes

De letterlijke vertaling van het Engelse woord Ingress is toegang. Binnen de wereld van containers (en dan specifiek Kubernetes) regelt dit API-object externe toegang tot services in het Kubernetes cluster. Ingress is daarbij de laag tussen die services en het externe netwerk (zoals Internet). Maar Ingress is ook op andere manieren te gebruiken: als load balancer bijvoorbeeld, of voor de terminatie van SSL-verkeer.

Runc and CVE-2019-5736

Kwetsbaarheid in runc gevonden, wat nu?!

Er is een fout gedetecteerd in runc waardoor een schadelijke container toegang op rootniveau op de hostcomputer kan krijgen.

Dit beveiligingslek raakt zowel de docker– als runc-pakketten die beschikbaar zijn op Red Hat Enterprise Linux 7, die worden geleverd via het kanaal Extra’s. OpenShift Container Platform (OCP) 3.x is afhankelijk van deze pakketten, afkomstig van Red Hat Enterprise Linux 7 Extras en wordt ook beïnvloed.

Container chaos

Moderne filosofie

Bij een moderne filosofie van softwarevoortbrenging en delivery hoort een andere kijk op hoe erg het is als iets niet helemaal verloopt zoals gepland. En eigenlijk is dat zelfs te ouderwets denken, want het veronderstelt dat er een planning is.