Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: AKS unter Windows Server
Dieser Artikel demonstriert Folgendes:
- 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 Open Liberty-Containerimages.
- Bereitstellen der containerisierten Anwendung in einem lokalen AKS-Cluster in AKS auf Windows Server mithilfe des Open Liberty-Operators.
Der Open Liberty-Operator vereinfacht die Bereitstellung und Verwaltung von Anwendungen, die in Kubernetes-Clustern ausgeführt werden. Sie können mit dem Open Liberty-Operator auch komplexere Vorgänge ausführen, z. B. die Erfassung von Ablaufverfolgungen und Speicherabbildern.
Weitere Informationen zu Open Liberty finden Sie auf der Open Liberty-Projektseite. Weitere Informationen zu IBM WebSphere Liberty finden Sie auf der Produktseite webSphere Liberty.
Dieser Artikel ist in zwei Teile unterteilt:
Teil 1 konzentriert sich auf die Bereitstellung der erforderlichen Artefakte in Azure. Diese Bereitstellung umfasst eine Ressourcengruppe und Azure Container Registry. Um diese Aufgaben auszuführen, können Sie entweder Azure Cloud Shell (am einfachsten) verwenden, das die neueste Version von Azure CLI enthält, oder ein lokales System mit den folgenden installierten Tools:
- Ein unixähnliches Betriebssystem installiert (z. B. Ubuntu, macOS, Windows-Subsystem für Linux).
- Installieren Sie Azure CLI nach den vorherigen Anleitungen.
- Installieren Sie eine Java SE-Implementierung (z. B. AdoptOpenJDK OpenJDK 8 LTS/OpenJ9).
- Installieren Sie Maven 3.5.0 oder höher.
- Installieren Sie Docker für Ihr Betriebssystem.
Teil 2 konzentriert sich auf die Bereitstellung der Anwendung aus Ihrer Azure-Containerregistrierung in der AKS Arc-Umgebung. Für diesen Abschnitt können Sie Azure Cloud Shell nicht verwenden. Für die AKS Arc-Umgebung sind die folgenden Elemente erforderlich:
- Ein AKS-Cluster mit mindestens einem Linux-Arbeitsknoten, der betriebsbereit ist.
- Eine konfigurierte lokale
kubectlUmgebung, die auf Ihren AKS-Cluster verweist. Sie können den Get-AksHciCredential-PowerShell-Befehl verwenden, um mitkubectlauf Ihren Cluster zuzugreifen. - Auf Ihrem System installierte Git-Befehlszeilentools Auf einem Windows System können Sie Git Bash als Hauptkonsole verwenden und bei Bedarf PowerShell und Azure in der Git Bash-Konsole aufrufen.
Erstellen einer Ressourcengruppe in Azure
Eine Azure-Ressourcengruppe ist eine logische Gruppe , in der Azure-Ressourcen bereitgestellt und verwaltet werden.
Sie können am Standort eastus mithilfe des Befehls az group create die Ressourcengruppe java-liberty-project erstellen. Diese Ressourcengruppe wird später zum Erstellen der Azure Container Registry-Instanz verwendet:
RESOURCE_GROUP_NAME=java-liberty-project
az group create --name $RESOURCE_GROUP_NAME --location eastus
Erstellen einer Containerregistrierungsinstanz in Azure
Verwenden Sie den Befehl "az acr create " zum Erstellen der Azure Container Registry-Instanz. Im folgenden Beispiel wird eine Containerregistrierungsinstanz namens "youruniquecontainerregistryname" erstellt. Stellen Sie sicher, dass Ihruniquecontainerregistryname in Azure eindeutig ist:
REGISTRY_NAME=youruniquecontainerregistryname
az acr create --resource-group $RESOURCE_GROUP_NAME --name $REGISTRY_NAME --sku Basic --admin-enabled
Nach kurzer Zeit sollte die JSON-Ausgabe angezeigt werden, die dem folgenden Beispiel ähnelt:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "java-liberty-project",
Herstellen einer Verbindung mit der Containerregistrierungsinstanz in Azure
Sie müssen sich bei der Containerregistrierungsinstanz anmelden, bevor Sie ein Image an diese übertragen können. Führen Sie die folgenden Befehle zum Überprüfen der Verbindung aus. Notieren Sie sich Ihre Anmeldeinformationen. Sie verwenden diese später beim Herstellen einer Verbindung mit AKS:
LOGIN_SERVER=$(az acr show -n $REGISTRY_NAME --query 'loginServer' -o tsv)
USER_NAME=$(az acr credential show -n $REGISTRY_NAME --query 'username' -o tsv)
PASSWORD=$(az acr credential show -n $REGISTRY_NAME --query 'passwords[0].value' -o tsv)
echo $LOGIN_SERVER
echo $USER_NAME
echo $PASSWORD
docker login $LOGIN_SERVER -u $USER_NAME -p $PASSWORD
Sie sollten "Anmeldung erfolgreich" am Ende der Befehlsausgabe sehen, wenn Sie sich erfolgreich bei der Containerregistrierungsinstanz angemeldet haben.
Erstellen des Anwendungsimages in Azure
Um Ihre Liberty-Anwendung auf dem AKS-Cluster bereitzustellen und auszuführen, müssen Sie ihre Anwendung zunächst als Docker-Image mit Open Liberty-Containerimages oder WebSphere Liberty-Containerimages containern:
- Klonen Sie den Beispielcode für diesen Leitfaden. Das Beispiel befindet sich auf GitHub.
- Wechseln Sie in das Verzeichnis
javaee-app-simple-clusterdes lokalen Klons. - Führen Sie
mvn clean packagezum Verpacken der Anwendung aus. - Führen Sie
mvn liberty:devaus, um die Anwendung zu testen. Sie sollten sehen , dass der defaultServer-Server bereit ist, einen intelligenteren Planeten in der Befehlsausgabe auszuführen, wenn der Befehl erfolgreich war. Verwenden Sie STRG-C , um die Anwendung zu beenden. - Führen Sie einen der folgenden Befehle aus, um das Anwendungsimage zu erstellen und an die Containerregistrierungsinstanz zu übertragen:
Erstellen Sie mit Open Liberty Base ein Image, wenn Sie lieber Open Liberty als Lightweight Open Source Java-Runtime verwenden möchten:
# Build and tag application image. This causes the Container Registry instance to pull the necessary Open Liberty base images. az acr build -t javaee-cafe-simple:1.0.0 -r $REGISTRY_NAME .Erstellen Sie mit WebSphere Liberty ein Basisimage, wenn Sie lieber eine kommerzielle Version von Open Liberty verwenden möchten:
# Build and tag application image. This causes the Container Registry instance to pull the necessary WebSphere Liberty base images. az acr build -t javaee-cafe-simple:1.0.0 -r $REGISTRY_NAME --file=Dockerfile-wlp .
Verbinden Sie sich mit Ihrem AKS-Cluster
Zum Verwalten eines Kubernetes-Clusters verwenden Sie kubectl, den Kubernetes-Befehlszeilenclient. Sobald es unter Windows installiert ist, können Sie kubectl über die Eingabeaufforderung, die PowerShell-Konsole und Git Bash ausführen.
Als Voraussetzung sollten Sie Ihre lokale kubectl Umgebung so konfigurieren, dass sie auf Ihren AKS-Cluster verweist. Sie können den PowerShell-Befehl Get-AksHciCredential verwenden, um mit kubectl auf Ihren Cluster zuzugreifen:
Get-AksHciCredential -name AksHciClusterName
Hinweis
Der vorstehende Befehl verwendet den Standardspeicherort für die Kubernetes-Konfigurationsdatei, die %USERPROFILE%.kube ist. Sie können einen anderen Speicherort für Ihre Kubernetes-Konfigurationsdatei mithilfe des -outputLocation Parameters angeben.
Gehen Sie zurück zu Ihrer Konsole. Um die Verbindung mit Ihrem Cluster zu überprüfen, verwenden Sie den Befehl kubectl get, um eine Liste der Clusterknoten anzuzeigen:
kubectl get nodes
Die folgende Beispielausgabe zeigt den in den vorherigen Schritten erstellten Knoten. Stellen Sie sicher, dass der Status des Knotens bereit ist:
NAME STATUS ROLES AGE VERSION
aks-nodepool1-xxxxxxxx-yyyyyyyyyy Ready agent 76s v1.18.10
Installieren von Open Liberty Operator
Nachdem Sie den Cluster erstellt und eine Verbindung mit dem Cluster hergestellt haben, installieren Sie den Open Liberty-Operator , indem Sie die folgenden Befehle ausführen:
OPERATOR_NAMESPACE=default
WATCH_NAMESPACE='""'
# Install Custom Resource Definitions (CRDs) for OpenLibertyApplication
kubectl apply -f https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-crd.yaml
# Install cluster-level role-based access
curl -L https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-cluster-rbac.yaml \
| sed -e "s/OPEN_LIBERTY_OPERATOR_NAMESPACE/${OPERATOR_NAMESPACE}/" \
| kubectl apply -f -
# Install the operator
curl -L https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-operator.yaml \
| sed -e "s/OPEN_LIBERTY_WATCH_NAMESPACE/${WATCH_NAMESPACE}/" \
| kubectl apply -n ${OPERATOR_NAMESPACE} -f -
Bereitstellen der Anwendung auf dem AKS-Cluster
Führen Sie die folgenden Schritte aus, um die Liberty-Anwendung im AKS-Cluster bereitzustellen. Sie müssen Ihre Anmeldeinformationen aus Ihrer früheren Sitzung abrufen:
Wenn Sie Azure Cloud Shell früher verwendet haben und jetzt eine separate Konsole zum Herstellen einer Verbindung mit AKS verwenden, müssen Sie Ihre Anmeldeinformationen erneut angeben:
LOGIN_SERVER=YourLoginServerFromEarlier USER_NAME=YourUsernameFromEarlier PASSWORD=YourPwdFromEarlierErstellen Sie einen Pullschlüssel, damit der AKS-Cluster authentifiziert wird, um das Image aus der Containerregistrierungsinstanz abzurufen:
kubectl create secret docker-registry acr-secret \ --docker-server=${LOGIN_SERVER} \ --docker-username=${USER_NAME} \ --docker-password=${PASSWORD}Wenn Sie Azure Cloud Shell früher verwendet haben und jetzt ein separates Tool oder eine separate Sitzung zum Herstellen einer Verbindung mit AKS verwenden, müssen Sie den Beispielcode für dieses Handbuch klonen. Das Beispiel befindet sich auf GitHub.
Überprüfen Sie, ob das aktuelle Arbeitsverzeichnis javaee-app-simple-cluster in Ihrem lokalen Klon ist.
Führen Sie die folgenden Befehle aus, um Ihre Liberty-Anwendung mit drei Replikaten im AKS-Cluster bereitzustellen. Die Befehlsausgabe wird auch inline angezeigt:
# Create OpenLibertyApplication "javaee-app-simple-cluster" cat openlibertyapplication.yaml | sed -e "s/\${Container_Registry_URL}/${LOGIN_SERVER}/g" | sed -e "s/\${REPLICAS}/3/g" | kubectl apply -f - openlibertyapplication.openliberty.io/javaee-app-simple-cluster created # Check if OpenLibertyApplication instance is created kubectl get openlibertyapplication javaee-app-simple-cluster NAME IMAGE EXPOSED RECONCILED AGE javaee-app-simple-cluster youruniquecontainerregistryname.azurecr.io/javaee-cafe-simple:1.0.0 True 59s # Check if deployment created by Operator is ready kubectl get deployment javaee-app-simple-cluster --watch NAME READY UP-TO-DATE AVAILABLE AGE javaee-app-simple-cluster 0/3 3 0 20sWarten Sie , bis 3/3 in der Spalte "READY " und "3 " in der Spalte "VERFÜGBAR " angezeigt wird. Verwenden Sie anschließend STRG-C, um den
kubectl-Überwachungsvorgang 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.
Verwenden Sie zum Überwachen des Fortschritts den Befehl kubectl get service mit dem Argument --watch.
kubectl get service javaee-app-simple-cluster --watch
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
javaee-app-simple-cluster LoadBalancer 10.109.118.3 192.168.0.152 80:30580/TCP 68s
Nachdem die EXTERNAL-IP von ausstehend in eine tatsächliche öffentliche IP-Adresse geändert wurde, verwenden Sie STRG-C, um die kubectl-Überwachung zu beenden.
Öffnen Sie einen Webbrowser mit der externen IP-Adresse Ihres Diensts (192.168.0.152 in diesem Beispiel), um die Startseite der Anwendung anzuzeigen. 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. Sie sollten TLS mit Ihren eigenen Zertifikaten aktivieren.
Bereinigen der Ressourcen
Zum Vermeiden von Azure-Gebühren sollten Sie nicht benötigte Ressourcen bereinigen. Wenn Sie den Cluster nicht mehr benötigen, verwenden Sie den Befehl "az group delete ", um die Ressourcengruppe, die Containerregistrierung und die zugehörigen Azure-Ressourcen zu entfernen:
RESOURCE_GROUP_NAME=java-liberty-project
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Führen Sie die folgenden Befehle aus der lokalen Konsole aus, um die auf AKS bereitgestellten Ressourcen zu bereinigen:
kubectl delete -f https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-crd.yaml
kubectl delete -f https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-operator.yaml
kubectl delete -f openlibertyapplication.yaml
Nächste Schritte
Weitere Informationen finden Sie in den in diesem Handbuch verwendeten Verweisen: