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.
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.
Kloon de voorbeeldcode voor deze handleiding. Het voorbeeld staat op GitHub.
Wijzig de map in
javaee-app-simple-clustervan uw lokale kloon.Voer uit
mvn clean packageom de toepassing te verpakken.Voer uit
mvn liberty:devom de toepassing te testen. Als het goedThe defaultServer server is ready to run a smarter planet.is, ziet u in de uitvoer van de opdracht. GebruikCTRL-Com de toepassing te stoppen.Waarden ophalen voor eigenschappen
artifactIden gedefinieerd in deversionpom.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)Voer
cd targetuit om de map te wijzigen in de build van het voorbeeld.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.
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}Controleer of de huidige map van
javaee-app-simple-cluster/targetuw lokale kloon is.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 20sWacht totdat u onder
3/3de kolom ziet en gebruik onder de kolom om hetREADY3AVAILABLECTRL-Ccontroleproces tekubectlstoppen.
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.
Notitie
- De toepassing maakt momenteel geen gebruik van HTTPS. Het is raadzaam om TLS IN TE SCHAKELEN voor uw eigen certificaten.
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:
