Gatekeeper mit Red Hat OpenShift oder Upstream-Kubernetes
Zusammenfassung: In diesem Wissensdatenbank-Artikel wird erläutert, wie Sie das Red Hat GitHub-Repository kubevirt-rawio-addon verwenden, um PowerMax Gatekeeper entweder in einer Red Hat OpenShift- oder einer Upstream-Kubernetes-Umgebung zu präsentieren. ...
Weisungen
PowerMax-Gatekeeper
PowerMax-Gatekeeper sind kleine Geräte (in der Regel drei MB), die von Festplatten im PowerMax erstellt werden und als SCSI-Ziele für Solutions Enabler-Befehle fungieren. Konfigurations- und Statusinformationen werden standardmäßig in einer PowerMax-Hostdatenbankdatei symapi_db.bin. Sie wird als PowerMax-Konfigurationsdatenbank bezeichnet. Dies reduziert die Anzahl der Anfragen vom Host an die Storage-Arrays. Gatekeeper müssen Raw-Geräte sein, damit das Betriebssystem die SCSI-Befehle einfach und ohne Manipulation übergibt. Während physische Hosts immer mit Gatekeepern (mit einem unterstützten Betriebssystem) arbeiten, sind virtuelle Hosts auf VMware mit physischen RDMs (Raw Device Mappings), In-Guest-iSCSI unter Windows oder Linux, In-Guest-NVMe/TCP unter Linux oder Passthrough-Geräten (NIC oder HBA) beschränkt. Nur VMware kann jedoch ein echtes Rohgerät präsentieren, das als praktikabler Gatekeeper erkannt wird. Andere Virtualisierungslösungen ermöglichen es dem Nutzer, Geräte als "roh" darzustellen, aber ihre Lösungen blockieren einige SCSI-Befehle und verhindern so ihre Verwendung als Gatekeeper. Solutions Enabler kennzeichnet sie als Gatekeeper, meldet aber einen Fehler wie unten.

Wenn Sie die Gatekeeper untersuchen, wird außerdem der Status "CLS" oder "closed" angezeigt.

Daher können Sie die erforderlichen SCSI-Befehle nicht übergeben.
Um diese Lösung nutzen zu können, müssen Sie ein Protokoll verwenden, das Solutions Enabler auf dem ausgewählten Betriebssystem unterstützt. Weitere Informationen finden Sie in der Produktdokumentation.
Red Hat GitHub-Lösung
Dell bat Red Hat um Unterstützung bei der Entwicklung eines Workarounds für Gatekeeper in einer OpenShift-Umgebung für einige unserer gemeinsamen Kunden. Zu diesem Zweck haben sie eine Lösung entwickelt, die sowohl für OpenShift als auch für Upstream-Kubernetes funktioniert, mit leichten Variationen in der Implementierung. Das GitHub-Repository heißt kubevirt-rawio-addon und befindet sich hier: https://github.com/openshift-cnv/kubevirt-rawio-addon Das GitHub enthält eine Readme-https://github.com/openshift-cnv/kubevirt-rawio-addon/blob/main/README.md.
Das Add-on installiert mehrere Komponenten:
- Ändern von Webhooks zum Ändern von Objekten im laufenden Betrieb
- Webhook wird validiert – eine OpenShift-spezifische Sicherheitsprüfung
- Sicherheitskonfiguration zum Zulassen privilegierter Funktionen
- Sidecar-Haken
Der Sidecar ist ein kleiner zusätzlicher Container, der neben dem VM-Pod ausgeführt wird und die Low-Level-Konfiguration der VM ändert, bevor er gestartet wird. Es fängt die von KubeVirt generierte VM-Konfiguration ab, sucht die annotierten Festplatten und legt rawio=yes fest. KubeVirt ruft dann den XML-Code zurück. Die zugrundeliegende libvirt/QEMU-Architektur unterstützt dies, stellt es aber nicht zur Verfügung, so dass diese geringfügige Anpassung erforderlich ist. Es ist möglich, dass KubeVirt dies in Zukunft verfügbar macht, dann wird der Workaround unnötig sein.
Implementierung auf OpenShift
Das Repository enthält alle Anweisungen für die Implementierung dieser Lösung. Da Red Hat Eigentümer der Lösung ist, empfiehlt Dell, die aktuellen Anweisungen zu befolgen, die sich in Zukunft ändern können. Dell aktualisiert den Wissensdatenbank-Artikel nicht, um diese Änderungen widerzuspiegeln. Der Höflichkeit halber stellen wir die folgenden grundlegenden Informationen zur Verfügung, empfehlen jedoch Nutzern dieses Wissensdatenbank-Artikels, diese zusammen mit dem Repository zu verwenden.
Wie bereits erwähnt, können Sie dies auf OpenShift oder Upstream-Kubernetes implementieren. Da die Schritte für OpenShift durchgeführt werden, gibt es einige Punkte, die bei Upstream-Kubernetes zu beachten sind.
- Wenn Sie auf Vanilla K8s implementieren, muss cert-manager installiert sein. Wenn der PowerMax CSI-Treiber installiert ist, ist dieser vorhanden
- Wenn Sie auf Vanilla K8s implementieren, benötigen Sie einen privilegierten Namespace. Sie können den Namespace in den Skripten verwenden oder einen eigenen erstellen und die Skripte dann ändern.
Die beiden Skripte, die Sie für die Implementierung benötigen, befinden sich im Hack-Ordner . Das rawio-setup.sh ist das erste Skript und ist für beide Plattformen identisch, aber beachten Sie, dass es auf dem openshift-cnv-Namespace basiert, der nur auf OpenShift vorhanden ist. Fügen Sie den Namespace hinzu oder erstellen Sie einen neuen und ändern Sie das Skript für K8s. Das VM-Erstellungsskript ist für die Plattform eindeutig, verwendet aber auch hier den openshift-cnv-Namespace. Bei OpenShift ist dies rawio-create-vm-openshift.sh. Die Skripte sind für die Erstellung einer Testumgebung konzipiert und müssen für eine Produktionseinrichtung geändert werden. Insbesondere erstellt das rawio-setup.sh Skript ein virtuelles SCSI-Gerät. Ändern Sie stattdessen das Skript so, dass es Ihre PowerMax-Storage-Klasse verwendet. Darüber hinaus geht das Skript von einem einzelnen Node für die Planung der VM aus. Ändern Sie ihn, damit er auf jedem Worker-Node ausgeführt werden kann. Das Skript verwendet ein vorinstalliertes Fedora-Betriebssystem.
Beispielskripte finden Sie unter Ergänzende Inhalte.
Grundlegende Schritte
- Klonen Sie das Repository: git clonehttps://github.com/openshift-cnv/kubevirt-rawio-addon.git
- Installieren Sie das Manifest: oc apply -fhttps://github.com/openshift-cnv/kubevirt-rawio-addon/releases/download/v0.1.0/rawio-addon-openshift.yaml
- Installieren Sie den Sidecar: oc annotate –overwrite -n openshift-cnv hco kubevirt-hyperconverged kubevirt.kubevirt.io/jsonpatch='[{"op": "add", "path": "/spec/configuration/developerConfiguration/featureGates/-", "value": "Beiwagen"}]'
- Führen Sie das Setup aus: rawio-setup.sh
- Erstellen Sie die VM: rawio-create-vm-openshift.sh
- Installieren Sie Ihr Betriebssystem (vorausgesetzt, Sie verwenden kein vorgefertigtes Betriebssystem)
Beachten Sie, dass die PowerMax-CSI kein Gerät erstellen kann, das kleiner als 50 MB ist, selbst wenn Sie einen herkömmlichen 3-MB-Gatekeeper anfordern. Es verursacht kein Problem.


Andere Virtualisierungslösungen
Keine der folgenden Lösungen funktioniert mit diesem Red Hat-Repository.
- K8s-basierte Lösungen wie SUSE Harvester – SUSE muss eigene Lösung entwickeln
- KVM-Lösungen wie Proxmox oder Oracle KVM (oVirt) - diese sind nicht KubeVirt-basiert und können nicht verwendet werden
Weitere Informationen
rawio-setup.sh
*******************************************
rawio-create-vm-openshift.sh