Image Server

Work in Progress

Kubernetes benötigt für die Erstellung von Pods Images, die die Betriebsumgebung für einen Service enthalten. Man kann sich die Images zwar von irgendeinem öffentlich zugänglichen Server (z.B. Docker-Hub) holen, aber dort gibt es oft erhebliche Einschränkungen, oder es kostet einen Haufen Geld. Wie sicher die Images sind, weiß auch niemand...

Aus Sicherheitsgründen ist es daher empfehlenswert, selbst einen Imageserver für Kubernetes zu betreiben.

Gitlab

Gitlab bringt einen eigenen Image Registry Server mit. Dieser muss jedoch zunächst aktiviert werden. Die Gitlab Config Datei gitdata/config/gitlab.rb muss dazu wie folgt angepasst werden:

registry_external_url 'https://registry.ip6.li'
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "registry.gitlab.example.com"
gitlab_rails['registry_port'] = "5005"
gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"
registry['enable'] = true
registry_nginx['enable'] = true
registry_nginx['listen_port'] = 5050

Falls ein Reverse-Proxy vorgeschaltet ist, dann kann man den Port 5050 auch auf z.B. mit 443 nach außen sichtbar machen. Falls man ohnehin Gitlab verwendet, dann dieses Tool auch als Image Registry eine gute Wahl, zudem eine direkte Zuordnung zwischen Git Repository und Image Registry im GUI erfolgt.

Portus

Es handelt sich um eine Open Source Lösung von Suse. Ein einfachsten zieht man den Server mit Docker hoch, es gibt unter https://hub.docker.com/r/opensuse/portus/ ein offizielles Docker Image. Die Lösung hat noch etliche Bugs und unterstützt nur eine private Registry. Für den produktiven Einsatz ist Portus noch nicht zu empfehlen.

http://port.us.org/

https://github.com/SUSE/Portus

Harbor

Harbor ist eine All-In-One Lösung, die man am besten in einer Docker Umgebung installiert wird. Es gibt ein Installationsskript, das Harbor komplett aufbaut und startet. Vor der Installtion muss die Datei harbor.yml erstellet werden. Insgesamt wirkt diese Lösunge sehr ausgereift, es können private und public Repositories eingerichtet werden, weiterhin können auch externe Registries eingebunden werden. Aus Sicherheitsgründen sollte auch eine Vunarability Datenbank angebunden werden, Harbor bietet auch dafür eine Möglichkeit.

Sehr schön sind auch die Hilfestellungen für das Push Kommando, damit as Image auch im richtigen Project landet. Eine Build History gibt es auch.

Projectquay

Bei Projektquay handelt es sich um die Open Source Version des RedHat Produktes Quay. Als Backend wird eine Postgres Datenbank benötigt. Die aktuelle Produktpolitik von RedHat/IBM ist allerdings nicht ganz klar und sorgt gelegentlich für Überraschungen, wie man bei dem CentOS Thema gesehen hat.

Kraken

Kraken ist eine verteilte P2P Image Server Lösung und eignet sich daher für Imageserver, die eine extreme Skalierbarkeit erfordern. Als Backend kommen Object Storage Lösungen, wie z.B. S3 oder Ceph in Betracht. Kraken wurde von Uber entwickelt und ist dort auch nach deren Aussage seit ca. 2018 in Verwendung. Kraken ist in erster Linie für sehr große Registries mit hohen Anforderungen an die Redundanz geeignet.