Java-alkalmazás manuális üzembe helyezése Open Liberty vagy WebSphere Liberty használatával egy Azure Kubernetes Service-fürtön

Ez a cikk elmagyarázza, hogyan:

  • Futtassa a Java, a Java Enterprise kiadás, a Jakarta Enterprise kiadás vagy a MicroProfile alkalmazást az Open Liberty vagy a WebSphere Liberty futtatókörnyezetben.
  • Az alkalmazás Docker-rendszerképének létrehozása Liberty-tárolórendszerképek használatával.
  • Helyezze üzembe a tárolóalapú alkalmazást egy Azure Kubernetes Service-fürtben a Liberty Operátor használatával.

A Liberty Operátor leegyszerűsíti a Kubernetes-fürtökön futó alkalmazások üzembe helyezését és kezelését. Az Open Liberty operátorral vagy a WebSphere Liberty Operátorral fejlettebb műveleteket is végrehajthat, például nyomkövetéseket és memóriaképeket gyűjthet.

Az Open Libertyről további információt az Open Liberty projekt oldalán talál. Az IBM WebSphere Libertyről további információt a WebSphere Liberty termékoldalán talál.

Ez a cikk részletes útmutató az Open/WebSphere Liberty Azure-on való futtatásához. Az AKS-be való utazást felgyorsító automatizáltabb megoldásért lásd : Java-alkalmazás üzembe helyezése Open Liberty/WebSphere Liberty használatával egy Azure Kubernetes Service-fürtön (AKS- fürtön).

Ez a cikk segítséget nyújt az üzembe helyezés gyors elvégzéséhez. Mielőtt éles környezetben járnál, érdemes megismerkedned a Tuning Liberty-et.

Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.

Előfeltételek

  • Helyi gép előkészítése Windows, macOS vagy Linux rendszerrel.
  • Telepítse az Azure CLI-t. Ha Windows vagy macOS rendszeren fut, fontolja meg az Azure CLI docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
  • Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata és kezelése az Azure CLI-vel.
  • Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet. Ehhez a cikkhez legalább az Azure CLI 2.31.0-s verziója szükséges.
  • Telepítse a Java Standard kiadás 17-es vagy újabb verzióját (például Eclipse Open J9).
  • Telepítse a Maven 3.5.0-s vagy újabb verzióját.
  • Telepítse a Dockert az operációs rendszerhez.
  • Győződjön meg arról, hogy a Git telepítve van.
  • Győződjön meg arról, hogy a Owner szerepkör vagy az Contributor előfizetés szerepkörei és User Access Administrator szerepkörei vannak hozzárendelve. A hozzárendelés ellenőrzéséhez kövesse az Azure-szerepkör-hozzárendelések listázásának lépéseit az Azure Portalon.

Feljegyzés

A cikkben szereplő parancsokat az Azure Cloud Shellből is futtathatja. Ez a megközelítés az összes előfeltétel-eszközt előre telepítette, a Docker kivételével.

Bejelentkezés az Azure-ba

Ha még nem tette meg, jelentkezzen be az Azure-előfizetésbe az az login paranccsal, és kövesse a képernyőn megjelenő utasításokat.

az login

Feljegyzés

A Legtöbb Azure CLI-parancsot ugyanúgy futtathatja a PowerShellben, mint a Bashben. A különbség csak változók használatakor létezik. A következő szakaszokban a különbséget szükség esetén különböző lapokban oldjuk meg.

Ha több Azure-bérlő van társítva az Azure-beli hitelesítő adataihoz, meg kell adnia, hogy melyik bérlőbe szeretne bejelentkezni. Ezt a beállítással --tenant teheti meg. Például: az login --tenant contoso.onmicrosoft.com.

Erőforráscsoport létrehozása

Az Azure-erőforráscsoport olyan logikai csoport, amelyben az Azure-erőforrások üzembe helyezése és kezelése zajlik.

Hozzon létre egy java-liberty-project nevű erőforráscsoportot az eastus helyen található az group create paranccsal. Ezt az erőforráscsoportot később az Azure Container Registry (ACR) példány és az AKS-fürt létrehozásához használják.

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

ACR-példány létrehozása

Az ACR-példány létrehozásához használja az az acr create parancsot. Az alábbi példa létrehoz egy youruniqueacrname nevű ACR-példányt. Győződjön meg arról, hogy a név egyedi az Azure-ban.

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

Rövid idő elteltével megjelenik egy JSON-kimenet, amely a következő sorokat tartalmazza:

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

Csatlakozás az ACR-példányhoz

Mielőtt leküldhet egy képet, be kell jelentkeznie az ACR-példányba. Futtassa a következő parancsokat a kapcsolat ellenőrzéséhez:

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

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

Ha sikeresen bejelentkezett az ACR-példányba, a parancs kimenetének végén kell megjelennie Login Succeeded .

AKS-fürt létrehozása

Használja az az aks create parancsot egy AKS-fürt létrehozásához. A következő példa egy myAKSCluster nevű fürtöt hoz létre egy csomóponttal. A parancs végrehajtása több percet vesz igénybe.

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

Néhány perc elteltével a parancs befejezi és visszaadja a fürt JSON-formátumú adatait, beleértve a következő kimenetet:

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

Csatlakozás az AKS-fürthöz

Kubernetes-fürt kezeléséhez a Kubectl, a Kubernetes parancssori ügyfelet kell használnia. A helyi telepítéshez kubectl használja az az aks install-cli parancsot az alábbi példában látható módon:

az aks install-cli

Az az aks get-credentials paranccsal konfigurálható kubectl a Kubernetes-fürthöz való csatlakozásra. Ez a parancs letölti a hitelesítő adatokat, és konfigurálja a Kubernetes parancssori felületét a használatukhoz.

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

Feljegyzés

A fenti parancs az alapértelmezett helyet használja a Kubernetes konfigurációs fájlhoz, amely az ~/.kube/config. A Kubernetes konfigurációs fájljának más helyét is megadhatja a használatával --file.

A fürthöz való csatlakozás ellenőrzéséhez használja a kubectl get parancsot a fürtcsomópontok listájának lekéréséhez.

kubectl get nodes

A következő példakimenet az előző lépésekben létrehozott csomópontot mutatja be. Győződjön meg arról, hogy a csomópont állapota készen áll:

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

Azure SQL Database-adatbázis létrehozása

Ebben a szakaszban egyetlen Azure SQL Database-adatbázist hoz létre az alkalmazással való használatra.

Hozzon létre egyetlen adatbázist az Azure SQL Database-ben az Azure CLI- vagy PowerShell-lépések követésével a következő rövid útmutatóban : Önálló Azure SQL Database-adatbázis létrehozása. A cikk végighaladtával kövesse az alábbi utasításokat, majd térjen vissza ehhez a dokumentumhoz az adatbázis-kiszolgáló létrehozása és konfigurálása után.

  1. Amikor eléri a gyorsútmutató Paraméterértékek beállítása szakaszát, írja le az összes változót Variable blocka kód példájában, beleértve locationa , resourceGroup,database, server, loginés password. Ez a cikk az adatbázisra resourceGroup hivatkozik.<db-resource-group>

  2. Az adatbázis-kiszolgáló létrehozása után lépjen az újonnan létrehozott kiszolgálóra az Azure Portalon. A Hálózatkezelés panel Csatlakozás tivitás lapján állítsa a TLS minimális verzióját TLS 1.0-ra.

    Képernyőkép az SQL Database hálózati TLS 1.0 konfigurálásáról.

  3. A Hálózatkezelés panel Nyilvános hozzáférés lapján válassza az Azure-szolgáltatások és -erőforrások hozzáférésének engedélyezése a kiszolgálóhoz.

    Képernyőkép a tűzfalszabályokról – Az Azure-erőforrások hozzáférésének engedélyezése.

  4. Ha helyileg szeretné tesztelni az alkalmazást, győződjön meg arról, hogy az ügyfél IPv4-címe szerepel a tűzfalszabályok engedélyezési listáján

    Képernyőkép a tűzfalszabályokról – ügyfélhozzáférés engedélyezése.

  5. Mentse a hálózati módosításokat.

  6. Az alábbi paranccsal hozzon létre környezeti változót az adatbázis erőforráscsoportjának nevéhez:

    export DB_RESOURCE_GROUP_NAME=<db-resource-group>
    

Most, hogy létrehozta az adatbázist és az AKS-fürtöt, előkészítheti az AKS-t a Liberty üzemeltetésére.

Open Liberty-operátor telepítése

A fürt létrehozása és csatlakoztatása után telepítse az Open Liberty Operátort.

Telepítse az Open Liberty Operátort az alábbi parancsok futtatásával:

# Install cert-manager Operator
CERT_MANAGER_VERSION=v1.11.2
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.yaml

# Install Open Liberty Operator
export OPERATOR_VERSION=1.2.2
mkdir -p overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/olo-all-namespaces.yaml -q -P ./overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/cluster-roles.yaml -q -P ./overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/kustomization.yaml -q -P ./overlays/watch-all-namespaces
mkdir base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/kustomization.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-crd.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-operator.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-roles.yaml -q -P ./base
kubectl create namespace open-liberty
kubectl apply --server-side -k overlays/watch-all-namespaces

Az alkalmazás lemezképének konfigurálása és létrehozása

Ha a Liberty-alkalmazást az AKS-fürtön szeretné üzembe helyezni és futtatni, tárolóba helyezheti az alkalmazást Docker-rendszerképként Open Liberty-tárolórendszerképek vagy WebSphere Liberty-tárolólemezképek használatával.

A mintaalkalmazás Liberty-futtatókörnyezetben való üzembe helyezéséhez kövesse az ebben a szakaszban leírt lépéseket. Ezek a lépések a Mavent használják.

Az alkalmazás kivétele

Klónozza az útmutató mintakódját. A minta a GitHubon található. Van néhány minta az adattárban. Ez a cikk java-appot használ. Itt találja az alkalmazás fájlstruktúráját.

git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
git checkout 20230830

Ha "leválasztott HEAD" állapotú üzenet jelenik meg, ezt az üzenetet nyugodtan figyelmen kívül hagyhatja. Ez csak azt jelenti, hogy kivett egy címkét.

java-app
├─ src/main/
│  ├─ aks/
│  │  ├─ db-secret.yaml
│  │  ├─ openlibertyapplication.yaml
│  ├─ docker/
│  │  ├─ Dockerfile
│  │  ├─ Dockerfile-wlp
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ pom.xml

A java, az erőforrások és a webalkalmazás könyvtárai tartalmazzák a mintaalkalmazás forráskódját. A kód deklarál és használ egy nevű jdbc/JavaEECafeDBadatforrást.

Az aks könyvtárban két üzembehelyezési fájl található. db-secret.xml a Kubernetes Titkos kulcsok adatbázis-kapcsolat hitelesítő adataival való létrehozásához használható. Az openlibertyapplication.yaml fájl az alkalmazás lemezképének üzembe helyezésére szolgál. A Docker könyvtárban két fájl található az alkalmazás lemezképének létrehozásához az Open Liberty vagy a WebSphere Liberty használatával.

A címtárbeli szabadság/konfigurációban a server.xml az Open Liberty és a WebSphere Liberty fürt adatbázis-kapcsolatának konfigurálására szolgál.

A projekt felépítése

Most, hogy összegyűjtötte a szükséges tulajdonságokat, létrehozhatja az alkalmazást. A projekt POM-fájlja számos változót olvas be a környezetből. A Maven-build részeként ezek a változók az src/main/aks fájlban található YAML-fájlok értékeinek feltöltésére szolgálnak. Ha szeretné, a Mavenen kívül is elvégezhet hasonlót az alkalmazáshoz.

cd <path-to-your-repo>/java-app

# The following variables will be used for deployment file generation into target/
export LOGIN_SERVER=${LOGIN_SERVER}
export REGISTRY_NAME=${REGISTRY_NAME}
export USER_NAME=${USER_NAME}
export PASSWORD=${PASSWORD}
export DB_SERVER_NAME=<Server name>.database.windows.net
export DB_NAME=<Database name>
export DB_USER=<Server admin login>@<Server name>
export DB_PASSWORD=<Server admin password>

mvn clean install

(Nem kötelező) Projekt helyi tesztelése

Most már futtathatja és tesztelheti a projektet helyileg, mielőtt üzembe helyeznénk az Azure-ban. A kényelem érdekében használja a liberty-maven-plugin. Ha többet szeretne megtudni a webalkalmazásról, olvassa el a liberty-maven-pluginWebalkalmazás létrehozása a Mavennel című témakört. Az alkalmazáshoz bármilyen más mechanizmussal, például a helyi IDE-hez hasonlóan végezhet hasonló műveleteket. A tárolókkal való fejlesztésre szánt lehetőséget is használhatja liberty:devc . További liberty:devc információ a Szabadság-dokumentációban olvasható.

Feljegyzés

Ha kiszolgáló nélküli adatbázis-telepítést választott, ellenőrizze, hogy az SQL-adatbázis nem lépett-e szüneteltető módba. Ennek egyik módja, ha bejelentkezik az adatbázis-lekérdezésszerkesztőbe a rövid útmutatóban leírtak szerint: Az Azure SQL Database lekérdezéséhez használja az Azure Portal lekérdezésszerkesztőt (előzetes verzió).

  1. Indítsa el az alkalmazást a következővel liberty:run: . liberty:run az előző lépésben definiált környezeti változókat használja.

    cd <path-to-your-repo>/java-app
    mvn liberty:run
    
  2. Ellenőrizze, hogy az alkalmazás a várt módon működik-e. Ha sikeres, a parancs kimenetében hasonló [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds. üzenetnek kell megjelennie. http://localhost:9080/ Lépjen a böngészőbe, és ellenőrizze, hogy az alkalmazás elérhető-e, és minden függvény működik-e.

  3. A leállításhoz nyomja le a Ctrl C billentyűkombinációt+.

Rendszerkép létrehozása az AKS üzembe helyezéséhez

Most már futtathatja a docker buildx build parancsot a rendszerkép létrehozásához, ahogy az az alábbi példában is látható:

cd <path-to-your-repo>/java-app/target

# If you are running with Open Liberty
docker buildx --platform linux/amd64 build -t javaee-cafe:v1 --pull --file=Dockerfile .

# If you are running with WebSphere Liberty
docker buildx --platform linux/amd64 build -t javaee-cafe:v1 --pull --file=Dockerfile-wlp .

(Nem kötelező) A Docker-rendszerkép helyi tesztelése

Az Azure-ban való üzembe helyezés előtt az alábbi lépésekkel helyileg tesztelheti a Docker-rendszerképet.

  1. Futtassa a képet az alábbi paranccsal. Ez a parancs a korábban definiált környezeti változókat használja.

    docker run -it --rm -p 9080:9080 \
        -e DB_SERVER_NAME=${DB_SERVER_NAME} \
        -e DB_NAME=${DB_NAME} \
        -e DB_USER=${DB_USER} \
        -e DB_PASSWORD=${DB_PASSWORD} \
        javaee-cafe:v1
    
  2. A tároló elindítása után lépjen http://localhost:9080/ a böngészőbe az alkalmazás eléréséhez.

  3. A leállításhoz nyomja le a Ctrl C billentyűkombinációt+.

A rendszerkép feltöltése az ACR-be

Ezután töltse fel az elkészített képet az előző lépésekben létrehozott ACR-be.

Ha még nem tette meg, jelentkezzen be a tárolóregisztrációs adatbázisba az alábbi paranccsal:

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

A tárolólemezkép címkézéséhez és leküldéséhez használja az alábbi parancsokat:

docker tag javaee-cafe:v1 ${LOGIN_SERVER}/javaee-cafe:v1
docker push ${LOGIN_SERVER}/javaee-cafe:v1

Az alkalmazás üzembe helyezése az AKS-fürtben

A Liberty-alkalmazás az AKS-fürtön való üzembe helyezéséhez kövesse az alábbi lépéseket:

  1. Csatolja az ACR-példányt az AKS-fürthöz, hogy a rendszer hitelesítse az AKS-fürtöt, hogy lekérje a rendszerképet az ACR-példányból, ahogyan az az alábbi példában látható:

    az aks update \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $CLUSTER_NAME \
        --attach-acr $REGISTRY_NAME
    
  2. A következő parancsok futtatásával alkalmazza a adatbázis titkos kódjának és üzembehelyezési fájljának alkalmazását:

    cd <path-to-your-repo>/java-app/target
    
    # Apply DB secret
    kubectl apply -f db-secret.yaml
    
    # Apply deployment file
    kubectl apply -f openlibertyapplication.yaml
    
  3. A következő parancs futtatásával állapítsa meg, hogy a OpenLibertyApplication példány létrejön-e:

    kubectl get openlibertyapplication javaee-cafe-cluster
    

    A következő példához hasonló kimenetnek kell megjelennie:

    NAME                        IMAGE                                                   EXPOSED   RECONCILED   AGE
    javaee-cafe-cluster         youruniqueacrname.azurecr.io/javaee-cafe:1.0.25         True         59s
    
  4. Az alábbi parancs futtatásával állapítsa meg, hogy az operátor által létrehozott üzembe helyezés készen áll-e:

    kubectl get deployment javaee-cafe-cluster --watch
    

    A következő példához hasonló kimenetnek kell megjelennie:

    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    javaee-cafe-cluster         0/3     3            0           20s
    
  5. Várjon, amíg megjelenik 3/3 az oszlop alatt és 3 az AVAILABLE oszlop alatt, majd a Ctrl C billentyűkombinációval +állítsa le az kubectl órafolyamatot.READY

Az alkalmazás tesztelése

Az alkalmazás futtatásakor a Kubernetes terheléselosztó szolgáltatása elérhetővé teszi az alkalmazás előtérét az interneten. Ez a folyamat eltarthat egy ideig.

A folyamat figyeléséhez használja a kubectl get service parancsot az --watch argumentummal, ahogyan az a következő példában is látható:

kubectl get service javaee-cafe-cluster --watch

A következő példához hasonló kimenetnek kell megjelennie:

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

Miután a KÜLSŐ-IP-cím függőben lévőről tényleges nyilvános IP-címre változott, a Ctrl C billentyűkombinációval+ állítsa le a kubectl figyelés folyamatát.

Ha a szakasz lépéseinek végrehajtása és az előző lépés végrehajtása között eltelt némi idő, szükség esetén győződjön meg arról, hogy az adatbázis aktív. Tekintse meg az adatbázis-szüneteltetésről szóló előző megjegyzést.

Nyisson meg egy webböngészőt a szolgáltatás külső IP-címére (52.152.189.57 a fenti példában) az alkalmazás kezdőlapjának megtekintéséhez. Ha a lap nincs megfelelően betöltve, az azért van, mert az alkalmazás elindul. Várhat egy ideig, és később frissítheti a lapot. Az alkalmazásreplikák podneve a lap bal felső sarkában jelenik meg. Várjon néhány percet, és frissítse a lapot, hogy egy másik podnevet jelenítsen meg az AKS-fürt által biztosított terheléselosztás miatt.

A Java liberty-alkalmazás sikeresen üzembe lett helyezve az AKS-en.

Feljegyzés

Az alkalmazás jelenleg nem használ HTTPS-t. Javasoljuk, hogy a TLS-t saját tanúsítványokkal engedélyezze. További információ: A TLS használata bejövőforgalom-vezérlővel az Azure Kubernetes Service-ben (AKS).

Az erőforrások eltávolítása

Az Azure-díjak elkerülése érdekében törölje a felesleges erőforrásokat. Ha a fürtre már nincs szükség, az az group delete paranccsal távolítsa el az erőforráscsoportot, a tárolószolgáltatást, a tárolóregisztrációs adatbázist, az adatbázist és az összes kapcsolódó erőforrást.

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

Következő lépések

Az útmutatóban használt hivatkozásokból többet is megtudhat: