Container sind eine vereinfachte Version des Benutzerraums des Linux-Betriebssystems – tatsächlich das „nackte“ Minimum. Dennoch handelt es sich um ein vollwertiges Betriebssystem, und daher ist die Qualität dieses Containers ebenso wichtig wie die eines vollwertigen Betriebssystems. Aus diesem Grund haben wir lange Zeit , damit Benutzer zertifizierte, moderne und aktuelle Container auf Unternehmensniveau erhalten können. Der Start RHEL auf Container-Hosts von RHEL gewährleistet Kompatibilität und Portabilität zwischen Umgebungen, ganz zu schweigen davon, dass es sich um bereits vertraute Werkzeuge handelt. Es gab jedoch ein Problem. Sie konnten ein solches Bild nicht einfach an jemand anderen weitergeben, selbst wenn es sich um einen Kunden oder Partner handelt, der Red Hat Enterprise Linux verwendet.

Doch jetzt hat sich alles geändert
Mit der Einführung des Red Hat Universal Base Image (UBI) können Benutzer nun die gewohnte Zuverlässigkeit, Sicherheit und hohe Leistung der offiziellen Red Hat Container-Images unabhängig davon genießen, ob eine Subscription besteht oder nicht. Das bedeutet, dass Sie eine containerisierte Anwendung auf UBI erstellen, in ein Container-Register Ihrer Wahl hochladen und mit der ganzen Welt teilen können. Red Hat Universal Base Image ermöglicht es, containerisierte Anwendungen in jeder Umgebung zu erstellen, zu teilen und zusammenzuarbeiten – wo immer Sie möchten.

Dank UBI können Sie Ihre Anwendungen praktisch in jeder Infrastruktur veröffentlichen und starten. Wenn Sie sie jedoch auf Red Hat-Plattformen wie Red Hat OpenShift und Red Hat Enterprise Linux ausführen, können Sie zusätzliche Vorteile erhalten (mehr Gold!). Und bevor wir zu einer detaillierteren Beschreibung von UBI übergehen, lassen Sie uns ein kurzes FAQ dazu geben, warum eine RHEL Subscription benötigt wird. Was passiert also, wenn Sie ein UBI-Image auf der RHEL/OpenShift-Plattform starten?

Und jetzt, da das Marketing zufrieden ist, sprechen wir näher über UBI
Gründe für die Verwendung von UBI
Was Sie fühlen sollten, um zu verstehen, dass UBI für Sie nützlich sein wird:
- Meine Entwickler wollen Container-Images verwenden, die in jeder Umgebung verteilt und ausgeführt werden können
- Mein Team Betrieb möchte ein unterstütztes Basis-Image mit einem Lebenszyklus auf Unternehmensebene
- Meine Architekten möchten anbieten meinen Kunden/Endbenutzern
- Meine Kunden möchten keinen Aufwand mit der Unterstützung auf Unternehmensebene für ihre gesamte Red Hat-Umgebung haben
- Mein Gemeinschaft möchte containerisierte Anwendungen buchstäblich überall teilen, starten und veröffentlichen
Wenn einer der Szenarien für Sie zutrifft, sollten Sie definitiv auf UBI achten.
Mehr als nur ein grundlegendes Image
UBI – weniger als ein vollständiges Betriebssystem, aber UBI hat drei wichtige Dinge:
- Set aus drei Basis-Images (ubi, ubi-minimal, ubi-init)
- Bilder mit bereits vorhandenen Laufzeitumgebungen für verschiedene Programmiersprachen (nodejs, ruby, python, php, perl usw.)
- Ein Satz von verbundenen Paketen im YUM-Repository mit den gebräuchlichsten Abhängigkeiten

UBI wurde als Grundlage für cloud-native und webbasierte Anwendungen entwickelt, die in Containern erstellt und bereitgestellt werden. Alle Inhalte in UBI sind ein Teilmenge von RHEL. Alle Pakete in UBI kommen über die RHEL-Kanäle und werden ähnlich wie RHEL auf unterstützten Red Hat-Plattformen wie OpenShift und RHEL gewartet.

Um qualitativ hochwertige Unterstützung für Container zu gewährleisten, sind erhebliche Anstrengungen von Ingenieuren, Sicherheitsspezialisten und anderen zusätzlichen Ressourcen erforderlich. Es ist nicht nur eine Testung der Basis-Images erforderlich, sondern auch eine Analyse ihres Verhaltens auf jedem unterstützten Host.
Um die Aufgaben im Zusammenhang mit Updates zu erleichtern, entwickelt Red Hat aktiv die Entwicklung und Unterstützung weiter, sodass UBI 7 beispielsweise auf RHEL 8-Hosts ausgeführt werden kann, während UBI 8 auf RHEL 7-Hosts laufen kann. Dies bietet den Benutzern die notwendige Flexibilität, Sicherheit und Ruhe im Prozess, beispielsweise bei der Aktualisierung von Plattformen in Container-Images oder verwendeten Hosts. Nun können all dies in zwei eigenständige Projekte unterteilt werden.
Drei Basis-Images

Minimal – bestimmt für Anwendungen mit allen Abhängigkeiten (Python, Node.js, .NET usw.)
- Minimale Menge an vorinstallierten Inhalten
- Keine ausführbaren Dateien mit suid
- Minimales Toolset für den Paketmanager (Installation, Aktualisierung und Entfernung)
Plattform – für alle Anwendungen, die auf RHEL ausgeführt werden
- Vereinheitlichter kryptografischer OpenSSL-Stack
- Vollständiger YUM-Stack
- Nützliche grundlegende OS-Dienstprogramme sind enthalten (tar, gzip, vi usw.)
Multi-Service – vereinfacht das Starten mehrerer Dienste in einem Container
- Für den Start von systemd beim Booten konfiguriert
- Möglichkeit, Dienste während des Build-Prozesses zu aktivieren
Container-Images mit bereits vorhandenen Laufzeitumgebungen für Programmiersprachen
Zusätzlich zu den Basis-Images, die die Unterstützung von Programmiersprachen ermöglichen, enthalten UBI vorgefertigte Images mit bereits vorhandenen Laufzeitumgebungen für eine Reihe von Programmiersprachen. Viele Entwickler können einfach ein Image nehmen und sofort mit der Arbeit an der Anwendung beginnen, die sie entwickeln.
Mit der Einführung von UBI bietet Red Hat zwei Image-Sets an – basierend auf RHEL 7 und basierend auf RHEL 8. Diese basieren jeweils auf Red Hat Software Collections (RHEL 7) und Application Streams (RHEL 8). Diese Laufzeitumgebungen werden auf dem neuesten Stand gehalten und erhalten standardmäßig bis zu vier Updates pro Jahr, sodass immer die Möglichkeit besteht, mit den aktuellsten und stabilsten Versionen zu arbeiten.
Hier ist eine Übersicht der UBI 7-Container-Images:

Hier ist eine Übersicht der UBI 8-Container-Images:

Assoziierte Pakete
Die Nutzung fertiger Images ist wirklich sehr praktisch. Red Hat hält sie aktuell und aktualisiert sie mit Neueinführungen von RHEL sowie bei kritischen CVE-Updates gemäß der Update-Politik. damit man eines dieser Images nehmen und sofort mit der Arbeit an der Anwendung beginnen kann.

