Ab Version 12.1C10 ist openFT für den Betrieb in einer eingeschränkten Umgebung, wie Openshift, vorbereitet. Aufgrund des fehlenden Zugriffs auf root nach dem Erzeugen des Docker-Images wird ein neuer Modus eingeführt, der als eingeschränkter Mehrbenutzermodus bezeichnet wird. Trotz des Namens ist er ähnlich wie der Einzelbenutzermodus. Der Hauptunterschied besteht darin, dass in diesem neuen Modus ein unprivilegierter Benutzer Instanzen erstellen darf. Der neue eingeschränkten Mehrbenutzermodus (limited multi user mode), aktiviert über das Kommando "ftsetmode -lm -ga=root:root", darf nur in einer containerbasierten Umgebung verwendet werden. Eine im Mehrbenutzermodus erstellte Instanz wird zum FT-Administrator und kann die üblichen Verwaltungsaufgaben ausführen.
Es ist erwähnenswert, dass die Instanz ohne systemd-Unterstützung erstellt wird, da systemd in einer containerisierten Umgebung nicht vorhanden ist und daher beim Erstellen, Installieren oder Aufrufen einiger Befehle entsprechende Warnungen erscheinen.
Ein beispielhaftes Dockerfile ist dem openFT-Paket im Docker/OpenShift-Speicherort beigefügt:
CD.ftv410.openFT12.1C10_F70.1_20201201.tgz
|-- docker
| |-- OpenShift
| | |-- Dockerfile
|-- install.ft
|-- openFT-12.1C10-410.x86_64.rpm
Das Dockerfile befindet sich im Verzeichnis docker/OpenShift und kann folgendermaßen aussehen:
Dockerdatei:
# Example docker file for OpenShift # Base system is Redhat8. FROM registry.access.redhat.com/ubi8/ubi # Install packages required RUN yum install openssl procps net-tools tar -y; yum clean all ENV PACKAGE_DIR /root/openFT_tmp # switch to temporary directory for openFT package handling RUN mkdir $PACKAGE_DIR WORKDIR $PACKAGE_DIR # Copy the openFT package the root dir. The desired package should be the only one in the # directory. COPY CD.ftv*.openFT*.tgz . # Untar the openFT package to the root dir. RUN tar -xvf CD.ftv*.openFT*.tgz # Install openFT. RUN rpm -i openFT-*.x86_64.rpm # set workdir back to root's home WORKDIR /root # cleanup temporary directory RUN rm -vfr $PACKAGE_DIR # Switch to hidden limited multi user mode available under openshift environment. RUN /opt/openFT/bin/ftbin/ftsetmode -lm -ga=root:root # Expose basic port used by openFT. EXPOSE 1100 # Set entry point to the exemplary start script. ENTRYPOINT "/opt/openFT/bin/ftbin/openft_init"
Im Beispiel wird das standardmäßige openft_init (in der rpm-Datei vorhanden) ausgeführt. Das openft_init-Skript kann ähnlich wie das folgende aussehen:
openft_init:
# Export path to the openFT binaries. export PATH=$PATH:/opt/openFT/bin # Extract ip address of eth0 interface. ip_addr=`ifconfig eth0 | grep "inet " | tr -s ' ' | cut -f3 -d ' '` # Create instance a new user, with eth0 ip address. ftcrei openft -addr=$ip_addr # Switch to created instance, to allow usage of openFT for new user. . ftseti openft # Start openFT service. ftstart # Start /sbin/init as and long time running process. exec /sbin/init
Der Zweck des Skripts ist es, eine eigene Instanz zu erstellen (die an die ipv4-Adresse der eth0-Schnittstelle auf Port 1100 gebunden wird) und den openFT-Dienst automatisch bei jedem Neustart des OpenShift-Containers zu starten. Im Beispiel wurde /sbin/init als lang laufender Prozess ausgewählt (Prozess, der im Falle eines Endes oder Absturzes den Neustart des Containers auslöst).
Mit der obigen Struktur kann man das Docker-Image erstellen, es auf den OpenShift-Cluster schieben und ausführen. Diese Schritte liegen außerhalb des Rahmens dieses Dokuments.
Zusätzliche Hinweise:
Falls andere Operationen durchgeführt werden müssen, die Root-Zugriff erfordern (wie die Installation von FTAM, FTP, JAVA oder anderen), muss das Dockerfile erweitert oder als Basis verwendet werden. Auch das Exportieren anderer erforderlicher Ports muss während der Image-Erstellung durchgeführt werden. Der Benutzer muss möglicherweise die Zugangsberechtigung der Dateiübertragung konfigurieren.
Im aktuellen openFT wurde die Verwendung von systemd eingeführt. Unter der Docker/Podman-Build-Umgebung ist systemd nicht verfügbar (unter Containern, die in der OpenShift-Umgebung laufen, ist das auch der Fall). Dies kann zu einigen Warnmeldungen während des Image-Erstellungsprozesses führen (und kann ignoriert werden).
Während des ftsetmode-Befehls wird ftstart aufgerufen, was unter podman-Build-Umgebung nicht funktioniert (es werden zusätzliche Meldungen ausgegeben). Dies ist kein Problem, wenn der Container danach funktioniert.