C2026MM09: Breaking change: short image names niet meer toegestaan in OpenShift 4.21
Beste klant/collega, Hierbij kondigen we een belangrijke breaking change aan in OpenShift 4.21 / Kubernetes 1.34 / CRI-O 1.34, waar we over ongeveer 2 maanden naartoe upgraden. Vanaf deze versie zal het niet meer mogelijk zijn om short names te gebruiken voor images. In het geval dat er dan nog short names worden gebruikt zullen de betreffende containers een error als volgt geven: Back-off pulling image “nginx”: ErrImagePull: short name mode is enforcing, but image name nginx:latest returns ambiguous list
Wat verandert er ?
Het is nu mogelijk om in een container definitie naar een image te verwijzen door een short name te gebruiken.
spec:
containers:
- name: test
image: rhel7
In dit geval zal de image vanzelf worden ge-resolved naar: registry.access.redhat.com/rhel7:latest Dit kan onverwachte effecten geven indien een image met dezelfde naam in meerdere repositories aanwezig is. Dit is ook de voornaamste reden dat het niet meer zal worden toegestaan. Voordat we naar OpenShift 4.21 upgraden, zullen de bestaande container definities met short names dus moeten worden omgezet naar de volledige naam. We maken op dit moment gebruik van versie 4.19, en we verwachten in ongeveer 2 maanden naar versie 4.21 te upgraden. Het blijkt dat short names maar zeer beperkt gebruikt worden. Het gaat hooguit om enkele gevallen per afnemer.
Wat moet er worden aangepast ?
Een behulpzame query om een overzicht te krijgen van de gebruikte images per pod in een namespace is:
oc get pod -o custom-columns=NAME:.metadata.name,IMAGE_DEFINED:.spec.containers[*].image,IMAGE_USED:.status.containerStatuses[*].image
Dit geeft bijvoorbeeld de volgende output:
NAME IMAGE_DEFINED IMAGE_USED redis-0 redis:6-alpine docker.io/library/redis:6-alpine callforward-29601673-4nqcm registry.npohosting.nl/npohosting/base:latest registry.npohosting.nl/npohosting/base:latest
Bij de redis-0 pod is te zien dat er een short name is gebruikt onder IMAGE_DEFINED. Onder IMAGE_USED is te zien welke image daadwerkelijk wordt gebruikt. De image naam onder IMAGE_USED kan dan worden gebruikt om in in de image naam in de container te zetten. Voor de callforward pod is de naam onder IMAGE_DEFINED een volledige naam dus hier hoeft niets aan veranderd te worden. In het geval dat er meerdere containers in een pod aanwezig zijn zullen de images comma separated worden weergegeven onder IMAGE_DEFINED en IMAGE_USED. Wat zijn de vervolgstappen ? We zullen deze week voor de afnemers waarvan we zien dat er short names gebruikt worden hiervan een overzicht sturen met de namespaces / pods waarin ze voorkomen. Verder is het wenselijk om zelf te controleren of er nog short names worden gebruikt.
Communicatie
Voor vragen en opmerkingen is Hosting & Streaming bereikbaar via de reguliere kanalen: https://hosting.omroep.nl/contact. Namens Hosting & Streaming, Met vriendelijke groet, Maurice Mahieu