Bereitstellen einer Java-Anwendung mit Open Liberty oder WebSphere Liberty in einem Azure Kubernetes Service (AKS)-Cluster
Dieser Artikel demonstriert Folgendes:
- Führen Sie Ihre Java-, Java EE-, Jakarta EE- oder MicroProfile-Anwendung in der Open Liberty- oder IBM WebSphere Liberty-Runtime aus.
- Erstellen Sie das Docker-Image der Anwendung mit
az acr build
mithilfe von Open Liberty- oder WebSphere Liberty-Containerimages. - Stellen Sie die containerisierte Anwendung in einem AKS-Cluster (Azure Kubernetes Service) mit dem Open Liberty-Operator oder WebSphere Liberty-Operator bereit.
Der Open Liberty-Operator vereinfacht die Bereitstellung und Verwaltung von Anwendungen, die in Kubernetes-Clustern ausgeführt werden. Mit dem Open Liberty- oder WebSphere Liberty-Operator können Sie auch komplexere Vorgänge ausführen, wie z. B. das Sammeln von Ablaufverfolgungen und Sicherungskopien.
Dieser Artikel nutzt das Azure Marketplace-Angebot für Open Liberty oder WebSphere Liberty, um Ihre Umstellung auf AKS zu beschleunigen. Das Angebot stellt automatisch einige Azure-Ressourcen bereit, u. a.:
- Eine Azure Container Registry-Instanz
- Ein AKS-Cluster.
- Eine AGIC-Instanz (Application Gateway Ingress Controller, Application Gateway-Eingangsdatencontroller)
- Den Open Liberty-Operator und den WebSphere Liberty-Operator
- Optional ein Containerimage, das Liberty und Ihre Anwendung enthält
Wenn Sie eine manuelle Schritt-für-Schritt-Anleitung zum Ausführen von Liberty in AKS bevorzugen, finden Sie weitere Informationen unter Manuelles Bereitstellen einer Java-Anwendung mit Open Liberty oder WebSphere Liberty in einem Azure Kubernetes Service-Cluster (AKS).
Dieser Artikel soll Ihnen helfen, schnell zur Bereitstellung zu gelangen. Vor dem Wechsel in die Produktion sollten Sie sich die IBM-Dokumentation zur Optimierung von Liberty ansehen.
Wenn Sie an Feedback oder daran interessiert sind, eng mit dem Entwicklungsteam, das die WebSphere-Lösungen für Azure entwickelt, an Ihren Migrationsszenarios zu arbeiten, füllen Sie diese kurze Umfrage zur WebSphere-Migration aus, und geben Sie Ihre Kontaktinformationen an. Das Team aus Programmmanagern, Architekten und Technikern wird sich umgehend mit Ihnen in Verbindung setzen, um eine enge Zusammenarbeit zu initiieren.
Voraussetzungen
- Eine Azure-Subscription. Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.
- Bereiten Sie einen lokalen Computer mit installiertem UNIX-ähnlichem Betriebssystem vor, z. B. Ubuntu, Azure Linux, macOS oder Windows-Subsystem für Linux.
- Installieren Sie die Azure-Befehlszeilenschnittstelle zum Ausführen von Azure CLI-Befehlen.
- Melden Sie sich mit dem Befehl „
az login
“ bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Weitere Anmeldemöglichkeiten finden Sie unter Anmeldung bei Azure mit Azure CLI. - Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden und Verwalten von Erweiterungen mit der Azure CLI.
- Führen Sie
az version
aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sieaz upgrade
aus, um das Upgrade auf die aktuelle Version durchzuführen. Für diesen Artikel ist mindestens Version 2.61.0 der Azure CLI erforderlich.
- Melden Sie sich mit dem Befehl „
- Installieren Sie eine Java Standard Edition -Implementierung (SE), Version 17 (z. B . Eclipse Open J9).
- Installieren Sie Maven 3.9.8 oder höher.
- Stellen Sie sicher, dass Git installiert ist.
- Stellen Sie sicher, dass Ihnen im Abonnement entweder die
Owner
-Rolle oder dieContributor
- undUser Access Administrator
-Rolle zugewiesen wurde. Sie können dies überprüfen, indem Sie die Schritte unter Rollenzuweisungen für einen Benutzer oder eine Gruppe auflisten befolgen.
Die folgenden Schritte führen Sie zum Erstellen einer Liberty-Laufzeitumgebung in AKS
Die folgenden Schritte führen Sie zum Erstellen einer Liberty-Laufzeitumgebung in AKS. Nachdem Sie diese Schritte ausgeführt haben, verfügen Sie über eine Container Registry-Instanz und einen AKS-Cluster für die Bereitstellung Ihrer containerisierten Anwendung.
Öffnen Sie das Azure-Portal. Geben Sie im Suchfeld oben auf der Seite den Text WebSphere Liberty/Open Liberty auf Kubernetes ein. Wenn die Vorschläge angezeigt werden, wählen Sie die einzige Übereinstimmung im Abschnitt Marketplace aus.
Sie können auch direkt zum Angebot gehen.
Klicken Sie auf Erstellen.
Im Bereich Grundlagen:
- Eine neue Ressourcengruppe erstellen. Da Ressourcengruppen innerhalb eines Abonnements eindeutig sein müssen, wählen Sie einen eindeutigen Namen aus. Eine einfache Möglichkeit, eindeutige Namen zu erhalten, besteht darin, eine Kombination aus Ihren Initialen, dem heutigen Datum und einem Bezeichner zu verwenden, z. B.
ejb0913-java-liberty-project-rg
. Speichern Sie den Ressourcengruppennamen für die spätere Verwendung in diesem Artikel. - Wählen Sie unter Region eine Region in Ihrer Nähe aus. Wählen Sie z. B. USA, Osten 2 aus.
- Eine neue Ressourcengruppe erstellen. Da Ressourcengruppen innerhalb eines Abonnements eindeutig sein müssen, wählen Sie einen eindeutigen Namen aus. Eine einfache Möglichkeit, eindeutige Namen zu erhalten, besteht darin, eine Kombination aus Ihren Initialen, dem heutigen Datum und einem Bezeichner zu verwenden, z. B.
Wählen Sie Weiter aus. Im Bereich AKS können Sie optional einen vorhandenen AKS-Cluster und eine Container Registry-Instanz auswählen, anstatt die Bereitstellung zu veranlassen, neue zu erstellen. Mit dieser Auswahl können Sie das Sidecar-Muster nutzen, wie im Azure Architecture Center gezeigt. Sie können auch die Einstellungen für die Größe und Anzahl der virtuellen Computer im AKS-Knotenpool anpassen.
Behalten Sie für die Zwecke dieses Artikels einfach alle Standardwerte in diesem Bereich bei.
Wählen Sie Weiter aus. Wählen Sie im Bereich Lastenausgleich neben Mit Azure Application Gateway verbinden? die Option Ja aus. In diesem Bereich können Sie die folgenden Bereitstellungsoptionen anpassen:
Sie können die Werte für Virtuelles Netzwerk und Subnetz optional mit dem virtuellen Netzwerk und dem Subnetz anpassen, in dem die Bereitstellung die Ressourcen platziert. Bei den verbleibenden Werte müssen die Standardwerte nicht geändert werden.
Unter TLS/SSL-Zertifikat können Sie das TLS/SSL-Zertifikat von Azure Application Gateway angeben. Übernehmen Sie die Standardwerte, damit das Angebot ein selbstsigniertes Zertifikat generiert.
Gehen Sie nicht mit einem selbstsignierten Zertifikat in die Produktion. Weitere Informationen zu selbstsignierten Zertifikaten finden Sie unter Erstellen eines selbstsignierten öffentlichen Zertifikats zum Authentifizieren Ihrer Anwendung.
Sie können die Cookie-basierte Affinität aktivieren, auch bekannt als Sticky Sessions. In diesem Artikel werden persistente Sitzungen verwendet. Achten Sie daher darauf, diese Option auszuwählen.
Wählen Sie Weiter aus. In diesem Artikel werden im Bereich Operator und Anwendung alle Standardwerte verwendet. Sie können jedoch die folgenden Bereitstellungsoptionen anpassen:
- Sie können den WebSphere Liberty-Operator bereitstellen, indem Sie Ja für die Option IBM unterstützt? auswählen. Durch Belassen der Standardeinstellung Nein wird der Open Liberty Operator bereitgestellt.
- Sie können eine Anwendung für den ausgewählten Operator bereitstellen, indem Sie Ja für die Option Anwendung bereitstellen? auswählen. Wenn Sie die Standardeinstellung Nein belassen, wird keine Anwendung bereitgestellt.
Wählen Sie Überprüfen + erstellen, um Ihre ausgewählten Optionen zu bestätigen. Wenn im Bereich Überprüfen + erstellen nach dem Überprüfungsdurchlauf die Option Erstellen angezeigt wird, wählen Sie diese Option aus.
Die Bereitstellung kann bis zu 20 Minuten dauern. Während Sie auf den Abschluss der Bereitstellung warten, können Sie die Schritte im Abschnitt Erstellen einer Azure SQL-Datenbankinstanz ausführen. Kehren Sie nach dem Abschluss dieses Abschnitts hierher zurück, und fahren Sie fort.
Erfassen Sie ausgewählte Informationen aus der Bereitstellung
Wenn Sie den Bereich Bereitstellung wird durchgeführt verlassen haben, zeigen Ihnen die folgenden Schritte, wie Sie zu diesem Bereich zurückkehren. Wenn Sie sich noch in dem Bereich befinden, in dem Ihre Bereitstellung wurde abgeschlossen. angezeigt wird, wechseln Sie zur neu erstellten Ressourcengruppe, und fahren Sie mit dem dritten Schritt fort.
Wählen Sie in der Ecke einer beliebigen Portalseite die Menüschaltfläche und anschließend Ressourcengruppen aus.
Geben Sie in das Feld mit dem Text Nach einem beliebigen Feld filtern die ersten Buchstaben der zuvor erstellten Ressourcengruppe ein. Wenn Sie der empfohlenen Konvention gefolgt sind, geben Sie Ihre Initialen ein, und wählen Sie dann die entsprechende Ressourcengruppe aus.
Wählen Sie in der Liste der Ressourcen in der Ressourcengruppe die Ressource mit Containerregistrierung als Typ aus.
Wählen Sie im Navigationsbereich unter Einstellungen die Option Zugriffsschlüssel aus.
Speichern Sie die Werte für den Registrierungsnamen und den Anmeldeserver. Sie können auch neben den Feldern auf das Kopiersymbol klicken, um die Werte in die Systemzwischenablage zu kopieren.
Hinweis
In diesem Artikel wird der Befehl „
az acr build
“ verwendet, um das Docker-Image in der Containerregistrierung zu erstellen und zu übertragen ohne die Verwendung vonusername
undpassword
der Containerregistrierung. Es ist weiterhin möglich, Benutzernamen und Kennwort mitdocker login
unddocker push
zu verwenden. Die Verwendung von Benutzername und Kennwort ist weniger sicher als die kennwortlose Authentifizierung.Kehren Sie zurück zu der Ressourcengruppe, in der Sie die Ressourcen bereitgestellt haben.
Wählen Sie im Abschnitt Einstellungen die Option Bereitstellungen aus.
Wählen Sie die unterste Bereitstellung in der Liste aus. Der Wert für Bereitstellungsname entspricht der Herausgeber-ID des Angebots. Darin ist die Zeichenfolge
ibm
enthalten.Wählen Sie im Navigationsbereich Ausgaben aus.
Speichern Sie die Werte für die folgenden Ausgaben mit der gleichen Kopiertechnik, die Sie auch für die vorherigen Werte verwendet haben:
cmdToConnectToCluster
appDeploymentTemplateYaml
, wenn die Bereitstellung keine Anwendung enthält. Das heißt, Sie haben Nein für Anwendung bereitstellen? ausgewählt, als Sie das Marketplace-Angebot bereitgestellt haben. Für diesen Artikel wurde Nein ausgewählt. Wenn Sie jedoch Ja ausgewählt haben, speichern Sie den Wert vonappDeploymentYaml
, der die Anwendungsbereitstellung enthält.Fügen Sie den Wert von
appDeploymentTemplateYaml
oderappDeploymentYaml
in eine Bash-Shell ein, und führen Sie den Befehl aus.Die Ausgabe dieses Befehls ist die Anwendungsbereitstellung von YAML. Suchen Sie nach dem eingehenden TLS-Schlüssel mit dem Schlüsselwort „
secretName
“, z. B.- secretName: secret785e2c
. Speichern Sie den WertsecretName
.
Führen Sie die folgenden Befehle aus, um die Umgebungsvariablen festzulegen, die Sie in den vorherigen Schritten erfasst haben. Diese Umgebungsvariablen werden weiter unten in diesem Artikel verwendet.
export RESOURCE_GROUP_NAME=<your-resource-group-name>
export REGISTRY_NAME=<your-registry-nam-of-container-registry>
export LOGIN_SERVER=<your-login-server-of-container-registry>
export INGRESS_TLS_SECRET=<your-ingress-tls-secret-name>
Erstellen einer Azure SQL-Datenbankinstanz
In diesem Abschnitt erstellen Sie eine Einzeldatenbank in der Azure SQL-Datenbank für die Verwendung mit Ihrer App.
Legen Sie zunächst datenbankbezogene Umgebungsvariablen fest. Ersetzen Sie <your-unique-sql-server-name>
durch einen eindeutigen Namen für Ihren Azure SQL-Datenbankserver.
export SQL_SERVER_NAME=<your-unique-sql-server-name>
export DB_NAME=demodb
Führen Sie den folgenden Befehl in Ihrem Terminal aus, um eine einzelne Datenbank in der Azure SQL-Datenbank zu erstellen und den aktuellen angemeldeten Benutzer als Microsoft Entra-Administrator festzulegen. Weitere Informationen finden Sie unter Schnellstart: Erstellen einer Einzeldatenbank – Azure SQL-Datenbank.
export ENTRA_ADMIN_NAME=$(az account show --query user.name --output tsv)
az sql server create \
--name $SQL_SERVER_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--enable-ad-only-auth \
--external-admin-principal-type User \
--external-admin-name $ENTRA_ADMIN_NAME \
--external-admin-sid $(az ad signed-in-user show --query id --output tsv)
az sql db create \
--resource-group $RESOURCE_GROUP_NAME \
--server $SQL_SERVER_NAME \
--name $DB_NAME \
--edition GeneralPurpose \
--compute-model Serverless \
--family Gen5 \
--capacity 2
Fügen Sie dann die lokale IP-Adresse zu den Firewallregeln des Azure SQL-Datenbankservers hinzu, damit Ihr lokaler Computer später eine Verbindung mit der Datenbank herstellen kann.
export AZ_LOCAL_IP_ADDRESS=$(curl -s https://whatismyip.akamai.com)
az sql server firewall-rule create \
--resource-group $RESOURCE_GROUP_NAME \
--server $SQL_SERVER_NAME \
--name AllowLocalIP \
--start-ip-address $AZ_LOCAL_IP_ADDRESS \
--end-ip-address $AZ_LOCAL_IP_ADDRESS
Hinweis
In diesem Artikel wird die SQL-Authentifizierung deaktiviert, um bewährte Sicherheitsmethoden zu veranschaulichen. Microsoft Entra ID wird verwendet, um die Verbindung mit dem Server zu authentifizieren. Informationen zum Aktivieren der SQL-Authentifizierung finden Sie unter az sql server create
.
Erstellen einer Dienstverbindung in AKS mit Service Connector
In diesem Abschnitt erstellen Sie eine Dienstverbindung zwischen dem AKS-Cluster und der Azure SQL-Datenbank mithilfe von Microsoft Entra Workload ID mit Service Connector. Mit dieser Verbindung kann der AKS-Cluster ohne SQL-Authentifizierung auf die Azure SQL-Datenbank zugreifen.
Erteilen Sie zuerst dem zuvor bereitgestellten Anwendungsgateway Berechtigungen für den Azure Service Connector-Ressourcenanbieter. Dieser Schritt ist erforderlich, um erfolgreich eine Dienstverbindung zwischen dem AKS-Cluster und der Azure SQL-Datenbank zu erstellen.
- Wechseln Sie zum Azure-Portal, und navigieren Sie zu der Ressourcengruppe, die Sie zuvor erstellt haben.
- Wählen Sie in der Liste der Ressourcen in der Ressourcengruppe die Ressource mit Anwendungsgateway als Typ aus.
- Wählen Sie Zugriffssteuerung (IAM) aus. Erweitern Sie dann Hinzufügen, und wählen Sie Rollenzuweisung hinzufügen aus.
- Wählen Sie auf der Registerkarte Rolle die Option Privilegierte Administratorrollenaus. Wählen Sie dann Mitwirkender aus. Wählen Sie Weiter aus.
- Wählen Sie auf der Registerkarte Mitglieder die Option Mitglieder auswählen aus. Suchen Sie dann nach der App Azure Service Connector-Ressourcenanbieter. Wählen Sie die App und Auswählen aus. Wählen Sie Weiter aus.
- Wählen Sie Überprüfen + zuweisen. Warten Sie einige Sekunden, bis die Rollenzuweisung abgeschlossen ist.
Führen Sie dann die folgenden Befehle aus, um eine Verbindung zwischen dem AKS-Cluster und der SQL-Datenbank mithilfe von Microsoft Entra Workload ID mit Service Connector zu erstellen. Weitere Informationen finden Sie unter Erstellen einer Dienstverbindung in AKS mit Service Connector (Vorschau).
# Register the Service Connector and Kubernetes Configuration resource providers
az provider register --namespace Microsoft.ServiceLinker --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
# Install the Service Connector passwordless extension
az extension add --name serviceconnector-passwordless --upgrade --allow-preview true
# Retrieve the AKS cluster and Azure SQL Server resource IDs
export AKS_CLUSTER_RESOURCE_ID=$(az aks show \
--resource-group $RESOURCE_GROUP_NAME \
--name $CLUSTER_NAME \
--query id \
--output tsv)
export AZURE_SQL_SERVER_RESOURCE_ID=$(az sql server show \
--resource-group $RESOURCE_GROUP_NAME \
--name $SQL_SERVER_NAME \
--query id \
--output tsv)
# Create a user-assigned managed identity used for workload identity
export USER_ASSIGNED_IDENTITY_NAME=workload-identity-uami
az identity create \
--resource-group ${RESOURCE_GROUP_NAME} \
--name ${USER_ASSIGNED_IDENTITY_NAME}
# Retrieve the user-assigned managed identity resource ID
export UAMI_RESOURCE_ID=$(az identity show \
--resource-group ${RESOURCE_GROUP_NAME} \
--name ${USER_ASSIGNED_IDENTITY_NAME} \
--query id \
--output tsv)
# Create a service connection between your AKS cluster and your SQL database using Microsoft Entra Workload ID
az aks connection create sql \
--connection akssqlconn \
--client-type java \
--source-id $AKS_CLUSTER_RESOURCE_ID \
--target-id $AZURE_SQL_SERVER_RESOURCE_ID/databases/$DB_NAME \
--workload-identity $UAMI_RESOURCE_ID
Hinweis
Wir empfehlen die Verwendung von Microsoft Entra Workload ID für den sicheren Zugriff auf Ihre Azure SQL-Datenbank ohne SQL-Authentifizierung. Wenn Sie die SQL-Authentifizierung verwenden müssen, ignorieren Sie die vorherigen Schritte in diesem Abschnitt, und verwenden Sie den Benutzernamen und das Kennwort, um eine Verbindung mit der Azure SQL-Datenbank herzustellen.
Abrufen eines von Service Connector erstellten Dienstkontos und geheimen Schlüssels
Um sich bei der Azure SQL-Datenbank zu authentifizieren, müssen Sie das von Service Connector erstellte Dienstkonto und den geheimen Schlüssel abrufen. Folgen Sie den Anweisungen im Abschnitt Aktualisieren Ihres Containers im Tutorial: Verbinden einer AKS-App mit Azure SQL-Datenbank. Wählen Sie die Option Direkt eine Bereitstellung mithilfe des bereitgestellten YAML-Beispielcodeausschnitts erstellen aus, und führen Sie die folgenden Schritte aus:
Kopieren Sie aus den hervorgehobenen Abschnitten im Kubernetes-Bereitstellungs-YAML die Werte
serviceAccountName
undsecretRef.name
, wie im folgenden Beispiel gezeigt:serviceAccountName: <service-account-name> containers: - name: raw-linux envFrom: - secretRef: name: <secret-name>
Verwenden Sie die folgenden Befehle, um Umgebungsvariablen zu definieren. Ersetzen Sie
<service-account-name>
und<secret-name>
durch die Werte, die Sie im vorherigen Schritt kopiert haben.export SERVICE_ACCOUNT_NAME=<service-account-name> export SECRET_NAME=<secret-name>
Diese Werte werden im nächsten Abschnitt verwendet, um die Liberty-Anwendung im AKS-Cluster bereitzustellen.
Hinweis
Der geheime Schlüssel, der von Service Connector erstellt wurde, enthält AZURE_SQL_CONNECTIONSTRING
, eine kennwortlose Verbindungszeichenfolge für die Azure SQL-Datenbank. Weitere Informationen finden Sie im Beispielwert im Abschnitt Benutzerseitig zugewiesene verwaltete Identitätsauthentifizierung von Integrieren von Azure SQL-Datenbank in Service Connector.
Nachdem die Datenbank und der AKS-Cluster eingerichtet wurden, können Sie nun mit der Vorbereitung von AKS zum Hosten Ihrer Open Liberty-Anwendung fortfahren.
Konfigurieren und Bereitstellen der Beispielanwendung
Führen Sie die Schritte in diesem Abschnitt aus, um die Beispielanwendung in der Liberty-Laufzeit zu implementieren. In diesen Schritten wird Maven verwendet.
Auschecken der Anwendung
Klonen Sie den Beispielcode für diesen Artikel. Das Beispiel befindet sich auf GitHub.
Es gibt ein paar Beispiele im Repository. In diesem Artikel wird java-app verwendet. Führen Sie die folgenden Befehle aus, um das Beispiel abzurufen:
git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
export BASE_DIR=$PWD
git checkout 20241107
Wenn eine Meldung zum Zustand „getrennter HEAD“ angezeigt, können Sie sie problemlos ignorieren. Die Meldung bedeutet einfach, dass Sie ein Tag ausgecheckt haben.
Dies ist die Dateistruktur der Anwendung mit wichtigen Dateien und Verzeichnissen:
java-app
├─ src/main/
│ ├─ aks/
│ │ ├─ openlibertyapplication-agic-passwordless-db.yaml
│ ├─ docker/
│ │ ├─ Dockerfile
│ │ ├─ Dockerfile-wlp
│ ├─ liberty/config/
│ │ ├─ server.xml
│ ├─ java/
│ ├─ resources/
│ ├─ webapp/
├─ pom.xml
├─ pom-azure-identity.xml
Die Verzeichnisse java, resources und webapp enthalten den Quellcode der Beispielanwendung. Der Code deklariert und verwendet eine Datenquelle mit dem Namen jdbc/JavaEECafeDB
.
Im Verzeichnis aks wird die Datei openlibertyapplication-agic-passwordless-db.yaml verwendet, um das Anwendungsimage mit AGIC und kennwortloser Verbindung mit der Azure SQL-Datenbank bereitzustellen. In diesem Artikel wird davon ausgegangen, dass Sie diese Datei verwenden.
Im Docker-Verzeichnis gibt es zwei Dateien, um das Anwendungsimage entweder mit Open Liberty oder WebSphere Liberty zu erstellen.
Im Verzeichnis liberty/config wird die Datei server.xml verwendet, um die Datenbankverbindung für den Open Liberty- und WebSphere Liberty-Cluster zu konfigurieren. Sie definiert die Variable azure.sql.connectionstring
, die zum Herstellen einer Verbindung mit der Azure SQL-Datenbank verwendet wird.
Die Datei pom.xml ist die Maven Project Object Model (POM)-Datei, die die Konfigurationsinformationen für das Projekt enthält. Die Datei pom-azure-identity.xml deklariert eine Abhängigkeit von azure-identity
. Diese Datei wird verwendet, um sich bei Azure-Diensten mithilfe von Microsoft Entra ID zu authentifizieren.
Hinweis
In diesem Beispiel wird die azure-identity
-Bibliothek verwendet, um sich mithilfe der Microsoft Entra-Authentifizierung bei Azure SQL-Datenbank zu authentifizieren. Wenn Sie SQL-Authentifizierung in Ihrer Liberty-Anwendung verwenden müssen, lesen Sie Relationale Datenbankverbindungen mit JDBC.
Erstellen des Projekts
Nachdem Sie nun die erforderlichen Eigenschaften gesammelt haben, erstellen Sie die Anwendung. Die POM-Datei für das Projekt liest viele Variablen aus der Umgebung. Im Rahmen des Maven-Builds werden diese Variablen verwendet, um Werte in den YAML-Dateien in src/main/aks aufzufüllen. Sie können etwas Ähnliches für Ihre Anwendung außerhalb von Maven tun, wenn Sie möchten.
cd $BASE_DIR/java-app
# The following variables are used for deployment file generation into the target.
export LOGIN_SERVER=${LOGIN_SERVER}
export SC_SERVICE_ACCOUNT_NAME=${SERVICE_ACCOUNT_NAME}
export SC_SECRET_NAME=${SECRET_NAME}
export INGRESS_TLS_SECRET=${INGRESS_TLS_SECRET}
mvn clean install
mvn dependency:copy-dependencies -f pom-azure-identity.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resources
Lokales Testen Ihres Projekts
Sie können jetzt das Projekt lokal ausführen und testen, bevor Sie es in Azure bereitstellen. Der Einfachheit halber wird in diesem Artikel liberty-maven-plugin
verwendet. Weitere Informationen zu liberty-maven-plugin
finden Sie im Open Liberty-Artikel Erstellen einer Webanwendung mit Maven.
Hinweis
Wenn Sie eine „serverlose“ Datenbankbereitstellung ausgewählt haben, stellen Sie sicher, dass Ihre SQL-Datenbank nicht in den Modus „Angehalten“ gewechselt ist. Eine Möglichkeit hierzu besteht darin, sich wie in Schnellstart: Verwenden des Azure-Portal-Abfrageeditors (Vorschauversion) zur Abfrage der Azure SQL-Datenbank beschrieben, beim Datenbank-Abfrageeditor anzumelden.
Starten Sie die Anwendung mithilfe von
liberty:run
.cd $BASE_DIR/java-app # The value of environment variable AZURE_SQL_CONNECTIONSTRING is read by configuration variable `azure.sql.connectionstring` in server.xml export AZURE_SQL_CONNECTIONSTRING="jdbc:sqlserver://$SQL_SERVER_NAME.database.windows.net:1433;databaseName=$DB_NAME;authentication=ActiveDirectoryDefault" mvn liberty:run
Überprüfen Sie, ob die Anwendung wie erwartet funktioniert. In der Befehlsausgabe sollte eine Meldung wie „
[INFO] [AUDIT ] CWWKZ0001I: Application javaee-cafe started in 18.235 seconds.
“ angezeigt werden. Navigieren Sie in Ihrem Browser zuhttp://localhost:9080/
, und überprüfen Sie, ob auf die Anwendung zugegriffen werden kann und alle Funktionen funktionieren.Drücken Sie STRG+C, um zu beenden. Drücken Sie Y, wenn Sie aufgefordert werden, den Batchauftrag zu beenden.
Wenn Sie fertig sind, löschen Sie die Firewallregel, mit der Ihre lokale IP-Adresse auf die Azure SQL-Datenbank zugreifen kann, indem Sie den folgenden Befehl verwenden:
az sql server firewall-rule delete \
--resource-group $RESOURCE_GROUP_NAME \
--server $SQL_SERVER_NAME \
--name AllowLocalIP
Erstellen des Images für die AKS-Bereitstellung
Sie können nun den az acr build
-Befehl ausführen, um das Image, wie im folgenden Beispiel dargestellt, zu erstellen:
cd $BASE_DIR/java-app/target
az acr build \
--registry ${REGISTRY_NAME} \
--image javaee-cafe:v1 \
.
Mit dem Befehl „az acr build
“ werden die in der Dockerfile angegebenen Artefakte in die Containerregistrierungsinstanz hochgeladen, das Image erstellt und in der Containerregistrierungsinstanz gespeichert.
Stellen Sie die Anwendung im AKS-Cluster bereit.
Verwenden Sie die folgenden Schritte, um die Liberty-Anwendung im AKS-Cluster bereitzustellen:
Stellen Sie eine Verbindung mit dem ACS-Cluster her.
Fügen Sie den Wert von
cmdToConnectToCluster
in eine Shell ein, und führen Sie den Befehl aus.Wenden Sie die Bereitstellungsdatei an, indem Sie die folgenden Befehle ausführen:
cd $BASE_DIR/java-app/target # Apply deployment file kubectl apply -f openlibertyapplication-agic-passwordless-db.yaml
Warten Sie, bis alle Pods mit dem folgenden Befehl erfolgreich neu gestartet wurden:
kubectl get pods --watch
Eine Ausgabe wie die folgende Beispielausgabe gibt an, dass alle Pods ausgeführt werden:
NAME READY STATUS RESTARTS AGE javaee-cafe-cluster-agic-67cdc95bc-2j2gr 1/1 Running 0 29s javaee-cafe-cluster-agic-67cdc95bc-fgtt8 1/1 Running 0 29s javaee-cafe-cluster-agic-67cdc95bc-h47qm 1/1 Running 0 29s
Testen der Anwendung
Wenn die Pods ausgeführt werden, können Sie die Anwendung mithilfe der öffentlichen IP-Adresse der Application Gateway-Instanz testen.
Führen Sie den folgenden Befehl aus, um die öffentliche IP-Adresse der Application Gateway-Instanz, die von der von AGIC erstellten Eingangsressource verfügbar gemacht wird, abzurufen und anzuzeigen:
export APP_URL=https://$(kubectl get ingress | grep javaee-cafe-cluster-agic-ingress | cut -d " " -f14)/
echo $APP_URL
Kopieren Sie die URL, und öffnen Sie sie in Ihrem Browser, um die Startseite der Anwendung anzuzeigen. Wenn die Webseite nicht ordnungsgemäß gerendert wird oder der Fehler 502 Bad Gateway
zurückgegeben wird, wird die App weiterhin im Hintergrund gestartet. Warten Sie einige Minuten, und versuchen Sie es dann erneut.
Bereinigen von Ressourcen
Zum Vermeiden von Azure-Gebühren sollten Sie nicht benötigte Ressourcen bereinigen. Wenn der Cluster nicht mehr benötigt wird, entfernen Sie mit dem Befehl „az group delete
“ die Ressourcengruppe, den Containerdienst, die Containerregistrierung, die Datenbank und alle zugehörigen Ressourcen:
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Nächste Schritte
Weitere Informationen finden Sie in den folgenden Referenzen:
- Azure Kubernetes Service (AKS)
- Tutorial: Verbinden einer AKS-App mit Azure SQL-Datenbank (Vorschau)
- Integrieren von Azure SQL-Datenbank mit Service Connector
- Herstellen einer Verbindung mithilfe der Microsoft Entra-Authentifizierung
- Open Liberty
- Open Liberty Operator
- Open Liberty-Serverkonfiguration
- Liberty Maven-Plug-In
- Open Liberty-Containerimages
- WebSphere Liberty-Containerimages
Weitere Informationen zur Bereitstellung der IBM WebSphere-Familie in Azure finden Sie unter Welche Lösungen können die WebSphere-Produktfamilie auf Azure ausführen?.
Azure Kubernetes Service