Automagischer Registry URL-Rewrite im OpenShift Cluster
In gewissen Umgebungen sind die externen Registries z.B. von Red Hat nicht direkt erreichbar. Es sind aber Pull-through Registries für diese intern verfügbar. Um uns das Leben zu vereinfachen, haben wir auf den Nodes im Cluster via MachineConfig einen automatischen URL-Rewrite konfiguriert.
Die Konfiguration
Um den URl-Rewrite zu konfigurieren, musst du auf den Nodes ein Config-File im TOML Format im Ordner /etc/containers/registries.conf.d/ mit folgendem Inhalt ablegen:
[[registries]]
prefix="registry.redhat.io"
location="int-pull-through-registry:9443"
[[registries]]
prefix="registry.access.redhat.com"
location="int-pull-through-registry:9444"
[[registries]]
prefix="registry.connect.redhat.com"
location="int-pull-through-registry:9445"
(Einschub: ich weiss zuwenig über dieses TOML Format. schaut irgendwie komisch aus, funktioniert aber)
OpenShift 4 verwendet die selben Libaries wie podman. Somit funktioniert die Konfiguration auch wenn du podman aufrufst und ist auch auf Fedora oder CentOS/RHEL 8 möglich.
Beispiel:
podman run --rm -ti registry.access.redhat.com/ubi8/ubi /bin/bash
Podman wird im Hintegrund dann int-pull-through-registry:9444/ubi8/ubi:latest abrufen.
Zum lokale Testen kannst du dir auch eine Registry erfinden, die dann auf eine existierende zeigt:
[[registries]]
prefix="meine-nicht-exsitierende-registry"
location="docker.io"
Verteilen im Cluster mit MachineConfig
Die Konfiguration kannst du im Cluster via MachineConfig Resource verteilen. Beispiele findest du in der OpenShift 4 Dokumentation: Using MachineConfig objects to configure nodes -> Configuring container image registry settings.
Auch gut zu wissen: jede Anpassung an einem MachineConfig Resource löst die Rekonfiguration der Nodes aus, was auch einen Reboot beinhaltet.