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.

    Starta Cloud Shell i ett nytt fönster

  • 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.

  1. Klona exempelkoden för den här guiden. Exemplet finns på GitHub.

  2. Ändra katalogen till javaee-app-simple-cluster för den lokala klonen.

  3. Kör mvn clean package för att paketera programmet.

  4. Kör mvn liberty:dev för att testa programmet. Du bör se The defaultServer server is ready to run a smarter planet. i kommandots utdata om det lyckas. Använd CTRL-C för att stoppa programmet.

  5. Hämta värden för egenskaper artifactId och version definieras i 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. Kör cd target för att ändra katalogen till versionen av exemplet.

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

  1. 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}
    
  2. Kontrollera att den aktuella arbetskatalogen javaee-app-simple-cluster/target finns i den lokala klonen.

  3. 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           20s
    
  4. Vänta tills du 3/3 ser under kolumnen och under kolumnen använder du för att stoppa READY 3 AVAILABLE CTRL-C kubectl bevakningsprocessen.

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.

Java-program har distribuerats på AKS

Anteckning

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: