Offline-Installation von Openshift mit Hilfe von orcharhino

Im letzten Jahr hat sich Kubernetes als Industriestandard für Containerplattformen herauskristallisiert. Mittlerweile gibt es einige auf Kubernetes basierende Plattformen, die mit einem eigenem Interface und vorkonfigurierten Diensten sowie Zusatzfeatures angeboten werden. Immer häufiger kommt beispielsweise die von Red Hat „Openshift“ getaufte Containerplattform zum Einsatz.

In vielen Unternehmen sind Entwicklungs- und Testumgebungen in eigene Netzwerke abgekapselt und somit gesichert. Dadurch ist weder ein Zugriff auf‘s noch vom Internet möglich. Schon die übliche Installation von Openshift ist etwas komplex. Mit dem Anspruch, die Umgebung offline aufzusetzen, erhöht sich die Komplexität noch einmal deutlich.

Wir haben‘s ausprobiert und zeigen, welche Dinge es bei der Offline Installation zu beachten gilt. Verwendet haben wir dazu Openshift mit dem entsprechenden Ansible-Installer und unserem Tool orcharhino:

Openshift ist eine Containerplattform von Red Hat, basierend auf Kubernetes. Davon existiert – wie bei Red Hat üblich – sowohl eine Enterprise-Variante mit einem Subskriptionsmodell (Openshift Enterprise) als auch eine Open-Source-Variante (Openshift Origin).

In Openshift Origin werden neue Features integriert und sobald diese stabil funktionieren in die Enterprise-Variante aufgenommen. Neben den üblichen Features einer Containerplattform wie die Mandatenfähigkeit, Hochverfügbarkeit, Orchestrierungstools sowie integrierten Diensten für Logging und Monitoring, bildet eine Ansammlung von Entwicklertools das besondere Feature von Openshift. Diese reicht von einem integrierten, containerisierten Jenkins über Webhooks für git-Repositories bis hin zu Openshifts Source-to-Image-Builds (S2I). Mit S2I können Entwickler ihren Code in einem git-Repository direkt an Openshift geben. Dafür können sie das entsprechende Entwicklungsframework verwenden. Geben sie dieses nicht an, entscheidet Openshift anhand der Dateiendungen, welches Framework genutzt wird.

Anschließend startet Openshift ein Basis-Image mit dem entsprechenden Framework. Im nächsten Schritt wird nun das Git-Verzeichnis geklont, die Anwendung gestartet und das daraus resultierende Container-Image in die integrierte Openshift-Registry gespeichert.

Das zweite verwendete Tool ist orcharhino, basierend auf Foreman und Katello (ähnlich wie Redhat Satellite 6). Damit können Repositories synchronisiert und als Mirror bereitgestellt werden. In diesem Fall werden sowohl yum-Repositories als auch Container-Images für die Installation von Openshift benötigt. Zusätzlich können Debian-Distributionen und SLES versorgt werden. Mit den entsprechenden Lifecycle-Environments und Content Views können die Versionsstände eingefroren und festgesetzt werden. Dadurch werden stabile Paketstände für den produktiven Betrieb bereitgestellt. Über entsprechend angebundene Hypervisor können direkt die benötigten Server aufgesetzt werden. Ebenso sind baremetal-Lösungen möglich. Anschließend können über die integrierten Configuration Management Tools alle Server direkt auf die Openshift-Installation vorbereitet werden.

Bei einer Offline-Installation muss gewährleistet sein, dass alle Repositories und Pakete verfügbar sind. Über orcharhino werden diese bereitgestellt. Neben den Paketen müssen auch die Container-Images synchronisiert werden. Diese sind nötig, wenn Openshift in der containerized-Variante installiert werden soll. Genauso ist das für entsprechende Dienste, die in Openshift nach der Installation laufen sollen, notwendig. Zu diesen Diensten gehört die Bereitstellung von Metriken, Verwaltung der Logs, einer Registry und des HAProxies für das Routing. 

Bei der Synchronisation von Container-Images mit orcharhino wird die Repostruktur verändert. Dadurch ändert sich die Namensgebung der Images. 

Aus:

registry.access.redhat.com/openshift3/ose-haproxy-router:v3.7.46

wird mit orcharhino :

orcharhino.atix.demo:5000/ATIX-production-openshift_content-container_images-ose-haproxy-router:v3.7.46

gemäß folgendem Schema:

<orcharhino-url>:5000/<organisation>-<lifecycle-environment>-<content-view>-<produktname>-<reponame>:<versionstag>

Die verwendeten Quellen der Images sowie ihre veränderte Repostruktur gilt es nun noch im Ansible-Inventory für die Offline-Installation zu berücksichtigen. Anschließend kann Openshift in einer Umgebung ohne direkten Internetzugriff aufgesetzt werden.

Dafür ist eine Verwendung von orcharhino als Registry notwendig. Für die Basis-Images kommen dann die folgenden Parameter für die Installation dazu:

openshift_docker_additional_registries=orcharhino.atix.demo:5000 
oreg_url=ATIX-production-openshift_content-container_images-ose-${component}:${version}

Dabei ist es möglich, Openshift über mehrere Netzwerke aufzuspannen. Beispielsweise können Test- und Entwicklungsumgebung getrennt sein, aber mit den gleichen Master-Servern verwaltet werden. Analog dazu können neue Umgebungen in eine bestehende Offline-Umgebung aufgenommen und Upgrades von bestehenden Installationen durchgeführt werden.

Dabei gilt: Je komplexer die Anforderungen, desto mehr muss beachtet werden. Die Grundzüge sind hier dargestellt – weitere Details sind stark davon abhängig, in welcher Umgebung und mit welchen Anforderungen die Containerplattform aufgesetzt wird.

Bei Fragen zum Blogbeitrag oder wenn Sie Unterstützung bei der Installation einer komplexen Openshift-Umgebung benötigen, können Sie sich jederzeit bei uns melden!

The following two tabs change content below.
Jonas Trüstedt

Jonas Trüstedt

Dr. Jonas Trüstedt berät Unternehmen bei der Automatisierung von Rechenzentren. Ein Schwerpunkt liegt auf Docker-Umgebungen mit den geeigneten Orchestrierungstools. Er ist als IT-Consultant bei der ATIX AG beschäftigt.
Jonas Trüstedt

Latest posts by Jonas Trüstedt (see all)