Java Enterprise kiadás JCache használata Az Open Liberty vagy a WebSphere Liberty használatával egy Azure Kubernetes Service -fürtön

Ez a cikk bemutatja, hogyan használható a Java Enterprise kiadás JCache az AKS-ben üzembe helyezett tárolóalapú alkalmazásokban.

Ebben az útmutatóban a következőt fogja elkönyvelni:

  • Hozza létre az infrastruktúrát a Java, a Java Enterprise kiadás, a Jakarta Enterprise kiadás vagy a MicroProfile-alkalmazás Open Liberty vagy WebSphere Liberty futtatókörnyezetben való futtatásához.
  • Az Azure Cache for Redis által támogatott Java Enterprise kiadás JCache használata munkamenet-gyorsítótárként.
  • Az alkalmazás Docker-rendszerképének létrehozása Open Liberty- vagy WebSphere Liberty-tárolórendszerképek használatával.
  • Helyezze üzembe a tárolóalapú alkalmazást egy AKS-fürtben az Open Liberty Operátor használatával.

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

  • Ez a cikk az Azure CLI legújabb verzióját igényli. Ha Az Azure Cloud Shellt használja, a legújabb verzió már telepítve van.
  • Ha az útmutatóban található parancsokat helyileg futtatja (az Azure Cloud Shell helyett):
    • Készítsen elő egy helyi gépet Unix-szerű operációs rendszerrel (például Ubuntu, macOS, Linuxos Windows-alrendszer).
    • 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 az előfizetéshez szerepkör vagy OwnerContributorUser Access Administrator szerepkör van hozzárendelve. A hozzárendelések ellenőrzéséhez kövesse a felhasználók vagy csoportok szerepkör-hozzárendeléseinek listázása lépéseit.

Az infrastruktúra létrehozása

Az ebben a szakaszban ismertetett lépések segítségével létrehozhatja az alkalmazásinfrastruktúrát az Azure-ban. A lépések elvégzése után egy Azure Container Registry, egy Azure Kubernetes Service-fürt és egy Azure Cache for Redis-példány fog rendelkezni a mintaalkalmazás futtatásához.

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 fogja használni az Azure Container Registry (ACR) példány és az AKS-fürt létrehozásához.

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 látnia kell egy JSON-kimenetet, amely a következőket tartalmazza:

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

Másik lehetőségként létrehozhat egy Azure-tárolóregisztrációs adatbázispéldányt a gyorsútmutató lépéseit követve: Azure-tárolóregisztrációs adatbázis létrehozása az Azure Portal használatával.

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 \
    --resource-group $RESOURCE_GROUP_NAME \
    --query 'loginServer' \
    --output tsv)
export USER_NAME=$(az acr credential show \
    --name $REGISTRY_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --query 'username' \
    --output tsv)
export PASSWORD=$(az acr credential show \
    --name $REGISTRY_NAME \
    --resource-group $RESOURCE_GROUP_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 .

Ha problémát tapasztal az Azure-tárolóregisztrációs adatbázisba való bejelentkezéskor, olvassa el a beállításjegyzék-bejelentkezés hibaelhárításával kapcsolatos témakört.

AKS-fürt létrehozása

Az az aks create paranccsal hozzon létre egy AKS-fürtöt, és adjon neki lemezkép-lekérési engedélyt az ACR-példányból. 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 \
    --attach-acr $REGISTRY_NAME

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

  "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. Ha az Azure Cloud Shellt használja, kubectl már telepítve van. A helyi telepítéshez kubectl használja az az aks install-cli parancsot:

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

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

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

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

Azure Cache for Redis-példány létrehozása

Az Azure Cache for Redis egy Open Liberty- vagy WebSphere Liberty-kiszolgálón futó Java-alkalmazás megőrzését HttpSession nyújtja vissza. Az ebben a szakaszban ismertetett lépéseket követve hozzon létre egy Azure Cache for Redis-példányt, és jegyezze fel annak kapcsolati adatait. Ezt az információt később fogjuk használni.

  1. Kövesse a rövid útmutató lépéseit: Az Azure Cache for Redis használata Java nyelven, de a Java-minta megértését nem beleértve.

  2. Másolja ki az Azure Cache for Redis-példány gazdagépnevét és elsődleges hozzáférési kulcsát , majd futtassa a következő parancsokat a környezeti változók hozzáadásához:

    export REDISCACHEHOSTNAME=<YOUR_HOST_NAME>
    export REDISCACHEKEY=<YOUR_PRIMARY_ACCESS_KEY>
    

Az alkalmazás létrehozása

A mintaalkalmazás létrehozásához és tárolózásához kövesse az ebben a szakaszban leírt lépéseket. Ezek a lépések a Maven és liberty-maven-pluginaz az acr buildet használják. 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ás kivétele

Az alábbi parancsokkal klónozza az útmutató mintakódját. A minta a GitHub open-liberty-on-aks adattárában található. Van néhány minta az adattárban. Ez a cikk java-app-jcache-t használ.

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

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.

Az alkalmazás a következő fájlstruktúrával rendelkezik:

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

A java, az erőforrások és a webalkalmazás-könyvtárak tartalmazzák a mintaalkalmazás forráskódját.

Az aks könyvtárban az openlibertyapplication.yaml telepítési fájl az alkalmazás lemezképének üzembe helyezésére szolgál.

A Docker könyvtárban két Docker-fájlt helyezünk el. A Dockerfile az Open Liberty és a Dockerfile-wlp rendszerképek létrehozására szolgál a WebSphere Liberty használatával.

A liberty/config könyvtárban a server.xml fájl az Open Liberty és a WebSphere Liberty fürt munkamenet-gyorsítótárának konfigurálására szolgál.

A redisson könyvtárban a redisson-config.yaml fájl az Azure Cache for Redis-példány kapcsolatának konfigurálására szolgál.

Az alkalmazás tárolóba helyezése

Ha a Liberty-alkalmazást az AKS-fürtön szeretné üzembe helyezni és futtatni, az alábbi lépésekkel tárolózhatja az alkalmazást Docker-rendszerképként. Open Liberty-tárolórendszerképeket vagy WebSphere Liberty-tárolólemezképeket is használhat.

  1. Módosítsa a könyvtárat a helyi klón java-app-jcache elemére.

  2. Futtassa mvn clean package az alkalmazás csomagolásához.

  3. Futtassa mvn -Predisson validate a Redisson konfigurációs fájl másolását a megadott helyre. Ez a lépés beszúrja a környezeti változók értékeit REDISCACHEHOSTNAME a REDISCACHEKEY redisson-config.yaml fájlba, amelyre a server.xml fájl hivatkozik.

  4. Futtassa mvn liberty:dev az alkalmazást. Ha a teszt sikeres, a parancs kimenetében kell megjelennie The defaultServer server is ready to run a smarter planet. . Ha a Redis-kapcsolat sikeres, az alábbihoz hasonló kimenetnek kell megjelennie.

    [INFO] [err] [Default Executor-thread-5] INFO org.redisson.Version - Redisson 3.16.7
    [INFO] [err] [redisson-netty-2-2] INFO org.redisson.connection.pool.MasterPubSubConnectionPool - 1 connections initialized for redacted.redis.cache.windows.net/20.25.90.239:6380
    [INFO] [err] [redisson-netty-2-20] INFO org.redisson.connection.pool.MasterConnectionPool - 24 connections initialized for redacted.redis.cache.windows.net/20.25.90.239:6380
    
  5. http://localhost:9080/ Megtekintheti, hogy az alkalmazás fut-e, de a Redis működésének bizonyítéka az előző lépésben felsorolt kimenet.

  6. A Ctrl+C billentyűkombinációval állítsa le az alkalmazást.

  7. Az alábbi parancsokkal lekérheti az pom.xml fájlban definiált tulajdonságok artifactIdversion értékeit.

    export artifactId=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.artifactId}' --non-recursive exec:exec)
    export version=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
    
  8. Futtassa cd target a könyvtárat a minta buildjének módosításához.

  9. Futtassa az alábbi parancsok egyikét az alkalmazás lemezképének létrehozásához és az ACR-példányba való leküldéséhez.

    • Az alábbi paranccsal létrehozhat egy Open Liberty-alaprendszerképet, ha az Open Liberty-t szeretné egyszerűbb nyílt forráskód Java-futtatókörnyezetként™ használni:

      # 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 --resource-group $RESOURCE_GROUP_NAME .
      
    • Ha az Open Liberty kereskedelmi verzióját szeretné használni, használja a következő parancsot a WebSphere Liberty alaprendszerképével való buildeléshez:

      # 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 --resource-group $RESOURCE_GROUP_NAME --file=Dockerfile-wlp .
      

Az alkalmazás üzembe helyezése

A tárolóalapú mintaalkalmazás AKS-fürtön való üzembe helyezéséhez kövesse az ebben a szakaszban leírt lépéseket.

  1. Ellenőrizze, hogy az aktuális munkakönyvtár java-app-jcache/target-e a helyi klónban.

  2. Az alábbi parancsokkal hozzon létre egy titkos kulcsot Redisson konfigurációs adataival. Ezzel a titkos kóddal az alkalmazás csatlakozhat a létrehozott Azure Cache for Redis-példányhoz.

    export REDISSON_CONFIG_SECRET_NAME=redisson-config-secret
    kubectl create secret generic ${REDISSON_CONFIG_SECRET_NAME} --from-file=$(pwd)/liberty/wlp/usr/servers/defaultServer/redisson-config.yaml
    
  3. Az alábbi parancsokkal három replikával helyezheti üzembe a Liberty-alkalmazást az AKS-fürtön. A parancs kimenete beágyazottan is megjelenik.

    # Set number of application replicas
    export REPLICAS=3
    
    # Create OpenLibertyApplication "javaee-cafe-jcache-cluster"
    envsubst < openlibertyapplication.yaml | kubectl create -f -
    
    openlibertyapplication.openliberty.io/javaee-cafe-jcache-cluster created
    
    # Check if OpenLibertyApplication instance is created
    kubectl get openlibertyapplication ${artifactId}-cluster
    
    NAME                               IMAGE                                                         EXPOSED      RECONCILED   AGE
    javaee-cafe-jcache-cluster         youruniqueacrname.azurecr.io/javaee-cafe-jcache:1.0.0                      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-jcache-cluster         0/3     3            0           20s
    
  4. Várjon, amíg megjelenik 3/3 az READY oszlop alatt és 3 az AVAILABLE oszlop alatt, majd a Ctrl+C billentyűkombinációval állítsa le az kubectl órafolyamatot.

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 állapotának monitorozásához használja kubectl get service parancsot a --watch argumentummal.

kubectl get service ${artifactId}-cluster --watch

NAME                               TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
javaee-cafe-jcache-cluster         LoadBalancer   10.0.50.29     20.84.16.169    80:31732/TCP     68s

Ha a külső IP-cím függőben lévőről tényleges nyilvános IP-címre változik, a Ctrl+C billentyűkombinációval állítsa le a kubectl figyelés folyamatát.

Nyisson meg egy webböngészőt a szolgáltatás külső IP-címére (20.84.16.169 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. Ekkor megjelenik az alkalmazásreplikák podneve a lap bal felső sarkában (javaee-cafe-jcache-cluster-77d54bccd4-5xnzx ebben az esetben).

Képernyőkép az A K S-n sikeresen üzembe helyezett Java Liberty-alkalmazásról.

Az Új kávé a munkamenetben űrlapon adja meg a Név és ár mezők értékeit, majd válassza a Küldés lehetőséget. Néhány másodperc elteltével megjelenik a Küldés száma: 1 a lap bal alsó részén.

Képernyőkép az alkalmazás munkamenetében létrehozott és megtartott új kávéról.

Annak bemutatásához, hogy a munkamenet-gyorsítótár az alkalmazás összes replikájában megmarad, futtassa a következő parancsot az aktuális replika podnévvel javaee-cafe-jcache-cluster-<pod id from your running app>való törléséhez:

kubectl delete pod javaee-cafe-jcache-cluster-77d54bccd4-5xnzx

pod "javaee-cafe-jcache-cluster-77d54bccd4-5xnzx" deleted

Ezután frissítse az alkalmazás kezdőlapját. Ugyanazokat az adatokat fogja látni az Új kávé a munkamenetben szakaszban, de egy másik podnév jelenik meg a lap bal felső sarkában.

Végül az alábbi lépésekkel bizonyíthatja, hogy a munkamenet-adatok megmaradnak az Azure Cache for Redis-példányban. A Redis-konzol használatával parancsokat adhat ki az Azure Cache for Redis-példányhoz.

  1. Keresse meg az Azure Cache for Redis-példányt az Azure Portalon.

  2. Válassza a Konzol lehetőséget a Redis-konzol megnyitásához.

  3. Futtassa a következő parancsokat a munkamenet adatainak megtekintéséhez:

    scan 0 count 1000 match '*'
    
    hgetall "com.ibm.ws.session.attr.default_host%2F"
    
  4. Keressen rá a café.model.entity.Coffee[id=1, name=Coffee 3, price=30.0] weblapra, amely az Azure Cache for Redis-példányban létrehozott és tárolt kávé.

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 és az összes kapcsolódó erőforrást.

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

Az Azure Cache for Redis-példány törléséhez keresse meg az erőforráscsoport nevét, és futtassa a következő parancsot:

az group delete --name <AZURE_CACHE_FOR_REDIS_RESOURCE_GROUP_NAME> --yes --no-wait

Következő lépések

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