Freigeben über


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 die Contributor- und User 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:

  1. Kopieren Sie aus den hervorgehobenen Abschnitten in der Kubernetes-Bereitstellung YAML, wie im folgenden Beispiel gezeigt, die serviceAccountName werte secretRef.name :

    serviceAccountName: <service-account-name>
    containers:
    - name: raw-linux
       envFrom:
          - secretRef:
             name: <secret-name>
    
  2. <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_CONNECTIONSTRINGkennwortfreie 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.

  1. 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
    
  2. Ü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 zu http://localhost:9080/, um zu überprüfen, ob auf die Anwendung zugegriffen werden kann und alle Funktionen funktionieren.

  3. 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:

  1. 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
    
  2. 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
    
  3. 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
    
  4. Warten Sie, bis Ihnen 3/3 unter der Spalte READY und 3 unter der Spalte AVAILABLE angezeigt werden, verwenden Sie dann Strg+C, um den Überwachungsprozess kubectl 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.

Die Java Liberty-Anwendung wurde in AKS erfolgreich bereitgestellt.

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:

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?