Sdílet prostřednictvím


Nasazení aplikace v Javě s platformou Open Liberty nebo WebSphere Liberty v clusteru Azure Kubernetes Service

Platí pro: AKS na Windows Serveru

Tento článek ukazuje, jak:

  • Spusťte svoji aplikaci Java, Java EE, Jakarta EE nebo MicroProfile v modulu runtime Open Liberty nebo WebSphere Liberty.
  • Sestavte obraz Dockeru aplikace pomocí obrazů kontejneru Open Liberty.
  • Nasaďte kontejnerizovanou aplikaci do místního clusteru AKS v AKS na Windows Serveru pomocí operátoru Open Liberty.

Operátor Open Liberty zjednodušuje nasazení a správu aplikací spuštěných v clusterech Kubernetes. S operátorem Open Liberty můžete také provádět pokročilejší operace, jako je shromažďování stop a výpisů.

Další informace o aplikaci Open Liberty naleznete na stránce projektu Open Liberty. Další informace o PRODUKTU IBM WebSphere Liberty naleznete na stránce produktu WebSphere Liberty.

Tento článek je rozdělený do dvou částí:

Část 1 se zaměřuje na nasazení nezbytných artefaktů v Azure. Toto nasazení zahrnuje skupinu prostředků a službu Azure Container Registry. K provedení těchto úloh můžete použít Azure Cloud Shell (nejjednodušší), který zahrnuje nejnovější verzi Azure CLI, nebo místní systém s nainstalovanými následujícími nástroji:

  • Nainstalovaný operační systém podobný unixu (například Ubuntu, macOS, Subsystém Windows pro Linux).
  • Nainstalujte Azure CLI podle předchozích pokynů.
  • Nainstalujte implementaci Java SE (například AdoptOpenJDK OpenJDK 8 LTS/OpenJ9).
  • Nainstalujte Maven 3.5.0 nebo novější.
  • Nainstalujte Docker pro váš operační systém.

Část 2 se zaměřuje na nasazení aplikace z azure Container Registry do prostředí AKS Arc. V této části nemůžete použít Azure Cloud Shell. Pro prostředí AKS Arc jsou vyžadovány následující položky:

  • Cluster AKS s alespoň jedním pracovním uzlem Linuxu, který je spuštěný.
  • Nakonfigurované místní kubectl prostředí, které odkazuje na cluster AKS. K přístupu ke clusteru můžete použít příkaz Get-AksHciCredential PowerShell pomocí kubectl.
  • Nástroje příkazového řádku Git nainstalované ve vašem systému V systému Windows můžete jako hlavní konzolu použít Git Bash a v konzole Git Bash v případě potřeby volat PowerShell a Azure.

Vytvoření skupiny prostředků v Azure

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

Skupinu prostředků s názvem java-liberty-project můžete vytvořit pomocí příkazu az group create v lokalitě eastus. Tato skupina prostředků se použije později k vytvoření instance služby Azure Container Registry:

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

Vytvoření instance služby Container Registry v Azure

Pomocí příkazu az acr create vytvořte instanci služby Azure Container Registry. Následující příklad vytvoří instanci Container Registry s názvem youruniquecontainerregistryname. Ujistěte se, že vašeuniquecontainerregistryname je jedinečný v rámci Azure:

REGISTRY_NAME=youruniquecontainerregistryname
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, který vypadá podobně jako v následujícím příkladu:

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

Připojení k instanci služby Container Registry v Azure

Před odesláním image do instance služby Container Registry se musíte přihlásit k instanci služby Container Registry. Spuštěním následujících příkazů ověřte připojení. Poznamenejte si přihlašovací údaje. Později je použijete při připojování k AKS:

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

echo $LOGIN_SERVER
echo $USER_NAME
echo $PASSWORD

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

Pokud jste se úspěšně přihlásili k instanci Container Registry, měli byste na konci výstupu příkazu vidět úspěšné přihlášení .

Vytvoření obrazu aplikace v Azure

Pokud chcete nasadit a spustit aplikaci Liberty v clusteru AKS, musíte nejprve kontejnerizovat aplikaci jako image Dockeru pomocí imagí kontejnerů Open Liberty nebo imagí kontejnerů WebSphere Liberty:

  1. Naklonujte vzorový kód pro tuto příručku. Ukázka je na GitHubu.
  2. Změňte adresář do javaee-app-simple-cluster vašeho místního klonu.
  3. Spusťte mvn clean package k zabalení aplikace.
  4. Spusťte mvn liberty:dev test aplikace. Pokud byl příkaz úspěšný, měli byste vidět , že výchozí serverServer je připravený na spuštění chytřejší planety ve výstupu příkazu. K zastavení aplikace použijte kombinaci kláves CTRL-C .
  5. Spuštěním jednoho z následujících příkazů sestavte image aplikace a odešlete ji do instance Container Registry:
    • Pokud chcete použít Open Liberty pro odlehčený open-source běhový modul Java, sestavte pomocí základního obrazu Open Liberty.

      # Build and tag application image. This causes the Container Registry instance to pull the necessary Open Liberty base images.
      az acr build -t javaee-cafe-simple:1.0.0 -r $REGISTRY_NAME .
      
    • Pokud chcete raději použít komerční verzi Open Liberty, vytvořte ji pomocí základní image WebSphere Liberty:

      # Build and tag application image. This causes the Container Registry instance to pull the necessary WebSphere Liberty base images.
      az acr build -t javaee-cafe-simple:1.0.0 -r $REGISTRY_NAME --file=Dockerfile-wlp .
      

Připojení ke clusteru AKS

Ke správě clusteru Kubernetes použijete kubectl, klienta příkazového řádku Kubernetes. Jakmile je nainstalován ve Windows, můžete spustit kubectl z příkazového řádku, konzoly PowerShell nebo Git Bash.

Jako předpoklad byste měli nakonfigurovat místní kubectl prostředí tak, aby ukazovalo na cluster AKS. K přístupu ke clusteru můžete použít příkaz PowerShell Get-AksHciCredential pomocí kubectl.

Get-AksHciCredential -name AksHciClusterName

Poznámka:

Předchozí příkaz používá výchozí umístění pro konfigurační soubor Kubernetes, který je %USERPROFILE%.kube. Pomocí parametru můžete zadat jiné umístění konfiguračního -outputLocation souboru Kubernetes.

Zpátky v konzole ověřte připojení ke clusteru pomocí příkazu kubectl get a vraťte 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 je stav uzlu připravený:

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

Instalace operátoru Open Liberty

Po vytvoření clusteru a připojení k němu nainstalujte operátor Open Liberty spuštěním následujících příkazů:

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 -

Nasazení aplikace v clusteru AKS

Pomocí těchto kroků nasaďte aplikaci Liberty do clusteru AKS. Musíte načíst přihlašovací údaje z předchozí relace:

  1. Pokud jste dříve použili Azure Cloud Shell a teď pro připojení k AKS používáte samostatnou konzolu, musíte znovu zadat svoje přihlašovací údaje:

    LOGIN_SERVER=YourLoginServerFromEarlier
    USER_NAME=YourUsernameFromEarlier
    PASSWORD=YourPwdFromEarlier
    
  2. Vytvořte pull secret, aby se cluster AKS ověřil pro stažení image z instance Container Registry.

    kubectl create secret docker-registry acr-secret \
       --docker-server=${LOGIN_SERVER} \
       --docker-username=${USER_NAME} \
       --docker-password=${PASSWORD}
    
  3. Znovu platí, že pokud jste dříve použili Azure Cloud Shell a teď používáte samostatný nástroj nebo relaci pro připojení k AKS, musíte naklonovat ukázkový kód pro tuto příručku. Ukázka je na GitHubu.

  4. Ověřte, že aktuální pracovní adresář v místním klonu je javaee-app-simple-cluster.

  5. Spuštěním následujících příkazů nasaďte aplikaci Liberty se třemi replikami do clusteru AKS. Výstup příkazu se také zobrazuje přímo.

    # Create OpenLibertyApplication "javaee-app-simple-cluster"
    cat openlibertyapplication.yaml | sed -e "s/\${Container_Registry_URL}/${LOGIN_SERVER}/g" | sed -e "s/\${REPLICAS}/3/g" | kubectl apply -f -
    
    openlibertyapplication.openliberty.io/javaee-app-simple-cluster created
    
    # Check if OpenLibertyApplication instance is created
    kubectl get openlibertyapplication javaee-app-simple-cluster
    
    NAME                        IMAGE                                                   EXPOSED   RECONCILED   AGE
    javaee-app-simple-cluster   youruniquecontainerregistryname.azurecr.io/javaee-cafe-simple:1.0.0             True         59s
    
    # Check if deployment created by Operator is ready
    kubectl get deployment javaee-app-simple-cluster --watch
    
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    javaee-app-simple-cluster   0/3     3            0           20s
    
  6. Počkejte, až uvidíte ve sloupci READY3/3 a ve sloupci AVAILABLE3. Potom můžete proces sledování zastavit pomocí CTRL-C.

Otestování aplikace

Když se aplikace spustí, služba nástroje pro vyrovnávání zatížení Kubernetes zveřejní front-end aplikace na internetu. Dokončení tohoto procesu může chvíli trvat.

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

kubectl get service javaee-app-simple-cluster --watch

NAME                        TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
javaee-app-simple-cluster   LoadBalancer   10.109.118.3   192.168.0.152   80:30580/TCP     68s

Jakmile se externí IP adresa změní z čekání na skutečnou veřejnou IP adresu, pomocí kubectl zastavte proces sledování.

Otevřete webový prohlížeč na externí IP adresu vaší služby (v tomto příkladu 192.168.0.152 ) a zobrazte domovskou stránku aplikace. V levém horním rohu stránky by se měl zobrazit název podu replik aplikace. Počkejte několik minut a pak aktualizujte stránku, aby se v důsledku vyrovnávání zatížení poskytovaného clusterem AKS zobrazil jiný název podu.

Snímek obrazovky aplikace Java liberty úspěšně nasazené v AKS

Poznámka:

V současné době aplikace nepoužívá protokol HTTPS. Protokol TLS byste měli povolit s vlastními certifikáty.

Ukliďte zdroje

Abyste se vyhnuli poplatkům za Azure, měli byste vyčistit nepotřebné prostředky. Pokud už cluster nepotřebujete, pomocí příkazu az group delete odeberte skupinu prostředků, registr kontejneru a související prostředky Azure:

RESOURCE_GROUP_NAME=java-liberty-project
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait

Pokud chcete vyčistit prostředky nasazené v AKS, spusťte z místní konzoly následující příkazy:

kubectl delete -f https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-crd.yaml
kubectl delete -f https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-operator.yaml
kubectl delete -f openlibertyapplication.yaml

Další kroky

Další informace najdete v odkazech použitých v tomto průvodci: