Distribuera ett Java-program med Open Javascript eller WebSphereSphere i ett Azure Kubernetes Service-kluster (AKS)
Den här artikeln visar hur du:
- Kör ditt Java-, Java EE-, Jakarta EE- eller MicroProfile-program på Open Pci- eller WebSphereSphere-körningen.
- Skapa programmets Docker-avbildning med open Container-containeravbildningar.
- Distribuera det containeriserade programmet till ett AKS-kluster med Open Operator.
Open Operator förenklar distributionen och hanteringen av program som körs på Kubernetes-kluster. Med Open Operator-operatorn kan du även utföra mer avancerade åtgärder, till exempel att samla in spårningar och dumpar.
Mer information om OpenSidan finns på sidan för Open Project Project. Mer information om IBM WebSphereSphere finns på produktsidan WebSphereSphere.
Om du inte har en Azure-prenumerationkan du skapa ett kostnads fritt konto innan du börjar.
Förutsättningar
Använd bash-miljön i Azure Cloud Shell.
Om du vill kan du i stället installera Azure CLI för att köra CLI-referenskommandon.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Fler inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas till det installerar du Azure CLI-tillägg vid första användning. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
- Den här artikeln kräver den senaste versionen av Azure CLI. Om du Azure Cloud Shell är den senaste versionen redan installerad.
- Om du kör kommandona i den här guiden lokalt (i stället för Azure Cloud Shell):
- Förbered en lokal dator med Unix-liknande operativsystem installerat (till exempel Ubuntu, macOS eller Windows-undersystem för Linux).
- Installera en Java SE implementering (till exempel AdoptOpenJDK OpenJDK 8 LTS/OpenJ9).
- Installera Maven 3.5.0 eller senare.
- Installera Docker för ditt operativsystem.
Skapa en resursgrupp
En Azure-resursgrupp är en logisk grupp där Azure-resurser distribueras och hanteras.
Skapa en resursgrupp med namnet java-javascript-project med kommandot az group create på platsen eastus. Den här resursgruppen kommer att användas senare för att skapa Azure Container Registry-instansen (ACR) och AKS-klustret.
RESOURCE_GROUP_NAME=java-liberty-project
az group create --name $RESOURCE_GROUP_NAME --location eastus
Skapa en ACR-instans
Använd kommandot az acr create för att skapa ACR-instansen. I följande exempel skapas en ACR-instans med namnet youruniqueacrname. Kontrollera att dittuniqueacrname är unikt i Azure.
export REGISTRY_NAME=youruniqueacrname
az acr create --resource-group $RESOURCE_GROUP_NAME --name $REGISTRY_NAME --sku Basic --admin-enabled
Efter en kort stund bör du se JSON-utdata som innehåller:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "java-liberty-project",
Anslut till ACR-instansen
Du måste logga in på ACR-instansen innan du kan push-skicka en avbildning till den. Verifiera anslutningen genom att köra följande kommandon:
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
Du bör se Login Succeeded i slutet av kommandoutdata om du har loggat in på ACR-instansen.
Skapa ett AKS-kluster
Använd kommandot az aks create för att skapa ett AKS-kluster. I följande exempel skapas ett kluster med namnet myAKSCluster och en enda nod. Det tar flera minuter att slutföra.
CLUSTER_NAME=myAKSCluster
az aks create --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --node-count 1 --generate-ssh-keys --enable-managed-identity
Efter några minuter slutförs kommandot och returnerar JSON-formaterad information om klustret, inklusive följande:
"nodeResourceGroup": "MC_java-liberty-project_myAKSCluster_eastus",
"privateFqdn": null,
"provisioningState": "Succeeded",
"resourceGroup": "java-liberty-project",
Anslut till AKS-klustret
För att hantera Kubernetes-kluster använder du kubectl, Kubernetes kommandoradsklient. Om du använder Azure Cloud Shell är kubectl redan installerat. För att installera kubectl lokalt använder du kommandot az aks install-cli:
az aks install-cli
För att konfigurera kubectl till att ansluta till ditt Kubernetes-kluster använder du kommandot az aks get-credentials. Det här kommandot laddar ned autentiseringsuppgifter och konfigurerar Kubernetes CLI för att använda dem.
az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --overwrite-existing
Anteckning
Kommandot ovan använder standardplatsen för Kubernetes-konfigurationsfilen, som är ~/.kube/config . Du kan ange en annan plats för Kubernetes-konfigurationsfilen med hjälp av --file.
Du kan kontrollera anslutningen till klustret genom att köra kommandot kubectl get för att returnera en lista över klusternoderna.
kubectl get nodes
Följande exempelutdata visar den enskilda nod som skapades i föregående steg. Kontrollera att status för noden är Klar:
NAME STATUS ROLES AGE VERSION
aks-nodepool1-xxxxxxxx-yyyyyyyyyy Ready agent 76s v1.18.10
Installera Open Operator
När du har skapat och anslutit till klustret installerar du Open Operator operator genom att köra följande kommandon.
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 -
Skapa programavbildning
Om du vill distribuera och köra ditt Program på AKS-klustret kan du containerisera programmet som en Docker-avbildning med hjälp av Open Container-containeravbildningar eller WebSphere Container Images.
Klona exempelkoden för den här guiden. Exemplet finns på GitHub.
Ändra katalogen till
javaee-app-simple-clusterför den lokala klonen.Kör
mvn clean packageför att paketera programmet.Kör
mvn liberty:devför att testa programmet. Du bör seThe defaultServer server is ready to run a smarter planet.i kommandots utdata om det lyckas. AnvändCTRL-Cför att stoppa programmet.Hämta värden för egenskaper
artifactIdochversiondefinieras ipom.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)Kör
cd targetför att ändra katalogen till versionen av exemplet.Kör något av följande kommandon för att skapa programavbildningen och skicka den till ACR-instansen.
Skapa med Open Base-basavbildningen om du föredrar att använda Open Gäller som en enkel Java™körning med öppen källkod:
# 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 .Skapa med basavbildningen WebSphereSphere om du föredrar att använda en kommersiell version av OpenSphere:
# 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 .
Distribuera program i AKS-klustret
Följ stegen nedan för att distribuera Program på AKS-klustret.
Skapa en pull-hemlighet så att AKS-klustret autentiseras för att hämta avbildningen från ACR-instansen.
kubectl create secret docker-registry acr-secret \ --docker-server=${LOGIN_SERVER} \ --docker-username=${USER_NAME} \ --docker-password=${PASSWORD}Kontrollera att den aktuella arbetskatalogen
javaee-app-simple-cluster/targetfinns i den lokala klonen.Kör följande kommandon för att distribuera Ditt Program Med 3 repliker till AKS-klustret. Kommandoutdata visas också infogade.
# 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 20sVänta tills du
3/3ser under kolumnen och under kolumnen använder du för att stoppaREADY3AVAILABLECTRL-Ckubectlbevakningsprocessen.
Testa programmet
När programmet körs exponerar en Kubernetes-lastbalanseringstjänst programmets frontend mot Internet. Den här processen kan ta en stund att slutföra.
Du kan övervaka förloppet genom att använda kommandot kubectl get service med argumentet --watch.
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
När EXTERNAL-IP-adressen ändras från väntande till en faktisk offentlig IP-adress använder du CTRL-C för att stoppa kubectl bevakningsprocessen.
Öppna en webbläsare till den externa IP-adressen för din tjänst ( 52.152.189.57 i exemplet ovan) för att se programmets startsida. Poddnamnet för dina programrepliker bör visas längst upp till vänster på sidan. Vänta några minuter och uppdatera sidan för att se ett annat poddnamn som visas på grund av belastningsutjämning som tillhandahålls av AKS-klustret.
Anteckning
- För närvarande använder inte programmet HTTPS. Vi rekommenderar att du aktiverar TLS med dina egna certifikat.
Rensa resurserna
För att undvika Azure-avgifter bör du rensa onödiga resurser. När klustret inte längre behövs använder du kommandot az group delete för att ta bort resursgruppen, containertjänsten, containerregistret och alla relaterade resurser.
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Nästa steg
Du kan lära dig mer från referenser som används i den här guiden:
