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 részletes útmutatót nyújt az Open/WebSphere Liberty Azure-on való futtatásához.
Ez a cikk a következő feladatok elvégzését ismerteti:
- Futtassa a Java, Java EE, Jakarta EE vagy 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 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).
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 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 szeretne visszajelzést küldeni vagy szorosan együttműködni a migrálási forgatókönyvekkel a WebSphere Azure-megoldásokon fejlesztő mérnöki csapatával, töltse ki ezt a rövid felmérést a WebSphere migrálásáról , és adja meg a kapcsolattartási adatait. A programmenedzserek, építészek és mérnökök csapata azonnal kapcsolatba lép Önnel, hogy szoros együttműködést kezdeményezze.
Előfeltételek
- Azure-előfizetés. 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.
- 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 (SE) 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 azContributor
előfizetés szerepkörei ésUser 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. A kapcsolat ellenőrzéséhez használja az alábbi parancsokat:
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.
Amikor eléri a rövid útmutató Paraméterértékek beállítása szakaszát, másolja és mentse el a kód példájában
Variable block
szereplő összes változó értékeit, beleértvelocation
a ,resourceGroup
,database
,server
,login
éspassword
. Ez a cikk az adatbázisraresourceGroup
hivatkozik.<db-resource-group>
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 Kapcsolat lapján állítsa a TLS minimális verzióját TLS 1.0-ra.
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.
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
Mentse a hálózati módosításokat.
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/JavaEECafeDB
adatforrást.
Az aks könyvtárban két üzembehelyezési fájl található. db-secret.xml kubernetes-titkos kulcsok adatbázis-kapcsolati hitelesítő adatokkal való létrehozására szolgál. 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 szabadság/konfiguráció könyvtárban 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 are 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-plugin
Webalkalmazá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ó).
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
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.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.
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
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.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:
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
Az adatbázis titkos kódjának és üzembehelyezési fájljának alkalmazása az alábbi parancsok futtatásával:
cd <path-to-your-repo>/java-app/target # Apply database secret kubectl apply -f db-secret.yaml # Apply deployment file kubectl apply -f openlibertyapplication.yaml
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
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
Várjon, amíg megjelenik
3/3
az oszlop alatt és3
azAVAILABLE
oszlop alatt, majd a Ctrl C billentyűkombinációval +állítsa le azkubectl
ó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.
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:
- Azure Kubernetes Service
- Open Liberty
- Open Liberty Operátor
- A Liberty Server konfigurációjának megnyitása
- Liberty Maven beépülő modul
- Open Liberty Container Images
- WebSphere Liberty-tárolórendszerképek
Az Azure Cache for Redis Java-alkalmazásba való beépítéséhez lásd: Az Azure Cache for Redis használata Java-ban Redisson Redis-ügyféllel.
A WebSphere-termékek Azure-beli futtatásának lehetőségeiről további információt a WebSphere termékcsalád Azure-beli futtatására vonatkozó megoldások című témakörben talál .