Manuelles Bereitstellen einer Java-Anwendung mit Open Liberty/WebSphere Liberty in Azure Red Hat OpenShift Clustern
Dieser Artikel enthält schrittweise Anleitungen zum Ausführen von Open/WebSphere Liberty auf einem Azure Red Hat OpenShift-Cluster. Er führt Sie durch die Vorbereitung einer Liberty-Anwendung, das Erstellen des Docker-Images der Anwendung und das Ausführen der containerisierten Anwendung auf einem Azure Red Hat OpenShift-Cluster.
Insbesondere erfahren Sie, wie Sie die folgenden Aufgaben ausführen:
- Vorbereiten der Liberty-Anwendung
- Erstellen des Anwendungsimages
- Ausführen der containerisierten Anwendung auf einem Azure Red Hat OpenShift-Cluster mithilfe der GUI und der CLI
Eine mehr automatisierte Lösung, die Ihren Weg zum Azure Red Hat OpenShift-Cluster beschleunigt, finden Sie unter Bereitstellen von IBM WebSphere Liberty und Open Liberty auf Azure Red Hat OpenShift mithilfe des Azure Marketplace-Angebots.
Weitere Informationen zu Open Liberty finden Sie auf der Open Liberty-Projektseite. Weitere Informationen zu WebSphere Liberty finden Sie auf der WebSphere Liberty-Produktseite.
Dieser Artikel soll Ihnen helfen, schnell zur Bereitstellung zu gelangen. Bevor Sie in die Produktion gehen, sollten Sie Tuning Liberty erkunden.
Wenn Sie an Feedback oder daran interessiert sind, eng mit dem Entwicklungsteam, das die WebSphere-Lösungen für Azure entwickelt, an Ihren Migrationsszenarien zu arbeiten, füllen Sie diese kurze Umfrage zur WebSphere-Migration aus und geben Sie Ihre Kontaktinformationen an. Das Team aus Programmmanagern, Architekten und Ingenieuren wird sich umgehend mit Ihnen in Verbindung setzen, um eine enge Zusammenarbeit zu initiieren.
Wichtig
Während Azure Red Hat OpenShift gemeinsam von Red Hat und Microsoft entwickelt, betrieben und unterstützt wird, um integrierten Support zu bieten, unterliegt die Software, die Sie auf Azure Red Hat OpenShift ausführen, einschließlich der in diesem Artikel beschriebenen Software, eigenen Support- und Lizenzbedingungen. Weitere Informationen zur Unterstützung von Azure Red Hat OpenShift finden Sie unter Support-Lebenszyklus für Azure Red Hat OpenShift 4. Weitere Informationen zum Support für die in diesem Artikel beschriebene Software finden Sie auf den Hauptseiten für diese Software, die im Artikel aufgeführt sind.
Hinweis
Für Azure Red Hat OpenShift sind mindestens 40 Kerne erforderlich, um einen OpenShift-Cluster zu erstellen und auszuführen. Das standardmäßige Azure-Ressourcenkontingent für ein neues Azure-Abonnement erfüllt diese Anforderung nicht. Weitere Informationen zum Anfordern einer Erhöhung des Ressourcenlimits finden Sie unter Standardkontingent: Erhöhen der Grenzwerte nach VM-Serie beschrieben. Beachten Sie, dass Ihr kostenloses Testabonnement nicht für eine Erhöhung des Kontingents qualifiziert ist. Bevor Sie eine Kontingenterhöhung anfordern, führen Sie zuerst ein Upgrade auf ein Abonnement mit nutzungsbasierter Bezahlung durch.
Voraussetzungen
Ein lokaler Computer mit installiertem Unix-ähnlichem Betriebssystem – z. B. Ubuntu, macOS oder Windows-Subsystem für Linux.
Eine Java Standard Edition (SE)-Implementierung, Version 17 oder höher – oder z. B Eclipse Open J9.
Maven, Version 3.9.8 oder höher.
Docker für Ihr Betriebssystem.
Azure CLI, Version 2.61.0 oder höher.
Ein Azure Red Hat OpenShift 4-Cluster. Befolgen Sie zum Erstellen des Clusters die Anweisungen unter Erstellen eines Azure Red Hat OpenShift 4-Clusters unter Berücksichtigung der folgenden Anweisungen:
Der Schritt „Abrufen eines Red Hat-Pull-Secrets“ wird zwar als optional bezeichnet, ist jedoch für diesen Artikel erforderlich. Das Pullgeheimnis ermöglicht Ihrem Azure Red Hat OpenShift-Cluster, den Open Liberty Operator zu finden.
Die folgenden Umgebungsvariablen, die in Erstellen eines Azure Red Hat OpenShift 4-Clusters definiert sind, werden weiter unten in diesem Artikel verwendet:
RESOURCEGROUP
– der Name der Ressourcengruppe, in der der Cluster bereitgestellt ist.CLUSTER
– der Name des Clusters.
Wenn Sie planen, arbeitsspeicherintensive Anwendungen im Cluster auszuführen, geben Sie die richtige Größe des virtuellen Computers für die Workerknoten mit dem
--worker-vm-size
-Parameter an. Weitere Informationen finden Sie in den folgenden Artikeln:
Stellen Sie eine Verbindung mit dem Cluster her, indem Sie die Schritte in Herstellen einer Verbindung mit einem Azure Red Hat OpenShift 4-Cluster durchführen.
- Befolgen Sie die Schritte unter „Installieren der OpenShift-CLI“, da Sie später den
oc
-Befehl ausführen werden. - Speichern Sie die Clusterkonsolen-URL an einem anderen Ort. Er sollte wie folgt aussehen:
https://console-openshift-console.apps.<random>.<region>.aroapp.io/
. - Notieren Sie sich die
kubeadmin
-Anmeldeinformationen. - Führen Sie die Schritte in „Herstellen von Verbindungen mithilfe der OpenShift-Befehlszeilenschnittstelle“ mit den
kubeadmin
-Anmeldeinformationen aus.
- Befolgen Sie die Schritte unter „Installieren der OpenShift-CLI“, da Sie später den
Installieren des Open Liberty OpenShift Operator
Nachdem Sie den Cluster erstellt und eine Verbindung zu ihm hergestellt haben, führen Sie die folgenden Schritte aus, um den Open Liberty Operator zu installieren. Die Hauptstartseite für den Open Liberty Operator befindet sich auf GitHub.
Melden Sie sich mit den
kubeadmin
-Anmeldeinformationen über Ihren Browser bei der OpenShift-Webkonsole an.Navigieren Sie zu Operatoren>OperatorHub, und suchen Sie nach Open Liberty.
Wählen Sie in den Suchergebnissen Open Liberty aus.
Wählen Sie Installieren aus.
Führen Sie auf der Seite Operator installieren die folgenden Schritte aus:
- Wählen Sie für Kanal aktualisieren den neuesten Kanal v1.3 aus.
- Wählen Sie für Installationsmodus die Option Alle Namespaces im Cluster (Standard).
- Wählen Sie für Aktualisierungsgenehmigung die Option Automatisch.
Klicken Sie auf Installieren, und warten Sie einige Minuten, bis die Installation abgeschlossen ist.
Prüfen Sie, ob der Open Liberty Operator erfolgreich installiert wurde und verwendet werden kann. Wenn dies nicht der Fall ist, diagnostizieren und beheben Sie das Problem, bevor Sie fortfahren.
Hinweis
Hier wird der Open Liberty Operator installiert, um Liberty-Anwendungen im Azure Red Hat OpenShift-Cluster zu verwalten. Wenn Sie den WebSphere Liberty Operator verwenden möchten, führen Sie die Schritte unter Installieren des WebSphere Liberty Operators aus, um den WebSphere Liberty Operator auf dem Cluster zu installieren.
Erstellen eines OpenShift-Namespace für die Java-App
Gehen Sie wie folgt vor, um einen OpenShift-Namespace für die Verwendung mit Ihrer App zu erstellen:
Melden Sie sich mit den
kubeadmin
-Anmeldeinformationen über Ihren Browser bei der OpenShift-Webkonsole an.Navigieren Sie zu Verwaltung>Namespaces>Namespace erstellen.
Tragen Sie
open-liberty-demo
für Name ein, und wählen Sie Erstellen aus, wie im Folgenden gezeigt.
Erstellen einer Instanz von Azure Database for MySQL Flexible Server
Das Bereitstellungsmodell „Azure Database for MySQL – Flexibler Server“ ist ein Bereitstellungsmodus, der mehr Kontrolle und Flexibilität bei der Datenbankverwaltung und den Konfigurationseinstellungen bietet als der Bereitstellungsmodus „Azure Database for MySQL – Einzelserver“. In diesem Abschnitt erfahren Sie, wie Sie eine Instanz von Azure Database for MySQL – Flexibler Server mithilfe der Azure CLI erstellen. Weitere Informationen finden Sie unter Schnellstart: Erstellen einer Instanz von Azure Database for MySQL – Flexibler Server mithilfe der Azure CLI.
Führen Sie in Ihrem Terminal den folgenden Befehl zum Erstellen einer Instanz von Azure Database for MySQL – Flexibler Server aus. Ersetzen Sie <server-admin-password>
durch ein Kennwort, das die Anforderungen an die Kennwortkomplexität für Azure Database für MySQL – Flexibler Server erfüllt.
az mysql flexible-server create \
--name ${CLUSTER} \
--resource-group ${RESOURCEGROUP} \
--admin-user admin${RESOURCEGROUP} \
--admin-password '<server-admin-password>' \
--database-name ${RESOURCEGROUP}db \
--public-access 0.0.0.0 \
--yes
Hinweis
Wenn Sie die Fehlermeldung Keine verfügbaren SKUs an diesem Speicherort erhalten, müssen Sie mit dem --location
-Parameter einen anderen Speicherort angeben und es erneut versuchen. Verwenden Sie den folgenden Befehl, um verfügbare SKUs an einem bestimmten Speicherort aufzulisten:
az mysql flexible-server list-skus --location <Location>
Suchen Sie einen Speicherort mit verfügbaren SKUs, und wiederholen Sie dann den vorherigen az mysql flexible-server create command
, fügen Sie jedoch den entsprechenden --location <Location>
-Parameter an, wobei alle anderen Parameter unverändert bleiben.
Es dauert einige Minuten, um den Server, die Datenbank, den Administratorbenutzer und die Firewallregel zu erstellen, die Verbindungen von allen Azure-Ressourcen akzeptiert. Wenn der Befehl erfolgreich ist, sieht die Ausgabe in etwa wie im folgenden Beispiel aus:
{
"connectionString": "mysql <database-name> --host <server-name>.mysql.database.azure.com --user <server-admin-username> --password=<server-admin-password>",
"databaseName": "<database-name>",
"firewallName": "AllowAllAzureServicesAndResourcesWithinAzureIps_2024-7-10_16-22-8",
"host": "<server-name>.mysql.database.azure.com",
"id": "/subscriptions/REDACTED/resourceGroups/<resource-group-of-the-OpenShift-cluster>/providers/Microsoft.DBforMySQL/flexibleServers/<server-name>",
"location": "West US",
"password": "<server-admin-password>",
"resourceGroup": "<resource-group-of-the-OpenShift-cluster>",
"skuname": "Standard_B1ms",
"username": "<server-admin-username>",
"version": "5.7"
}
Vorbereiten der Liberty-Anwendung
Wir verwenden in diesem Leitfaden eine Java EE 8-Anwendung. Da Open Liberty ein mit Java EE 8 Full Profile kompatibler Server ist, kann die Anwendung problemlos ausgeführt werden. Open Liberty ist auch mit Jakarta EE 8 Full Profile kompatibel.
Ausführen der Anwendung auf Open Liberty
Um die Anwendung auf Open Liberty auszuführen, müssen Sie eine Open Liberty-Serverkonfigurationsdatei erstellen, damit das Liberty Maven-Plug-In die Anwendung für die Bereitstellung verpacken kann. Das Liberty Maven-Plug-in ist nicht erforderlich, um die Anwendung in OpenShift bereitzustellen. Wir verwenden es jedoch in diesem Beispiel mit dem Entwicklermodus (dev) von Open Liberty. Im Entwicklermodus können Sie die Anwendung problemlos lokal ausführen. Weitere Informationen zu liberty-maven-plugin
finden Sie unter Erstellen einer Webanwendung mit Maven.
Führen Sie die Schritte in diesem Abschnitt aus, um die Beispielanwendung für die spätere Verwendung in diesem Artikel vorzubereiten. In diesen Schritten werden Maven und liberty-maven-plugin
verwendet.
Auschecken der Anwendung
Verwenden Sie die folgenden Befehle, um den Beispielcode für diesen Leitfaden zu klonen. Das Beispiel befindet sich auf GitHub.
git clone https://github.com/Azure-Samples/open-liberty-on-aro.git
cd open-liberty-on-aro
export BASE_DIR=$PWD
git checkout 20240920
cd ${BASE_DIR}/3-integration/connect-db/mysql
Wenn eine Meldung angezeigt wird, dass Sie sich im Status „detached HEAD“ befinden, können Sie diese Meldung problemlos ignorieren. Sie bedeutet nur, dass Sie ein Tag ausgecheckt haben.
Es gibt ein paar Beispiele im Repository. Wir verwenden open-liberty-on-aro/3-integration/connect-db/mysql. Hier ist die Dateistruktur der Anwendung:
open-liberty-on-aro/3-integration/connect-db/mysql
├─ src/main/
│ ├─ aro/
│ │ ├─ db-secret.yaml
│ │ ├─ openlibertyapplication.yaml
│ ├─ liberty/config/
│ │ ├─ server.xml
│ ├─ java/
│ ├─ resources/
│ ├─ webapp/
├─ Dockerfile
├─ Dockerfile-wlp
├─ pom.xml
Die Verzeichnisse java, resources und webapp enthalten den Quellcode der Beispielanwendung. Der Code deklariert und verwendet eine Datenquelle mit dem Namen jdbc/JavaEECafeDB
.
Wir haben im Verzeichnis aro zwei Bereitstellungsdateien platziert. db-secret.xml wird zum Erstellen von Secrets mit Anmeldeinformationen für die Datenbankverbindung verwendet. Die Datei openlibertyapplication.yaml wird zum Bereitstellen des Anwendungsimages genutzt.
Im Stammverzeichnis haben wir zwei Dockerfiles platziert. Dockerfile und Dockerfile-wlp werden für das lokale Debugging und zum Erstellen des Images für eine Azure Red Hat OpenShift-Bereitstellung verwendet, die mit Open Liberty bzw. WebSphere Liberty arbeitet.
Im Verzeichnis liberty/config wird server.xml zum Konfigurieren der Datenbankverbindung für den Open Liberty- und den WebSphere Liberty-Cluster verwendet.
Erstellen des Projekts
Führen Sie unter Verwendung der zuvor definierten Umgebungsvariablen die folgenden Befehle in Ihrem Terminal aus, um das Projekt zu erstellen. Die POM-Datei für das Projekt liest viele Eigenschaften aus der Umgebung.
cd ${BASE_DIR}/3-integration/connect-db/mysql
# The following variables are used for deployment file generation
export DB_SERVER_NAME=$CLUSTER.mysql.database.azure.com
export DB_PORT_NUMBER=3306
export DB_NAME=${RESOURCEGROUP}db
export DB_USER=admin${RESOURCEGROUP}
export DB_PASSWORD='<server-admin-password>'
export NAMESPACE=open-liberty-demo
mvn clean install
(Optional) Lokales Testen Ihres Projekts
Optional können Sie die Anwendung lokal ausführen, um zu überprüfen, ob sie wie erwartet funktioniert. Zunächst müssen Sie eine Firewallregel hinzufügen, die zulässt, dass Ihr lokaler Computer eine Verbindung mit der Instanz von Azure Database for MySQL – Flexibler Server herstellen kann. Führen Sie die folgenden Schritte aus, um die Firewallregel hinzuzufügen:
- Melden Sie sich beim Azure-Portal an, und navigieren Sie zur Instanz von Azure Database for MySQL – Flexibler Server, die Sie zuvor erstellt haben.
- Wählen Sie im linken Bereich Einstellungen>Networking.
- Wählen Sie Aktuelle IP-Adresse hinzufügen aus.
- Wählen Sie Speichern, und warten Sie, bis die Firewallregel hinzugefügt wurde.
Führen Sie die folgenden Schritte aus, um den liberty:devc
-Befehl zum lokalen Ausführen und Testen des Projekts und des Container-Images auszuführen, bevor Sie sich mit der Azure-Komplexität befassen. Weitere Informationen zu liberty:devc
finden Sie in der Dokumentation zum Liberty-Plug-In.
Starten Sie bei Bedarf Ihre lokale Docker-Umgebung. Die Anweisungen dazu variieren je nach Hostbetriebssystem.
Verwenden Sie die folgenden Befehle, um die Anwendung im
liberty:devc
-Modus zu starten:cd ${BASE_DIR}/3-integration/connect-db/mysql # If you are running with Open Liberty mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile # If you are running with WebSphere Liberty mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile-wlp
Überprüfen Sie, ob die Anwendung wie erwartet funktioniert. Bei erfolgreicher Ausführung sollte in der Befehlsausgabe eine ähnliche Meldung wie
[INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds.
angezeigt werden. Navigieren Sie in Ihrem Browser zuhttps://localhost:9443/
, und überprüfen Sie, ob auf die Anwendung zugegriffen werden kann und alle Funktionen funktionieren.Um den
liberty:devc
-Modus zu beenden, betätigen Sie Strg+C.
Vorbereiten des Anwendungsimages
Zum Bereitstellen und Ausführen Ihrer Liberty-Anwendung in einem Azure Red Hat OpenShift-Cluster müssen Sie Ihre Anwendung mit Open Liberty-Container-Images oder WebSphere Liberty-Container-Images als Docker-Image containerisieren.
Erstellen der Anwendung und Pushen in den Imagestream
Da Sie die App mit dem liberty:devc
-Befehl bereits erfolgreich im Liberty Docker-Container ausgeführt haben, erstellen Sie das Image remote auf dem Cluster, indem Sie die folgenden Schritte ausführen:
Stellen Sie sicher, dass Sie sich mit den
kubeadmin
-Anmeldeinformationen bei der OpenShift-CLI anmelden.Verwenden Sie die folgenden Befehle, um das Quellverzeichnis und das Dockerfile zu identifizieren:
cd ${BASE_DIR}/3-integration/connect-db/mysql # If you are building with the Open Liberty base image, the existing Dockerfile is ready for you # If you are building with the WebSphere Liberty base image, uncomment and execute the following two commands to rename Dockerfile-wlp to Dockerfile # mv Dockerfile Dockerfile.backup # mv Dockerfile-wlp Dockerfile
Verwenden Sie den folgenden Befehl, um das Projekt zu open-liberty-demo zu ändern:
oc project open-liberty-demo
Verwenden Sie den folgenden Befehl, um einen Bildstream zu erstellen:
oc create imagestream javaee-cafe-mysql
Verwenden Sie den folgenden Befehl, um eine Buildkonfiguration zu erstellen, die das Imagestreamtag der Buildausgabe angibt:
oc new-build --name javaee-cafe-mysql-config --binary --strategy docker --to javaee-cafe-mysql:v1
Benutzen Sie folgenden Befehl zum Starten des Builds, um lokale Inhalte hochzuladen, zu containerisieren und in das zuvor angegebene Imagestreamtag zu übertragen:
oc start-build javaee-cafe-mysql-config --from-dir . --follow
Bereitstellen der Anwendung auf dem Azure Red Hat OpenShift-Cluster
Jetzt können Sie die Liberty-Beispielanwendung für den Azure Red Hat OpenShift-Cluster bereitstellen, den Sie zuvor erstellt haben, als Sie die Voraussetzungen durchgearbeitet haben.
Bereitstellen der Anwendung über die Webkonsole
Da wir den Open Liberty Operator zum Verwalten von Liberty-Anwendungen verwenden, müssen wir eine Instanz der Custom Resource Definition des Typs OpenLibertyApplication
erstellen. Der Operator kümmert sich um alle Aspekte der Verwaltung der für die Bereitstellung erforderlichen OpenShift-Ressourcen. Gehen Sie zum Erstellen dieser Instanz wie folgt vor:
Melden Sie sich mit den
kubeadmin
-Anmeldeinformationen über Ihren Browser bei der OpenShift-Webkonsole an.Wählen Sie das Projekt aus, indem Sie Home>Projekte>open-liberty-demo besuchen.
Navigieren Sie zu Workloads>Geheimnisse.
Wählen Sie Erstellen> „Aus YAML“ aus.
Ersetzen Sie den generierten YAML-Code durch Ihren eigenen YAML-Code, der sich unter <path-to-repo>/3-integration/connect-db/mysql/target/db-secret.yaml befindet.
Klicken Sie auf Erstellen. Sie werden zurück auf die Seite mit den Secret-Details geleitet.
Navigieren Sie zu Operatoren>Installierte Operatoren.
In der Mitte der Seite sehen Sie Open Liberty.
Wählen Sie unter Bereitgestellte APIs die Option OpenLibertyApplication aus. Die Navigation von Elementen in der Benutzeroberfläche spiegelt die tatsächliche Eigenständigkeitshierarchie der verwendeten Technologien wider.
Wählen Sie OpenLibertyApplication erstellen aus.
Wählen Sie YAML-Ansicht unter Konfigurieren unter aus.
Ersetzen Sie den generierten YAML-Code durch Ihren eigenen YAML-Code, der sich unter <path-to-repo>/3-integration/connect-db/mysql/target/openlibertyapplication.yaml befindet.
Klicken Sie auf Erstellen. Sie kehren zur Liste der OpenLibertyApplications zurück.
Navigieren Sie zu Installierte Operatoren>>Open Liberty>OpenLibertyApplication.
Wählen Sie javaee-cafe-mysql aus.
Wählen Sie in der Mitte der Seite Ressourcen aus.
Wählen Sie in der Tabelle den Link für javaee-cafe-mysql mit dem Wert Route für Kind (Art) aus.
Wählen Sie auf der Seite, die geöffnet wird, den Link unter Speicherort aus.
Die Startseite der Anwendung wird im Browser geöffnet.
Löschen der Anwendung über die Webkonsole
Wenn Sie mit der Anwendung fertig sind, führen Sie die folgenden Schritte aus, um die Anwendung aus OpenShift zu löschen:
- Erweitern Sie im linken Navigationsbereich den Eintrag für Operatoren.
- Wählen Sie Installierte Operatoren aus.
- Wählen Sie Open Liberty aus.
- Wählen Sie in der Mitte der Seite OpenLibertyApplication aus.
- Wählen Sie für javaee-cafe-mysql die (drei vertikalen) Auslassungspunkte und dann OpenLibertyApplication löschen.
- Wählen Sie Löschen aus, um die Anwendung zu löschen.
Gehen Sie wie folgt vor, um das Secret aus Open Shift zu löschen:
- Navigieren Sie zu Workloads>Geheimnisse.
- Wählen Sie db-secret-mysql aus.
- Wählen Sie Aktionen>Secret löschen aus.
- Wählen Sie Löschen aus, um das Secret zu löschen.
Bereinigen von Ressourcen
Löschen Sie den Azure Red Hat OpenShift-Cluster mit den folgenden Schritten in Tutorial: Löschen eines Azure Red Hat OpenShift 4-Clusters. Stellen Sie sicher, dass auch die Datenbank und alle zugehörigen Ressourcen gelöscht werden.
Nächste Schritte
Weitere Informationen finden Sie über die in diesem Handbuch verwendeten Verweise:
- Open Liberty
- Azure Red Hat OpenShift
- Open Liberty Operator
- Open Liberty-Serverkonfiguration
- Liberty Maven-Plug-In
- Open Liberty-Containerimages
- WebSphere Liberty-Containerimages
Informationen zu Optionen zum Ausführen von WebSphere-Produkten auf Azure finden Sie unter Welche Lösungen gibt es zum Ausführen der WebSphere-Produktfamilie auf Azure?