Manuelles Bereitstellen einer Java-Anwendung mit Open Liberty oder WebSphere Liberty in einem Azure Kubernetes Service-Cluster (AKS)
Dieser Artikel enthält eine schrittweise manuelle Anleitung zum Ausführen von Open/WebSphere Liberty auf Azure.
In diesem Artikel wird insbesondere erläutert, wie Sie die folgenden Aufgaben ausführen:
- Führen Sie Ihre Java-, Java EE-, Jakarta EE- oder MicroProfile-Anwendung in der Open Liberty- oder WebSphere Liberty-Runtime aus.
- Erstellen Sie das Docker-Image der Anwendung mit
az acr build
Liberty-Containerimages. - Stellen Sie die containerisierte Anwendung mithilfe des Liberty Operators in einem Azure Kubernetes Service-Cluster (AKS) bereit.
Der 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.
Eine stärker automatisierte Lösung, die Ihren Weg zu AKS beschleunigt, finden Sie unter Bereitstellen einer Java-Anwendung mit Open Liberty/WebSphere Liberty in einem Azure Kubernetes Service-Cluster (AKS).
Weitere Informationen zu Open Liberty finden Sie auf der Open Liberty-Projektseite. Weitere Informationen zu IBM 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 Technikern wird sich umgehend mit Ihnen in Verbindung setzen, um eine enge Zusammenarbeit zu initiieren.
Voraussetzungen
- Ein Azure-Abonnement. Wenn Sie kein Azure-Abonnement besitzen, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.
- Bereiten Sie einen lokalen Computer mit installiertem Windows, macOS oder Linux vor.
- Installieren Sie die Azure CLI 2.61.0 oder höher, um Azure CLI-Befehle auszuführen.
- 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. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der 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 Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
- Installieren Sie eine Java Standard Edition (SE)-Implementierung, Version 17 (z. B . Eclipse Open J9).
- Installieren Sie Maven Version 3.5.0 oder höher.
- Sicherstellen, 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 die Aufgabe überprüfen, indem Sie die Schritte in Auflisten von Azure-Rollenzuweisungen mithilfe des Azure-Portals befolgen.
Anmelden bei Azure
Falls noch nicht geschehen, melden Sie sich mit dem folgenden az login-Befehl bei Ihrem Azure-Abonnement an, und befolgen Sie die Anweisungen auf dem Bildschirm.
az login
Hinweis
Sie können die meisten Azure CLI-Befehle in PowerShell wie in Bash ausführen. Es gibt nur einen Unterschied bei der Verwendung von Variablen. In den folgenden Abschnitten wird bei Bedarf in verschiedenen Registerkarten auf die Unterschiede eingegangen.
Wenn Sie mehrere Azure-Mandanten mit Ihren Anmeldeinformationen verknüpft haben, müssen Sie angeben, bei welchem Mandanten Sie sich anmelden möchten. Sie können dies mit der Option --tenant
tun. Beispiel: az login --tenant contoso.onmicrosoft.com
.
Erstellen einer Ressourcengruppe
Eine Azure-Ressourcengruppe ist eine logische Gruppe, in der Azure-Ressourcen bereitgestellt und verwaltet werden.
Erstellen Sie eine Ressourcengruppe, die mithilfe des Befehls "az group create" am eastus2
Speicherort aufgerufen wirdjava-liberty-project
. Diese Ressourcengruppe wird später zum Erstellen der Azure Container Registry-Instanz und des AKS-Clusters verwendet.
export RESOURCE_GROUP_NAME=java-liberty-project
az group create --name $RESOURCE_GROUP_NAME --location eastus2
Erstellen einer Containerregistrierungsinstanz
Erstellen Sie mit dem Befehl az acr create die Container Registry-Instanz. Im folgenden Beispiel wird eine Containerregistrierungsinstanz mit dem Namen erstellt youruniqueacrname
. Stellen Sie sicher, dass youruniqueacrname
es in Azure eindeutig ist.
Hinweis
In diesem Artikel wird der empfohlene kennwortlose Authentifizierungsmechanismus für die Containerregistrierung verwendet. Es ist weiterhin möglich, Benutzernamen und Kennwort mit docker login
nach der Verwendung az acr credential show
zu verwenden, um den Benutzernamen und das Kennwort zu erhalten. Die Verwendung von Benutzername und Kennwort ist weniger sicher als die kennwortlose Authentifizierung.
export REGISTRY_NAME=youruniqueacrname
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--name $REGISTRY_NAME \
--sku Basic
Nach kurzer Zeit sollte eine JSON-Ausgabe angezeigt werden, die die folgenden Zeilen enthält:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "java-liberty-project",
Rufen Sie als Nächstes den Anmeldeserver für die Containerregistrierungsinstanz ab. Sie benötigen diesen Wert, wenn Sie das Anwendungsimage später im AKS-Cluster bereitstellen.
export LOGIN_SERVER=$(az acr show \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
Erstellen eines AKS-Clusters
Erstellen Sie mithilfe des Befehls az aks create einen AKS-Cluster. Im folgenden Beispiel wird ein Cluster mit einem Knoten erstellt myAKSCluster
. Es dauert mehrere Minuten, bis dieser Befehl abgeschlossen ist.
export CLUSTER_NAME=myAKSCluster
az aks create \
--resource-group $RESOURCE_GROUP_NAME \
--name $CLUSTER_NAME \
--node-count 1 \
--generate-ssh-keys \
--enable-managed-identity
Nach wenigen Minuten ist die Ausführung des Befehls abgeschlossen, und es werden Informationen zum Cluster im JSON-Format einschließlich der folgenden Ausgabe zurückgegeben:
"nodeResourceGroup": "MC_java-liberty-project_myAKSCluster_eastus2",
"privateFqdn": null,
"provisioningState": "Succeeded",
"resourceGroup": "java-liberty-project",
Anfügen der Containerregistrierungsinstanz an den AKS-Cluster
Führen Sie den Befehl "az aks update" aus, um die Containerregistrierungsinstanz an den AKS-Cluster anzufügen, damit der AKS-Cluster authentifiziert wird, um Bilder aus der Containerregistrierungsinstanz abzurufen, wie im folgenden Beispiel gezeigt:
az aks update \
--resource-group $RESOURCE_GROUP_NAME \
--name $CLUSTER_NAME \
--attach-acr $REGISTRY_NAME
Herstellen einer Verbindung mit dem AKS-Cluster
Verwenden Sie zum Verwalten eines Kubernetes-Clusters den Kubernetes-Befehlszeilenclient kubectl. Verwenden Sie zum lokalen Installieren von kubectl
den Befehl az aks install-cli, wie im folgenden Beispiel gezeigt:
az aks install-cli
Mit dem Befehl az aks get-credentials können Sie kubectl
für die Verbindungsherstellung mit Ihrem Kubernetes-Cluster konfigurieren. Mit diesem Befehl werden die Anmeldeinformationen heruntergeladen, und die Kubernetes-Befehlszeilenschnittstelle wird für deren Verwendung konfiguriert.
az aks get-credentials \
--resource-group $RESOURCE_GROUP_NAME \
--name $CLUSTER_NAME \
--overwrite-existing \
--admin
Hinweis
Der obige Befehl verwendet den Standardspeicherort für die Kubernetes-Konfigurationsdatei, d. h. ~/.kube/config
. Sie können einen anderen Speichert für Ihre Kubernetes-Konfigurationsdatei mithilfe von --file
angeben.
Überprüfen Sie die Verbindung mit Ihrem Cluster mithilfe des Befehls kubectl get, um eine Liste der Clusterknoten zurückzugeben.
kubectl get nodes
Die folgende Beispielausgabe zeigt den in den vorherigen Schritten erstellten Knoten. Vergewissern Sie sich, dass der Knoten den Status Bereit hat:
NAME STATUS ROLES AGE VERSION
aks-nodepool1-xxxxxxxx-yyyyyyyyyy Ready <none> 76s v1.29.9
Erstellen einer Azure-SQL-Datenbank
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 sie <your-unique-sql-server-name>
durch einen eindeutigen Namen für Ihren Azure SQL-Datenbank-Server.
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 Azure SQL-Datenbank zu erstellen und den aktuellen angemeldeten Benutzer als Microsoft Entra-Administrator festzulegen. Weitere Informationen finden Sie in der Schnellstartanleitung: Erstellen einer einzelnen Datenbank – Azure SQL-Datenbank.
export ENTRA_ADMIN_NAME=$(az ad signed-in-user show --query userPrincipalName --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 Azure SQL-Datenbank Serverfirewallregeln 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
Sie erstellen einen Azure SQL-Server mit deaktivierter SQL-Authentifizierung für Sicherheitsaspekte. Nur Microsoft Entra-ID wird verwendet, um sich beim Server zu authentifizieren. Wenn Sie die SQL-Authentifizierung aktivieren müssen, lesen Sie az sql server create for more information.
Erstellen einer Dienstverbindung in AKS mit Service Connector
Führen Sie die folgenden Befehle aus, um eine Verbindung zwischen dem AKS-Cluster und der SQL-Datenbank mithilfe der 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
Es wird erneut verwendet, microsoft Entra Workload ID für den sicheren Zugriff auf Ihre Azure SQL-Datenbank zu verwenden, ohne DIE SQL-Authentifizierung zu verwenden. Wenn Sie die SQL-Authentifizierung verwenden müssen, ignorieren Sie die obigen Schritte in diesem Abschnitt, und verwenden Sie den Benutzernamen und das Kennwort, um eine Verbindung mit dem Azure SQL-Datenbank herzustellen.
Abrufen von Servcie-Konto und geheimen Schlüsseln, die von Service Connector erstellt wurden
Um sich beim Azure SQL-Datenbank zu authentifizieren, müssen Sie das Dienstkonto und den geheimen Schlüssel abrufen, der von Service Connector erstellt wurde. Folgen Sie dem Abschnitt " Aktualisieren Ihres Containers". Führen Sie die Option "Direkt erstellen" eine Bereitstellung mithilfe des bereitgestellten YAML-Beispielcodeausschnitts aus, und führen Sie die folgenden Schritte aus:
Kopieren Sie aus den hervorgehobenen Abschnitten in der Kubernetes-Bereitstellung YAML, wie im folgenden Beispiel gezeigt, die
serviceAccountName
wertesecretRef.name
:serviceAccountName: <service-account-name> containers: - name: raw-linux envFrom: - secretRef: name: <secret-name>
<secret-name>
Ersetzen Sie<service-account-name>
die werte, die Sie im vorherigen Schritt kopiert haben, um die folgenden Umgebungsvariablen zu definieren: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 das AZURE_SQL_CONNECTIONSTRING
kennwortfreie Verbindungszeichenfolge zum Azure SQL-Datenbank. Weitere Informationen finden Sie im Beispielwert der vom Benutzer zugewiesenen verwalteten Identitätsauthentifizierung .
Installieren von Open Liberty Operator
In diesem Abschnitt installieren Sie den Open Liberty Operator auf dem AKS-Cluster, um die Liberty-Anwendung zu hosten.
Installieren Sie den Open Liberty Operator durch Ausführen der folgenden Befehle:
# Install cert-manager Operator
CERT_MANAGER_VERSION=v1.11.2
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.yaml
# Install Open Liberty Operator
export OPERATOR_VERSION=1.4.0
mkdir -p overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/olo-all-namespaces.yaml -q -P ./overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/cluster-roles.yaml -q -P ./overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/kustomization.yaml -q -P ./overlays/watch-all-namespaces
mkdir base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/kustomization.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-crd.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-operator.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-roles.yaml -q -P ./base
kubectl create namespace open-liberty
kubectl apply --server-side -k overlays/watch-all-namespaces
Konfigurieren und Erstellen des Anwendungsimages
Zum Bereitstellen und Ausführen Ihrer Liberty-Anwendung im AKS-Cluster müssen Sie Ihre Anwendung mit Open Liberty-Containerimages oder WebSphere Liberty-Containerimages als Docker-Image containerisieren.
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 Leitfaden. Das Beispiel befindet sich auf GitHub. Es gibt ein paar Beispiele im Repository. In diesem Artikel wird das java-app
Beispiel verwendet. Die wichtigen Dateien werden als Nächstes angezeigt.
git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
export BASE_DIR=$PWD
git checkout 20241029
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.
java-app
├─ src/main/
│ ├─ aks/
│ │ ├─ openlibertyapplication-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 aks-Verzeichnis wird die Datei openlibertyapplication-passwordless-db.yaml verwendet, um das Anwendungsimage bereitzustellen. Im Docker-Verzeichnis gibt es zwei Dateien, um das Anwendungsimage entweder mit Open Liberty oder WebSphere Liberty zu erstellen.
Im Verzeichnis liberty/config wird server.xml zum Konfigurieren der Datenbankverbindung für den Open Liberty- und den WebSphere Liberty-Cluster verwendet. Sie definiert eine Variableazure.sql.connectionstring
, die zum Herstellen einer Verbindung mit dem Azure SQL-Datenbank verwendet wird.
Die datei pom.xml ist die Datei maven project object model (POM), die die Konfigurationsinformationen für das Projekt enthält. Die pom-azure-identity.xml Datei deklariert azure-identity
Abhängigkeiten, die zur Authentifizierung bei Azure-Diensten mithilfe der Microsoft Entra-ID verwendet werden.
Hinweis
In diesem Beispiel wird azure-identity
die Bibliothek verwendet, um sich bei Azure SQL-Datenbank mithilfe der Microsoft Entra-Authentifizierung zu authentifizieren, die für Sicherheitsaspekte empfohlen wird. Wenn Sie die SQL-Authentifizierung in Ihrer Liberty-Anwendung verwenden müssen, finden Sie weitere Informationen unter relationale Datenbankverbindungen mit SHAPES .
Erstellen des Projekts
Nachdem Sie nun die erforderlichen Eigenschaften gesammelt haben, können Sie die Anwendung erstellen. 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 target/
export LOGIN_SERVER=${LOGIN_SERVER}
export SC_SERVICE_ACCOUNT_NAME=${SERVICE_ACCOUNT_NAME}
export SC_SECRET_NAME=${SECRET_NAME}
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. Verwenden Sie der Einfachheit halber liberty-maven-plugin
. Weitere Informationen zu liberty-maven-plugin
finden Sie unter Erstellen einer Webanwendung mit Maven. Für Ihre Anwendung können Sie ähnliche Aktionen mit jedem anderen Mechanismus ausführen, z. B. Ihrer lokalen IDE. Sie können auch die Option liberty:devc
für die Entwicklung mit Containern in Betracht ziehen. Weitere Informationen zu liberty:devc
finden Sie in der Liberty-Dokumentation.
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. 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 zuhttp://localhost:9080/
, um zu überprüfen, ob auf die Anwendung zugegriffen werden kann und alle Funktionen funktionieren.Drücken Sie STRG+C, um zu beenden. Wählen Sie aus
Y
, ob Sie zum Beenden des Batchauftrags gekst sind.
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 jetzt den Az acr-Buildbefehl ausführen, um das Image zu erstellen, wie im folgenden Beispiel gezeigt:
cd $BASE_DIR/java-app/target
az acr build \
--registry ${REGISTRY_NAME} \
--image javaee-cafe:v1 \
.
Mit az acr build
dem Befehl werden die in der Dockerfile-Datei 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:
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-passwordless-db.yaml
Ermitteln Sie, ob die
OpenLibertyApplication
-Instanz erstellt wird, indem Sie den folgenden Befehl ausführen:kubectl get openlibertyapplication javaee-cafe-cluster
Die Ausgabe sollte etwa folgendem Beispiel entsprechen:
NAME IMAGE EXPOSED RECONCILED RESOURCESREADY READY WARNING AGE javaee-cafe-cluster jiangma102924acr.azurecr.io/javaee-cafe:v1 True True True 57s
Stellen Sie fest, ob die vom Operator erstellte Bereitstellung bereit ist, indem Sie den folgenden Befehl ausführen:
kubectl get deployment javaee-cafe-cluster --watch
Die Ausgabe sollte etwa folgendem Beispiel entsprechen:
NAME READY UP-TO-DATE AVAILABLE AGE javaee-cafe-cluster 0/3 3 0 20s
Warten Sie, bis Ihnen
3/3
unter der SpalteREADY
und3
unter der SpalteAVAILABLE
angezeigt werden, verwenden Sie dann Strg+C, um den Überwachungsprozesskubectl
zu beenden.
Testen der Anwendung
Wenn die Anwendung ausgeführt wird, macht ein Kubernetes-Lastenausgleichsdienst das Anwendungs-Front-End im Internet verfügbar. Es kann eine Weile dauern, bis dieser Vorgang abgeschlossen ist.
Um den Fortschritt zu überwachen, verwenden Sie das Argument kubectl get service mit dem --watch
-Argument, wie im folgenden Beispiel gezeigt:
kubectl get service javaee-cafe-cluster --watch
Die Ausgabe sollte etwa folgendem Beispiel entsprechen:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
javaee-cafe-cluster LoadBalancer 10.0.251.169 52.152.189.57 80:31732/TCP 68s
Nachdem die EXTERNAL-IP-Adresse von Ausstehend in die tatsächliche öffentliche IP-Adresse geändert wurde, verwenden Sie Strg+C, um den Überwachungsprozess kubectl
zu beenden.
Wenn zwischen der Ausführung der Schritte in diesem Abschnitt und dem vorhergehenden einige Zeit vergangen ist, stellen Sie ggf. sicher, dass die Datenbank aktiv ist. Siehe den vorherigen Hinweis zum Anhalten der Datenbank.
Öffnen Sie einen Webbrowser für die externe IP-Adresse Ihres Diensts (52.152.189.57
für das vorstehende Beispiel), um die Startseite der Anwendung anzuzeigen. Wenn die Seite nicht ordnungsgemäß geladen wird, liegt dies daran, dass die App gestartet wird. Sie können einen Moment warten und die Seite später aktualisieren. Der Podname Ihrer Anwendungsreplikate sollte oben links auf der Seite angezeigt werden. Warten Sie ein paar Minuten, und aktualisieren Sie die Seite. Es wird aufgrund des vom AKS-Cluster bereitgestellten Lastenausgleichs ein anderer Podname angezeigt.
Hinweis
Derzeit verwendet die Anwendung kein HTTPS. Wir empfehlen Ihnen, dass Sie TLS mit Ihren eigenen Zertifikaten aktivieren. Weitere Informationen finden Sie unter Verwenden von TLS mit einem Eingangs-Controller in Azure Kubernetes Service (AKS).
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 über die in diesem Handbuch verwendeten Verweise:
- Azure Kubernetes Service (AKS)
- Lernprogramm: Verbinden einer AKS-App mit Azure SQL-Datenbank (Vorschau)
- Integrieren von Azure SQL-Datenbank in Service Connector
- Herstellen einer Verbindung mit der Microsoft Entra-Authentifizierung
- Open Liberty
- Open Liberty Operator
- Open Liberty-Serverkonfiguration
- Liberty Maven-Plug-In
- Open Liberty-Containerimages
- WebSphere Liberty-Containerimages
Informationen zum Integrieren von Azure Cache for Redis in eine Java-App finden Sie unter Verwenden von Azure Caches for Redis in Java mit Redisson Redis-Client.
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?