Aber manchmal könnte es beim Erstellen einer Anwendung plötzlich erforderlich sein, ein zusätzliches Paket hinzuzufügen. Oder manchmal muss ein bestimmtes Paket aktualisiert werden, damit die Anwendung funktioniert. Aus diesem Grund werden UBI-Images mit einem Satz von RPMs geliefert, die über yum verfügbar sind und über ein schnelles und hochverfügbares Content Delivery Network bereitgestellt werden (holen Sie sich das Paket!). Wenn Sie zu einem kritischen Zeitpunkt im Release-Prozess ein yum-Update auf Ihrem CI/CD ausführen, können Sie sicher sein, dass es funktioniert.
RHEL ist die Grundlage
Wir hören nicht auf zu betonen, dass RHEL die Grundlage von allem ist. Wissen Sie, welche Teams bei Red Hat an der Erstellung der Basis-Images arbeiten? Zum Beispiel diese:
- Das Ingenieure-Team, das dafür verantwortlich ist, dass Basisbibliotheken wie glibc und OpenSSL sowie Laufzeitumgebungen für Sprachen wie Python und Ruby stabil arbeiten und zuverlässig mit Workloads in Containern umgehen.
- Die Gruppe zur Sicherstellung der Produktsicherheit kümmert sich um die zeitnahe Behebung von Fehlern und Sicherheitsproblemen in Bibliotheken und Programmiersprachen. Die Effizienz ihrer Arbeit wird durch einen speziellen Index bewertet. .
- Das Team aus Produktmanagern und Ingenieuren arbeitet an der Einführung neuer Funktionen und sorgt für einen langen Lebenszyklus des Produkts, was Vertrauen in die getätigten Investitionen schafft, die als Grundlage verwendet werden können.
Red Hat Enterprise Linux fungiert als hervorragender Host und Image für Container. Für viele Entwickler ist jedoch die Möglichkeit wichtig, mit dem System in verschiedenen Formaten zu arbeiten, von denen einige über die unterstützten Nutzungsszenarien des Linux-Systems hinausgehen. Hier kommen die universellen UBI-Images ins Spiel.
Nehmen wir an, Sie suchen gerade nach einem Basis-Image, um mit der Entwicklung einer einfachen containerisierten Anwendung zu beginnen. Oder Sie haben bereits einen Schritt in die Zukunft gemacht und wechseln von unabhängigen Containern, die auf einem Container-Engine laufen, zu einer cloud-nativen Lösung unter Verwendung von Operatoren (Building and certifying Operators), die auf OpenShift laufen. In jedem Fall bietet UBI eine hervorragende Grundlage dafür.

Container beinhalten eine abgespeckte Version des Benutzerraums des Betriebssystems in einem neuen Paketformat. Die Veröffentlichung von UBI-Images setzt einen neuen Branchenstandard für die containerisierte Entwicklung, wobei Unternehmenscontainer für alle Benutzer, unabhängige Softwareentwickler und Open-Source-Communities zugänglich werden. Insbesondere können Softwareentwickler ihre Produkte standardisieren, indem sie eine einheitliche, geprüfte Grundlage für alle ihre containerisierten Anwendungen verwenden, darunter . Entwicklungsunternehmen, die UBI verwenden, haben auch Zugang zu Red Hat Container Certification und Red Hat OpenShift Operator Certification, was es ihnen ermöglicht, Software, die auf Plattformen von Red Hat, wie OpenShift, läuft, kontinuierlich zu verifizieren.

Wie man mit dem Image zu arbeiten beginnt
Kurz gesagt – sehr einfach. Podman ist nicht nur in RHEL verfügbar, sondern auch in Fedora, CentOS und einer Reihe anderer Linux-Distributionen. Alles, was Sie tun müssen, ist, das Image aus einem der folgenden Repositories herunterzuladen und loszulegen.
Für UBI 8:
podman pull registry.access.redhat.com/ubi8/ubi
podman pull registry.access.redhat.com/ubi8/ubi-minimal
podman pull registry.access.redhat.com/ubi8/ubi-init
Für UBI 7:
podman pull registry.access.redhat.com/ubi7/ubi
podman pull registry.access.redhat.com/ubi7/ubi-minimal
podman pull registry.access.redhat.com/ubi7/ubi-init
Und schauen Sie sich den vollständigen Universal Base Image Guide an
Quelle: habr.com
