Een Java-toepassing implementeren met Open Dient of WebSphere een AKS-cluster (Azure Kubernetes Service)-cluster

In dit artikel wordt het volgende beschreven:

  • Voer uw Java-, Java-EE-, EE- of MicroProfile-toepassing uit in de runtime Openen Als of WebSphere.
  • Bouw de Docker-toepassingsafbeelding met behulp van Container-afbeeldingen openen.
  • Implementeer de in een container geplaatste toepassing in een AKS-cluster met behulp van de Operator Open Operator.

De Open Operator vereenvoudigt de implementatie en het beheer van toepassingen die worden uitgevoerd op Kubernetes-clusters. Met Open Operator kunt u ook geavanceerdere bewerkingen uitvoeren, zoals het verzamelen van traceringen en dumps.

Zie de projectpagina Openen voor meer informatie over Open Had. Zie de productpagina van WebSphereSphere voor meer informatie over IBM WebSphere Gehele.

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Vereisten

  • Gebruik de bash-omgeving in Azure Cloud shell.

    Cloud Shell starten in een nieuw venster

  • Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren.

    • Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht AZ login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij de Azure CLI voor aanvullende aanmeldingsopties.

    • Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.

    • Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.

  • Voor dit artikel is de nieuwste versie van de Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.
  • Als de opdrachten in deze handleiding lokaal worden uitgevoerd (in plaats van Azure Cloud Shell):
    • Bereid een lokale computer voor met een Unix-achtige besturingssysteem geïnstalleerd (bijvoorbeeld Ubuntu, macOS of Windows-subsysteem voor Linux).
    • Installeer een Java SE-implementatie (bijvoorbeeld AdoptOpenJDK OpenJDK 8 LTS/OpenJ9).
    • Installeer Maven 3.5.0 of hoger.
    • Installeer Docker voor uw besturingssysteem.

Een resourcegroep maken

Een Azure-resourcegroep is een logische groep waarin Azure-resources worden geïmplementeerd en beheerd.

Maak een resourcegroep met de naam java-moet-project met behulp van de opdracht az group create op de locatie eastus. Deze resourcegroep wordt later gebruikt voor het maken van het Azure Container Registry (ACR) en het AKS-cluster.

RESOURCE_GROUP_NAME=java-liberty-project
az group create --name $RESOURCE_GROUP_NAME --location eastus

Een ACR-exemplaar maken

Gebruik de opdracht az acr create om het ACR-exemplaar te maken. In het volgende voorbeeld wordt een ACR-exemplaar met de naam youruniqueacrname gemaakt. Zorg ervoor dat youruniqueacrname uniek is binnen Azure.

export REGISTRY_NAME=youruniqueacrname
az acr create --resource-group $RESOURCE_GROUP_NAME --name $REGISTRY_NAME --sku Basic --admin-enabled

Na korte tijd ziet u een JSON-uitvoer die het volgende bevat:

  "provisioningState": "Succeeded",
  "publicNetworkAccess": "Enabled",
  "resourceGroup": "java-liberty-project",

Verbinding maken naar het ACR-exemplaar

U moet zich aanmelden bij het ACR-exemplaar voordat u er een afbeelding naar kunt pushen. Voer de volgende opdrachten uit om de verbinding te controleren:

export LOGIN_SERVER=$(az acr show -n $REGISTRY_NAME --query 'loginServer' -o tsv)
export USER_NAME=$(az acr credential show -n $REGISTRY_NAME --query 'username' -o tsv)
export PASSWORD=$(az acr credential show -n $REGISTRY_NAME --query 'passwords[0].value' -o tsv)

docker login $LOGIN_SERVER -u $USER_NAME -p $PASSWORD

Aan het einde Login Succeeded van de opdrachtuitvoer ziet u of u bent aangemeld bij het ACR-exemplaar.

Een AKS-cluster maken

Gebruik de opdracht az aks create om een AKS-cluster te maken. In het volgende voorbeeld wordt een cluster met de naam myAKSCluster gemaakt met één knooppunt. Dit zal enkele minuten in beslag nemen.

CLUSTER_NAME=myAKSCluster
az aks create --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --node-count 1 --generate-ssh-keys --enable-managed-identity

Na enkele minuten is de opdracht voltooid en retourneert deze informatie over het cluster in JSON-indeling, waaronder de volgende:

  "nodeResourceGroup": "MC_java-liberty-project_myAKSCluster_eastus",
  "privateFqdn": null,
  "provisioningState": "Succeeded",
  "resourceGroup": "java-liberty-project",

Verbinding maken naar het AKS-cluster

Als u een Kubernetes-cluster wilt beheren, gebruikt u kubectl, de Kubernetes-opdrachtregelclient. Als u Azure Cloud Shell gebruikt, is kubectl al geïnstalleerd. Als u kubectl lokaal wilt installeren, gebruikt u de opdracht az aks install-cli:

az aks install-cli

Gebruik de opdracht az aks get-credentials om kubectl zodanig te configureren dat er verbinding wordt gemaakt met het Kubernetes-cluster. Bij deze opdracht worden referenties gedownload en wordt Kubernetes CLI geconfigureerd voor het gebruik van deze referenties.

az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --overwrite-existing

Notitie

De bovenstaande opdracht maakt gebruik van de standaardlocatie voor het Kubernetes-configuratiebestand, namelijk ~/.kube/config. U kunt een andere locatie voor uw Kubernetes-configuratiebestand opgeven door --file te gebruiken.

Als u de verbinding met uw cluster wilt controleren, gebruikt u de opdracht kubectl get om een lijst met clusterknooppunten te retourneren.

kubectl get nodes

In de volgende voorbeelduitvoer ziet u het enkele knooppunt dat is gemaakt in de vorige stappen. Zorg ervoor dat de status van het knooppunt Ready is:

NAME                                STATUS   ROLES   AGE     VERSION
aks-nodepool1-xxxxxxxx-yyyyyyyyyy   Ready    agent   76s     v1.18.10

Open Hadooperator installeren

Nadat u het cluster heeft gemaakt en er verbinding mee maakt, installeert u de Operator Open Operator door de volgende opdrachten uit te voeren.

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 -

Toepassingsafbeelding bouwen

Als u de Toepassingstoepassing wilt implementeren en uitvoeren in het AKS-cluster, containeriseert u uw toepassing als een Docker-afbeelding met behulp van Open Image-containerafbeeldingen of WebSphere Image-containerafbeeldingen.

  1. Kloon de voorbeeldcode voor deze handleiding. Het voorbeeld staat op GitHub.

  2. Wijzig de map in javaee-app-simple-cluster van uw lokale kloon.

  3. Voer uit mvn clean package om de toepassing te verpakken.

  4. Voer uit mvn liberty:dev om de toepassing te testen. Als het goed The defaultServer server is ready to run a smarter planet. is, ziet u in de uitvoer van de opdracht. Gebruik CTRL-C om de toepassing te stoppen.

  5. Waarden ophalen voor eigenschappen artifactId en gedefinieerd in de version pom.xml .

    artifactId=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.artifactId}' --non-recursive exec:exec)
    version=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
    
  6. Voer cd target uit om de map te wijzigen in de build van het voorbeeld.

  7. Voer een van de volgende opdrachten uit om de toepassingsafbeelding te bouwen en deze naar het ACR-exemplaar te pushen.

    • Bouw met de Basisafbeelding van Open Termijn als u liever Open Hebt gebruikt als een lichtgewicht open source Java™ runtime:

      # Build and tag application image. This will cause the ACR instance to pull the necessary Open Liberty base images.
      az acr build -t ${artifactId}:${version} -r $REGISTRY_NAME .
      
    • Bouw met de Basisafbeelding van WebSphere: als u liever een commerciële versie van Open Version gebruikt:

      # Build and tag application image. This will cause the ACR instance to pull the necessary WebSphere Liberty base images.
      az acr build -t ${artifactId}:${version} -r $REGISTRY_NAME --file=Dockerfile-wlp .
      

Toepassing implementeren in het AKS-cluster

Volg de onderstaande stappen om de App-toepassing te implementeren in het AKS-cluster.

  1. Maak een pull-geheim zodat het AKS-cluster wordt geverifieerd om een afbeelding op te halen uit het ACR-exemplaar.

    kubectl create secret docker-registry acr-secret \
       --docker-server=${LOGIN_SERVER} \
       --docker-username=${USER_NAME} \
       --docker-password=${PASSWORD}
    
  2. Controleer of de huidige map van javaee-app-simple-cluster/target uw lokale kloon is.

  3. Voer de volgende opdrachten uit om uw App-toepassing met 3 replica's te implementeren in het AKS-cluster. Opdrachtuitvoer wordt ook inline weergegeven.

    # Create OpenLibertyApplication "javaee-cafe-cluster"
    kubectl apply -f openlibertyapplication.yaml
    
    openlibertyapplication.openliberty.io/javaee-cafe-cluster created
    
    # Check if OpenLibertyApplication instance is created
    kubectl get openlibertyapplication ${artifactId}-cluster
    
    NAME                        IMAGE                                                   EXPOSED   RECONCILED   AGE
    javaee-cafe-cluster         youruniqueacrname.azurecr.io/javaee-cafe:1.0.25         True         59s
    
    # Check if deployment created by Operator is ready
    kubectl get deployment ${artifactId}-cluster --watch
    
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    javaee-cafe-cluster         0/3     3            0           20s
    
  4. Wacht totdat u onder 3/3 de kolom ziet en gebruik onder de kolom om het READY 3 AVAILABLE CTRL-C controleproces te kubectl stoppen.

De toepassing testen

Wanneer de toepassing wordt uitgevoerd, maakt een Kubernetes load balancer-service de front-end van de toepassing weer op internet. Dit proces kan even duren.

Gebruik de opdracht kubectl get service met het argument --watch om de voortgang te controleren.

kubectl get service ${artifactId}-cluster --watch

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

Zodra het EXTERNAL-IP-adres is gewijzigd van in behandeling in een echt openbaar IP-adres, gebruikt u CTRL-C om het kubectl watch-proces te stoppen.

Open een webbrowser naar het externe IP-adres van uw service (voor het bovenstaande voorbeeld) om 52.152.189.57 de startpagina van de toepassing te zien. De podnaam van uw toepassingsreplica's wordt linksboven op de pagina weergegeven. Wacht enkele minuten en vernieuw de pagina om een andere podnaam weer te geven vanwege taakverdeling die wordt geleverd door het AKS-cluster.

Java-toepassing is geïmplementeerd in AKS

Notitie

Resources opschonen

Om Azure-kosten te voorkomen, moet u overbodige resources ops schonen. Wanneer het cluster niet meer nodig is, gebruikt u de opdracht az group delete om de resourcegroep, containerservice, containerregister en alle gerelateerde resources te verwijderen.

az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait

Volgende stappen

Meer informatie vindt u in de verwijzingen die in deze handleiding worden gebruikt: