Java-alkalmazás üzembe helyezése Open Liberty vagy WebSphere Liberty használatával egy Azure Kubernetes Service-fürtön
Ez a cikk bemutatja, hogyan:
- Futtassa Java, Java Enterprise kiadás, Jakarta Enterprise kiadás vagy MicroProfile alkalmazását az Open Liberty vagy az IBM WebSphere Liberty futtatókörnyezetben.
- 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 Azure Kubernetes Service- (AKS-) fürtben az Open Liberty Operátor vagy a WebSphere Liberty Operátor használatával.
Az Open 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.
Ez a cikk az Open Liberty vagy a WebSphere Liberty Azure Marketplace-ajánlatát használja az AKS-be való utazás felgyorsításához. Az ajánlat automatikusan kiépít néhány Azure-erőforrást, többek között a következőket:
- Egy Azure Container Registry-példány.
- Egy AKS-fürt.
- Application Gateway Bejövőforgalom-vezérlő (AGIC) példány.
- Az Open Liberty operátor és a WebSphere Liberty Operátor.
- Opcionálisan egy tárolórendszerkép, amely tartalmazza a Libertyet és az alkalmazást.
Ha a Liberty AKS-en való futtatásához szeretne manuális, lépésenkénti útmutatást, olvassa el az Open Liberty vagy a WebSphere Liberty használatával rendelkező Java-alkalmazások manuális üzembe helyezését azure Kubernetes Service-fürtökön (AKS-fürtökön) ismertető témakört.
Ez a cikk segítséget nyújt az üzembe helyezés gyors elvégzéséhez. Mielőtt éles környezetben jár, tekintse meg az IBM Liberty hangolásával kapcsolatos dokumentációját.
Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.
Előfeltételek
- Telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, 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.
- Jelentkezzen be az Azure CLI-be az az login paranccsal. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
- 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 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. Ez a cikk az Azure CLI legalább 2.31.0-s verzióját igényli.
- 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 azContributor
előfizetés szerepkörei ésUser Access Administrator
szerepkörei vannak hozzárendelve. Ezt a felhasználó vagy csoport szerepkör-hozzárendeléseinek listázásával ellenőrizheti.
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.
- Ha az útmutató parancsait helyileg futtatja (az Azure Cloud Shell helyett):
- Helyi gép előkészítése Unix-szerű operációs rendszerrel (például Ubuntu, Azure Linux, 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 a
Owner
szerepkör vagy azContributor
előfizetés szerepkörei ésUser Access Administrator
szerepkörei vannak hozzárendelve. Ezt a felhasználó vagy csoport szerepkör-hozzárendeléseinek listázásával ellenőrizheti.
Liberty létrehozása AKS-alapú üzembe helyezéshez a portál használatával
Az alábbi lépések segítségével létrehozhat egy Liberty-futtatókörnyezetet az AKS-en. A lépések elvégzése után rendelkezni fog egy Container Registry-példánysal és egy AKS-fürtövel a tárolóalapú alkalmazás üzembe helyezéséhez.
Nyissa meg az Azure Portalt. A lap tetején található keresőmezőbe írja be az IBM Liberty kifejezést az AKS-en. Amikor megjelennek a javaslatok, válassza ki az egyet, és csak a Marketplace szakaszban egyezzen meg.
Ha szeretné, közvetlenül az ajánlathoz fordulhat.
Válassza a Létrehozás lehetőséget.
Az Alapismeretek panelen:
Új erőforráscsoport létrehozása. Mivel az erőforráscsoportoknak egyedinek kell lenniük egy előfizetésen belül, válasszon egy egyedi nevet. Az egyedi nevek egyszerű módja, ha a monogram, a mai dátum és valamilyen azonosító (például
ejb0913-java-liberty-project-rg
) kombinációját használják.Régió esetén válassza az USA keleti régióját.
Hozzon létre egy környezeti változót a rendszerhéjban a fürt és az adatbázis erőforráscsoport-neveihez:
export RESOURCE_GROUP_NAME=<your-resource-group-name>
Válassza a Tovább lehetőséget. Az AKS panelen lehetőség van meglévő AKS-fürt és Container Registry-példány kiválasztására ahelyett, hogy az üzembe helyezés újakat hoz létre. Ez a választás lehetővé teszi az oldalkocsi minta használatát, ahogyan az az Azure Architecture Centerben is látható. Az AKS-csomópontkészletben lévő virtuális gépek méretének és számának beállításait is módosíthatja.
A cikk alkalmazásában csak tartsa meg az összes alapértelmezett beállítást ezen a panelen.
Válassza a Tovább lehetőséget. A Terheléselosztás panelen, a Csatlakozás Azure-alkalmazás Átjáróhoz? lehetőség mellett válassza az Igen lehetőséget. Ebben a szakaszban a következő üzembehelyezési beállításokat szabhatja testre:
Virtuális hálózat és alhálózat esetén igény szerint testre szabhatja azt a virtuális hálózatot és alhálózatot, amelybe az üzembe helyezés helyezi az erőforrásokat. A fennmaradó értékeket nem kell módosítania az alapértelmezett értékektől.
TLS/SSL-tanúsítvány esetén megadhatja a TLS/SSL tanúsítványt Azure-alkalmazás Átjárótól. Hagyja meg az értékeket az alapértelmezett értékekkel, hogy az ajánlat önaláírt tanúsítványt hozzon létre.
Ne menjen éles környezetbe önaláírt tanúsítvánnyal. Az önaláírt tanúsítványokkal kapcsolatos további információkért lásd : Önaláírt nyilvános tanúsítvány létrehozása az alkalmazás hitelesítéséhez.
Kiválaszthatja a cookie-alapú affinitás engedélyezése, más néven ragadós munkamenetek lehetőséget. Ez a cikk ragadós munkameneteket használ, ezért mindenképpen válassza ezt a lehetőséget.
Válassza a Tovább lehetőséget. Az Operátor és az Alkalmazás panelen ez a cikk az összes alapértelmezett beállítást használja. A következő telepítési beállításokat azonban testre szabhatja:
- A WebSphere Liberty Operator üzembe helyezéséhez válassza az Igen lehetőséget az IBM által támogatott beállításhoz? Hagyja meg az alapértelmezett No deploys Open Liberty Operátort.
- Az Alkalmazás üzembe helyezése beállításhoz válassza az Igen lehetőséget az alkalmazás üzembe helyezésére szolgáló igen beállítás kiválasztásával a kiválasztott operátor számára. Az alapértelmezett Nem érték elhagyása nem helyez üzembe alkalmazásokat.
Válassza a Véleményezés + létrehozás lehetőséget a kiválasztott beállítások érvényesítéséhez. A Véleményezés + létrehozás panelen, amikor megjelenik, hogy a Létrehozás elérhetővé válik az ellenőrzés után, jelölje ki.
Az üzembe helyezés akár 20 percet is igénybe vehet. Amíg megvárja az üzembe helyezés befejezését, kövesse az Azure SQL Database-példány létrehozása című szakasz lépéseit. Miután elvégezte a szakaszt, térjen vissza ide, és folytassa.
A kiválasztott információk rögzítése az üzembe helyezésből
Ha az üzembe helyezéstől távolodva már folyamatban van, az alábbi lépések bemutatják, hogyan juthat vissza az adott panelre. Ha továbbra is azon a panelen van, amelyen az üzembe helyezés befejeződött, lépjen az újonnan létrehozott erőforráscsoportra, és ugorjon a harmadik lépésre.
Bármelyik portállap sarkában válassza a menügombot, majd válassza az Erőforráscsoportok lehetőséget.
Írja be a korábban létrehozott erőforráscsoport első néhány karakterét a szövegszűrővel ellátott mezőbe. Ha követte az ajánlott konvenciót, írja be a monogramját, majd válassza ki a megfelelő erőforráscsoportot.
Az erőforráscsoport erőforrásainak listájában válassza ki a Tárolóregisztrációs adatbázis típusértékével rendelkező erőforrást.
A navigációs ablak Gépház területén válassza az Access-kulcsokat.
Mentse a bejelentkezési kiszolgáló, a beállításjegyzék neve, a felhasználónév és a jelszó értékeit. Az egyes mezők melletti másolási ikonnal másolhatja az értéket a rendszer vágólapjára.
Térjen vissza ahhoz az erőforráscsoporthoz, amelyben üzembe helyezte az erőforrásokat.
A Gépház szakaszban válassza a Központi telepítések lehetőséget.
Válassza ki a listában a legalsó telepítést. Az üzembehelyezési név értéke megegyezik az ajánlat közzétevőjének azonosítójával. A sztringet
ibm
tartalmazza.A navigációs panelen válassza a Kimenetek lehetőséget.
Ha ugyanazt a másolási technikát használja, mint az előző értékeknél, mentse a következő kimenetek értékeit:
cmdToConnectToCluster
appDeploymentTemplateYaml
ha az üzembe helyezés nem tartalmaz alkalmazást. Vagyis a Nem az alkalmazás üzembe helyezéséhez? lehetőséget választotta a Marketplace-ajánlat üzembe helyezésekor.appDeploymentYaml
ha az üzembe helyezés tartalmaz egy alkalmazást. Vagyis az Igen lehetőséget választotta az alkalmazás üzembe helyezéséhez?.
Illessze be vagy
appDeploymentTemplateYaml
appDeploymentYaml
egy Bash-rendszerhéjba, fűzze hozzá| grep secretName
, és futtassa a parancsot.Ennek a parancsnak a kimenete a bejövő TLS titkos név, például
- secretName: secret785e2c
. Mentse félre azsecretName
értéket.
Ezeket az értékeket a cikk későbbi részében fogja használni. Vegye figyelembe, hogy a kimenetek számos más hasznos parancsot is felsorolnak.
Azure SQL Database-példány létrehozása
Ha önálló Azure SQL Database-adatbázist szeretne létrehozni az alkalmazással való használatra, kövesse a gyorsútmutató lépéseit : Egyetlen adatbázis létrehozása az Azure SQL Database-ben. Figyelje meg a következő különbségeket:
Az Alapszintű lépéseknél írja le az erőforráscsoport, az adatbázis neve, <a kiszolgálónév.database.windows.net>, a kiszolgálói rendszergazdai bejelentkezés és a jelszó értékeit. Ez a cikk az adatbázis erőforráscsoport-értékére
<db-resource-group>
hivatkozik.A hálózatkezelési lépésben állítsa a Csatlakozás ivity metódust nyilvános végpontra, állítsa az Azure-szolgáltatások és -erőforrások számára a kiszolgáló igen értékre való elérését, és állítsa az Aktuális ügyfél IP-címének hozzáadása igen értékre.
Feljegyzés
Az adatbázishoz kiválasztott kiszolgáló nélküli számítási szint pénzt takarít meg azáltal, hogy inaktív időszakokban alvó állapotba helyezi az adatbázist. A mintaalkalmazás sikertelen lesz, ha az adatbázis alvó állapotban van az alkalmazás indításakor.
Ha az adatbázist felébresztésre szeretné kényszeríteni, a lekérdezésszerkesztővel futtathat lekérdezést. Kövesse az adatbázis lekérdezésének lépéseit. Íme egy példa lekérdezés: SELECT * FROM COFFEE;
.
Hozzon létre egy környezeti változót a rendszerhéjban 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, folytathatja az AKS előkészítését az Open Liberty-alkalmazás üzemeltetésére.
A mintaalkalmazás konfigurálása és üzembe helyezése
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 a cikk mintakódját. A minta a GitHubon található.
Van néhány minta az adattárban. Ez a cikk java-appot/. A minta lekéréséhez futtassa a következő parancsokat:
git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
export BASE_DIR=$PWD
git checkout 20240220
Ha megjelenik egy üzenet arról, hogy "leválasztott HEAD" állapotban van, nyugodtan figyelmen kívül hagyhatja. Az üzenet csak azt jelenti, hogy kivett egy címkét.
Az alkalmazás fájlstruktúrája a következő:
java-app
├─ src/main/
│ ├─ aks/
│ │ ├─ db-secret.yaml
│ │ ├─ openlibertyapplication-agic.yaml
│ │ ├─ openlibertyapplication.yaml
│ │ ├─ webspherelibertyapplication-agic.yaml
│ │ ├─ webspherelibertyapplication.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 öt üzembehelyezési fájl található:
- db-secret.xml: Ezzel a fájllal kubernetes titkos kulcsokat hozhat létre adatbázis-kapcsolati hitelesítő adatokkal.
- openlibertyapplication-agic.yaml: Ezzel a fájllal telepítheti az Open Liberty alkalmazást az AGIC-vel. Ez a cikk feltételezi, hogy ezt a fájlt használja.
- openlibertyapplication.yaml: Ezt a fájlt akkor használja, ha az Open Liberty alkalmazást AGIC nélkül szeretné üzembe helyezni.
- webspherelibertyapplication-agic.yaml: Ezzel a fájllal telepítheti a WebSphere Liberty alkalmazást az AGIC-vel, ha a cikk korábbi részében üzembe helyezte a WebSphere Liberty Operátort.
- webspherelibertyapplication.yaml: Ezzel a fájllal telepítheti a WebSphere Liberty alkalmazást AGIC nélkül, ha a cikk korábbi szakaszában telepítette a WebSphere Liberty Operátort.
A Docker könyvtárban két fájl található az alkalmazás lemezképének létrehozásához:
- Dockerfile: Ezzel a fájllal hozhatja létre az alkalmazás lemezképét az Open Liberty használatával ebben a cikkben.
- Dockerfile-wlp: Ezzel a fájllal hozhatja létre az alkalmazás lemezképét a WebSphere Liberty használatával, ha a cikk korábbi részében üzembe helyezte a WebSphere Liberty Operátort.
A liberty/config könyvtárban a server.xml fájllal konfigurálhatja az Open Liberty és a WebSphere Liberty fürt adatbázis-kapcsolatát.
A projekt felépítése
Most, hogy rendelkezik a szükséges tulajdonságokkal, 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 $BASE_DIR/java-app
# The following variables are used for deployment file generation into the target.
export LOGIN_SERVER=<Azure-Container-Registry-Login-Server-URL>
export REGISTRY_NAME=<Azure-Container-Registry-name>
export USER_NAME=<Azure-Container-Registry-username>
export PASSWORD='<Azure-Container-Registry-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>'
export INGRESS_TLS_SECRET=<ingress-TLS-secret-name>
mvn clean install
(Nem kötelező) Projekt helyi tesztelése
A projekt helyi futtatása és tesztelése az Azure-ban való üzembe helyezés előtt. Az egyszerűség kedvéért ez a cikk a liberty-maven-plugin
. További liberty-maven-plugin
információ: Open Liberty-cikk Webalkalmazás létrehozása a Mavennel.
Az alkalmazás esetében bármilyen más mechanizmussal, például a helyi fejlesztési környezettel is 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ót az Open Liberty dokumentációjában talál.
Indítsa el az alkalmazást a következővel
liberty:run
: .liberty:run
A korábban definiált környezeti változókat is használja.cd $BASE_DIR/java-app mvn liberty:run
Ha a teszt sikeres, a parancs kimenetében megjelenőhöz
[INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds
hasonló üzenet jelenik meg. Nyissa meghttp://localhost:9080/
a böngészőben, és ellenőrizze, hogy az alkalmazás elérhető-e, és minden függvény működik-e.A leállításhoz válassza a Ctrl C billentyűkombinációt.+
Rendszerkép létrehozása az AKS üzembe helyezéséhez
Most már futtathatja a parancsot a docker build
rendszerkép létrehozásához:
cd $BASE_DIR/java-app/target
docker buildx build --platform linux/amd64 -t javaee-cafe:v1 --pull --file=Dockerfile .
(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 tesztelje a Docker-rendszerképet helyileg:
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 válassza a Ctrl C billentyűkombinációt.+
A rendszerkép feltöltése az Azure Container Registrybe
Töltse fel az elkészített lemezképet az ajánlatban létrehozott Container Registry-példányra:
docker tag javaee-cafe:v1 ${LOGIN_SERVER}/javaee-cafe:v1
docker login -u ${USER_NAME} -p ${PASSWORD} ${LOGIN_SERVER}
docker push ${LOGIN_SERVER}/javaee-cafe:v1
Az alkalmazás üzembe helyezése és tesztelése
Az alkalmazás üzembe helyezéséhez és teszteléséhez kövesse az alábbi lépéseket:
Csatlakozás az AKS-fürthöz.
Illessze be a rendszerhéj értékét
cmdToConnectToCluster
, és futtassa a parancsot.Az adatbázis titkos kódjának alkalmazása:
cd $BASE_DIR/java-app/target kubectl apply -f db-secret.yaml
A kimenet a következő:
secret/db-secret-sql created
.Az üzembehelyezési fájl alkalmazása:
kubectl apply -f openlibertyapplication-agic.yaml
Várjon, amíg az összes pod sikeresen újraindul az alábbi paranccsal:
kubectl get pods --watch
Az alábbi példához hasonló kimenet azt jelzi, hogy az összes pod fut:
NAME READY STATUS RESTARTS AGE javaee-cafe-cluster-agic-67cdc95bc-2j2gr 1/1 Running 0 29s javaee-cafe-cluster-agic-67cdc95bc-fgtt8 1/1 Running 0 29s javaee-cafe-cluster-agic-67cdc95bc-h47qm 1/1 Running 0 29s
Ellenőrizze az eredményeket:
Kérje le az alkalmazással üzembe helyezett bejövő erőforrás címét:
kubectl get ingress
Másolja ki a kimenet értékét
ADDRESS
. Ez az érték az üzembe helyezett Application Gateway-példány előtérbeli nyilvános IP-címe.Nyissa meg
https://<ADDRESS>
az alkalmazás tesztelését. Az Ön kényelme érdekében ez a rendszerhéjparancs létrehoz egy környezeti változót, amelynek értékét közvetlenül beillesztheti a böngészőbe:export APP_URL=https://$(kubectl get ingress | grep javaee-cafe-cluster-agic-ingress | cut -d " " -f14)/ echo $APP_URL
Ha a weblap nem jelenik meg megfelelően, vagy hibát ad
502 Bad Gateway
vissza, az alkalmazás továbbra is a háttérben indul el. Várjon néhány percet, majd próbálkozzon újra.
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 már nincs szüksége a fürtre, 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
A következő hivatkozásokból tudhat meg többet: