Nasazení aplikace v jazyce Java s otevřeným nástrojem svobody nebo WebSphere Svoboda v clusteru Azure Kubernetes Service (AKS)

Tento článek ukazuje, jak:

  • spusťte aplikaci java, java EE, Jakarta EE nebo mikroprofile v otevřeném prostředí WebSphere svobody nebo svobody.
  • Sestavte image Docker aplikace pomocí otevřených imagí kontejnerů.
  • Nasaďte kontejnerové aplikace do clusteru AKS pomocí otevřeného operátoru svoboda.

Otevřený operátor svoboda zjednodušuje nasazení a správu aplikací spuštěných v clusterech Kubernetes. V případě otevřeného operátoru svoboda můžete také provádět pokročilejší operace, například shromažďování trasování a výpisů paměti.

Další informace o otevřeném počítači můžete zobrazit na stránce otevřít a projekt. Další podrobnosti o IBM WebSphere svobody najdete na stránce produktu WebSphere svobody.

Pokud ještě nemáte předplatné Azure,vytvořte si bezplatný účet před tím, než začnete.

Požadavky

  • V nástroji použijte prostředí Bash Azure Cloud Shell.

    Spuštění služby Cloud Shell v novém okně

  • Pokud tomu dáváte přednost, můžete nainstalovat Azure CLI a spouštět referenční příkazy CLI.

    • Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení jsou popsané v tématu Přihlášení pomocí Azure CLI.

    • Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.

    • Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.

  • Tento článek vyžaduje nejnovější verzi rozhraní příkazového řádku Azure CLI. Pokud používáte Azure Cloud Shell, nejnovější verze je už nainstalovaná.
  • Pokud se v této příručce spouští příkazy místně (místo Azure Cloud Shell):
    • připravte místní počítač s nainstalovaným operačním systémem, který má systém Unix (například Ubuntu, macOS, Subsystém Windows pro Linux).
    • nainstalujte implementaci Java SE (například AdoptOpenJDK OpenJDK 8 LTS/OpenJ9).
    • Nainstalujte Maven 3.5.0 nebo vyšší.
    • Nainstalujte Docker pro váš operační systém.

Vytvoření skupiny prostředků

Skupina prostředků Azure je logická skupina, ve které se nasazují a spravují prostředky Azure.

Vytvořte skupinu prostředků s názvem Java-svoboda-Project pomocí příkazu AZ Group Create v umístění eastus . Tato skupina prostředků se použije později pro vytvoření instance Azure Container Registry (ACR) a clusteru AKS.

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

Vytvoření instance ACR

Instanci ACR vytvoříte pomocí příkazu AZ ACR Create . Následující příklad vytvoří instanci ACR s názvem youruniqueacrname. Ujistěte se, že youruniqueacrname je v rámci Azure jedinečný.

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

Po krátké době by se měl zobrazit výstup JSON obsahující:

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

Připojení instance ACR

Před nahráním image do této instance se budete muset přihlásit k instanci ACR. Spusťte následující příkazy a ověřte připojení:

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

Pokud jste se Login Succeeded úspěšně přihlásili k instanci ACR, měli byste vidět na konci příkazu OUTPUT.

Vytvoření clusteru AKS

Pomocí příkazu az aks create vytvořte cluster AKS. Následující příklad vytvoří cluster myAKSCluster s jedním uzlem. Dokončení této akce bude trvat několik minut.

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

Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON, včetně následujících:

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

Připojení ke clusteru AKS

Ke správě clusteru Kubernetes použijete klienta příkazového řádku Kubernetes kubectl. Pokud používáte Azure Cloud Shell, kubectl je již nainstalováno. Pokud chcete nainstalovat kubectl místně, použijte příkaz AZ AKS Install-CLI :

az aks install-cli

Pomocí příkazu az aks get-credentials nakonfigurujte klienta kubectl pro připojení k vašemu clusteru Kubernetes. Tento příkaz stáhne pověření a nakonfiguruje rozhraní příkazového řádku Kubernetes pro jejich použití.

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

Poznámka

Výše uvedený příkaz používá výchozí umístění konfiguračního souboru Kubernetes, který je ~/.kube/config . Můžete zadat jiné umístění konfiguračního souboru Kubernetes pomocí --File.

Pokud chcete ověřit připojení ke clusteru, použijte příkaz kubectl get, který vrátí seznam uzlů clusteru.

kubectl get nodes

Následující příklad výstupu ukazuje jeden uzel vytvořený v předchozích krocích. Ujistěte se, že stav uzlu je připravený:

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

Nainstalovat otevřený operátor svoboda

Po vytvoření a připojení ke clusteru nainstalujte pomocí následujících příkazů otevřený operátor Open .

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 -

Sestavit obrázek aplikace

Pokud chcete nasadit a spustit vaši aplikaci svobody v clusteru AKS, kontejnerizace aplikaci jako image Docker pomocí otevřených imagí kontejnerů nebo WebSphere. Image kontejnerů.

  1. Naklonujte vzorový kód pro tento průvodce. Ukázka je na GitHub.

  2. Změňte adresář na javaee-app-simple-cluster svůj místní klon.

  3. Spusťte příkaz mvn clean package pro zabalení aplikace.

  4. Spusťte mvn liberty:dev pro otestování aplikace. V případě úspěchu by se měla zobrazit The defaultServer server is ready to run a smarter planet. ve výstupu příkazu. Použijte CTRL-C k zastavení aplikace.

  5. Načtěte hodnoty pro vlastnosti artifactId a version definované v 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. Spusťte cd target pro změnu adresáře na sestavení ukázky.

  7. Spusťte jeden z následujících příkazů a sestavte image aplikace a nahrajte ji do instance ACR.

    • Sestavte se s otevřenými základními obrázky s odlehčeným použitím 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 .
      
    • Sestavte se základní imagí WebSphere svoboda, pokud chcete použít komerční verzi programu Open.

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

Nasazení aplikace v clusteru AKS

Pomocí následujících kroků Nasaďte aplikaci svobody v clusteru AKS.

  1. Vytvořte tajný klíč pro vyžádání, aby byl cluster AKS ověřený pro vyžádání image z instance ACR.

    kubectl create secret docker-registry acr-secret \
       --docker-server=${LOGIN_SERVER} \
       --docker-username=${USER_NAME} \
       --docker-password=${PASSWORD}
    
  2. Ověřte, že aktuální pracovní adresář má javaee-app-simple-cluster/target svůj místní klon.

  3. Spusťte následující příkazy, abyste nasadili vaši aplikaci svobody se 3 replikami do clusteru AKS. Výstup příkazu je také zobrazen jako vložený.

    # 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. Počkejte, dokud se nezobrazí 3/3 pod READY sloupcem a 3 pod ním, a AVAILABLE použijte CTRL-C k zastavení kubectl procesu sledování.

Testování aplikace

Když je aplikace spuštěná, služba Vyrovnávání zatížení Kubernetes zpřístupňuje front-end aplikace na internetu. Dokončení tohoto procesu může nějakou dobu trvat.

Pomocí příkazu kubectl get service s argumentem --watch můžete sledovat průběh.

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

Jakmile se adresa External-IP změní ze stavu čeká na skutečnou veřejnou IP adresu, použijte CTRL-C k zastavení kubectl procesu sledování.

Otevřete webový prohlížeč na externí IP adresu vaší služby ( 52.152.189.57 pro výše uvedený příklad) a zobrazte tak domovskou stránku aplikace. V levém horním rohu stránky by se měl zobrazit název pod názvem repliky vaší aplikace. Počkejte několik minut a aktualizujte stránku, aby se zobrazil jiný název pod, který je zobrazený kvůli vyrovnávání zatížení, které poskytuje cluster AKS.

Aplikace Java svobody byla úspěšně nasazena v AKS

Poznámka

Vyčištění prostředků

Abyste se vyhnuli poplatkům za Azure, měli byste vyčistit nepotřebné prostředky. Pokud už cluster nepotřebujete, odeberte skupinu prostředků, službu kontejneru, registr kontejnerů a všechny související prostředky pomocí příkazu AZ Group Delete .

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

Další kroky

Další informace můžete získat z odkazů používaných v tomto průvodci: