Megosztás:


Java-alkalmazás üzembe helyezése az Open Liberty használatával az Azure Container Appsben

Ez a cikk bemutatja, hogyan futtathatja az Open Libertyt az Azure Container Appsben. Ebben a cikkben a következő tevékenységeket hajtja végre:

  • Futtassa Java, Java Enterprise Edition (EE), Jakarta EE vagy MicroProfile alkalmazását az Open 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 az Azure Container Appsben.

További információ az Open Libertyről: Az Open Liberty projekt oldala. Ez a cikk segítséget nyújt az üzembe helyezés gyors elvégzéséhez. Mielőtt éles használat előtt lennél, érdemes megismerkedned a Tuning Liberty-t.

Ha szeretne visszajelzést küldeni, vagy szorosan együttműködni a migrálási forgatókönyvekkel a Java Azure-megoldásokat fejlesztő mérnöki csapatával, töltse ki ezt a rövid felmérést az Azure-beli migrálásró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

Bejelentkezés az Azure-ba

Jelentkezzen be az Azure-előfizetésbe az az login paranccsal, és kövesse a képernyőn megjelenő utasításokat.

az login

Megjegyzé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égeket szükség esetén különböző lapokon tárgyaljuk.

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. A bérlőt a --tenant lehetőséggel adhatja meg – például az login --tenant contoso.onmicrosoft.com.

Ha egyetlen bérlőn belül több előfizetéssel rendelkezik, győződjön meg arról, hogy azzal van bejelentkezve, amelyet használni szeretne a az account set --subscription <subscription-id>használatával.

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 a az group create hely eastus2 parancsával. Ezt az erőforráscsoportot később az Azure Container Registry (ACR) és az Azure Container Apps-példány létrehozásához használják.

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

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

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

Megjegyzés

Ez a cikk a Container Registry ajánlott jelszó nélküli hitelesítési mechanizmusát használja. A felhasználónevet és jelszót továbbra is lehet használni a docker login-val, miután a az acr credential show-et használták azok beszerzésére. A felhasználónév és a jelszó használata kevésbé biztonságos, mint a jelszó nélküli hitelesítés.

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

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

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

Ezután a következő paranccsal kérje le a Container Registry-példány bejelentkezési kiszolgálóját. Erre az értékre akkor van szüksége, ha az alkalmazás lemezképét később telepíti az Azure Container Appsben.

export ACR_LOGIN_SERVER=$(az acr show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $REGISTRY_NAME \
    --query 'loginServer' \
    --output tsv)

Környezet létrehozása

Az Azure Container Apps környezete biztonságos határt hoz létre a tárolóalkalmazások egy csoportja körül. Az ugyanabban a környezetben üzembe helyezett Tárolóalkalmazások ugyanabban a virtuális hálózaton vannak üzembe helyezve, és naplókat írnak ugyanarra a Log Analytics-munkaterületre. Környezet létrehozásához használja a az containerapp env create parancsot. Az alábbi példa egy youracaenvnamenevű környezetet hoz létre:

export ACA_ENV=youracaenvname
az containerapp env create \
    --resource-group $RESOURCE_GROUP_NAME \
    --location $LOCATION \
    --name $ACA_ENV

Ha a rendszer egy bővítmény telepítésére kéri, válaszoljon az Y válaszra.

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

"provisioningState": "Succeeded",
"type": "Microsoft.App/managedEnvironments"
"resourceGroup": "java-liberty-project",

Egyetlen adatbázis létrehozása az Azure SQL Database-ben

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

Először az alábbi parancsokkal állítsa be az adatbázissal kapcsolatos környezeti változókat. Cserélje le a <your-unique-sql-server-name> az Azure SQL Database-kiszolgáló egyedi nevére.

export SQL_SERVER_NAME=<your-unique-sql-server-name>
export DB_NAME=demodb

Ezután az alábbi parancsokkal hozzon létre egyetlen adatbázist az Azure SQL Database-ben, és állítsa be az aktuális bejelentkezett felhasználót Microsoft Entra-rendszergazdaként. További információ: rövid útmutató: Önálló adatbázis létrehozása – Azure SQL Database.

export ENTRA_ADMIN_NAME=$(az account show --query user.name --output tsv)

az sql server create \
    --name $SQL_SERVER_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --enable-ad-only-auth \
    --external-admin-principal-type User \
    --external-admin-name $ENTRA_ADMIN_NAME \
    --external-admin-sid $(az ad signed-in-user show --query id --output tsv)
az sql db create \
    --resource-group $RESOURCE_GROUP_NAME \
    --server $SQL_SERVER_NAME \
    --name $DB_NAME \
    --edition GeneralPurpose \
    --compute-model Serverless \
    --family Gen5 \
    --capacity 2

Ezután az alábbi parancsokkal adja hozzá a helyi IP-címet az Azure SQL Database server tűzfalszabályaihoz, hogy a helyi gép később helyi tesztelés céljából csatlakozzon az adatbázishoz.

export AZ_LOCAL_IP_ADDRESS=$(curl -s https://whatismyip.akamai.com)
az sql server firewall-rule create \
    --resource-group $RESOURCE_GROUP_NAME \
    --server $SQL_SERVER_NAME \
    --name AllowLocalIP \
    --start-ip-address $AZ_LOCAL_IP_ADDRESS \
    --end-ip-address $AZ_LOCAL_IP_ADDRESS

Megjegyzés

Biztonsági megfontolásokból olyan Azure SQL-kiszolgálót hoz létre, amelynek SQL-hitelesítése le van tiltva. A kiszolgáló hitelesítéséhez csak a Microsoft Entra-azonosítót használja a rendszer. Ha engedélyeznie kell az SQL-hitelesítést, tekintse meg az sql server create.

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

A Liberty-alkalmazás Azure Container Appsben való üzembe helyezéséhez és futtatásához tárolóba helyezheti az alkalmazást Docker-rendszerképként Open Liberty tárolórendszerképekhasználatával.

A mintaalkalmazást a Liberty futtatókörnyezetben szeretné üzembe helyezni? Kövesse az alábbi lépéseket ebben a szakaszban. Ezek a lépések a Mavent használják.

Tekintse meg az alkalmazást

Az útmutató mintakódjának előkészítéséhez használja az alábbi parancsokat. A minta a GitHubon található.

git clone https://github.com/Azure-Samples/open-liberty-on-aca.git
cd open-liberty-on-aca
export BASE_DIR=$PWD
git checkout 20250327

Ha az állapotról szóló detached HEAD üzenetet lát, ezt az üzenetet nyugodtan figyelmen kívül hagyhatja. Ez csak azt jelenti, hogy megnézett egy címkét.

Ez a cikk java-appot használ. Az alkalmazás fontos fájljainak fájlstruktúrája a következő:

java-app
├─ src/main/
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ Dockerfile
├─ pom.xml
├─ pom-azure-identity.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.

A java-app gyökérkönyvtárában található egy Dockerfile, amellyel létrehozhatja az alkalmazás lemezképét az Open Liberty használatával.

A liberty/config könyvtárban aserver.xml fájl az Open Liberty adatbázis-kapcsolatának konfigurálására szolgál. Egy változó, azure.sql.connectionstring, kerül definiálásra, amelyet az Azure SQL Database-hez való csatlakozáshoz használnak.

A pom.xml fájl a Maven projektobjektum-modell (POM) fájl, amely a projekt konfigurációs adatait tartalmazza. A pom-azure-identity.xml fájl deklarálja a azure-identity függőséget, amelyet a Microsoft Entra ID használatával az Azure-szolgáltatások hitelesítésére használnak.

Megjegyzés

Ez a minta azure-identity kódtárat használ az Azure SQL Database-ben a Microsoft Entra-hitelesítés használatával történő hitelesítéshez, amely biztonsági szempontok esetén ajánlott. Ha SQL-hitelesítést kell használnia a Liberty-alkalmazásban, tekintse meg JDBC-relációs adatbázis-kapcsolatokat.

A projekt felépítése

Az alkalmazás létrehozásához használja az alábbi parancsokat:

cd $BASE_DIR/java-app
mvn clean install
mvn dependency:copy-dependencies -f pom-azure-identity.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resources

Ha a build sikeres, a build végén az alábbihoz hasonló kimenetnek kell megjelennie.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  22.651 s
[INFO] Finished at: 2023-10-26T18:58:40-04:00
[INFO] ------------------------------------------------------------------------

Ha nem látja ezt a kimenetet, a folytatás előtt oldja meg és hárítsa el a problémát.

Projekt helyi tesztelése

A következő lépésekkel helyileg futtathatja és tesztelheti a projektet, 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.

Megjegyzé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. Az ellenőrzés végrehajtásának egyik módja, ha bejelentkezik az adatbázis-lekérdezésszerkesztőbe az rövid útmutatóban leírtak szerint: Az Azure SQL Databaseleké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: .

    cd $BASE_DIR/java-app
    
    # The value of environment variable AZURE_SQL_CONNECTIONSTRING is read by the configuration variable azure.sql.connectionstring in server.xml.
    export AZURE_SQL_CONNECTIONSTRING="jdbc:sqlserver://$SQL_SERVER_NAME.database.windows.net:1433;databaseName=$DB_NAME;authentication=ActiveDirectoryDefault"
    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 a [INFO] [AUDIT ] CWWKZ0001I: Application javaee-cafe started in 11.086 seconds. hasonló üzenetnek kell megjelennie. A böngészőben nyissa meg a http://localhost:9080/ annak ellenőrzéséhez, hogy az alkalmazás elérhető-e, és hogy az összes funkció működik-e.

  3. A leállításhoz nyomja le a Ctrl C billentyűkombinációt+. Válassza Y, ha arra kérik, hogy állítsa le a kötegelt feladatot.

Ha végzett, törölje azt a tűzfalszabályt, amely lehetővé teszi, hogy a helyi IP-cím hozzáférjen az Azure SQL Database-hez az alábbi paranccsal:

az sql server firewall-rule delete \
    --resource-group $RESOURCE_GROUP_NAME \
    --server $SQL_SERVER_NAME \
    --name AllowLocalIP

Rendszerkép létrehozása az Azure Container Apps üzembe helyezéséhez

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

cd $BASE_DIR/java-app

az acr build \
    --registry ${REGISTRY_NAME} \
    --image javaee-cafe:v1 \
    .

A az acr build parancs feltölti a Dockerfile-ban megadott összetevőket a Container Registry-példányba, létrehozza a lemezképet, és tárolja azt a Container Registry-példányban.

Az alkalmazás üzembe helyezése az Azure Container Appsben

Az alábbi parancsokkal létrehozhat egy Azure Container Apps-példányt az alkalmazás futtatásához, miután lekérte a rendszerképet az ACR-ből. Ez a példa létrehoz egy youracainstancenamenevű Azure Container Apps-példányt:

export ACA_NAME=youracainstancename
az containerapp create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $ACA_NAME \
    --image ${ACR_LOGIN_SERVER}/javaee-cafe:v1 \
    --environment $ACA_ENV \
    --registry-server $ACR_LOGIN_SERVER \
    --registry-identity system \
    --target-port 9080 \
    --ingress 'external' \
    --min-replicas 1

A sikeres kimenet egy JSON-objektum, beleértve a tulajdonságot "type": "Microsoft.App/containerApps"is.

Ezután csatlakoztassa az Azure SQL Database-kiszolgálót a tárolóalkalmazáshoz a Service Connector használatával az alábbi lépések végrehajtásával:

  1. Nyissa meg az Azure Portalt a böngészőben, és keresse meg az előző lépésben létrehozott Azure Container Apps-példányt.
  2. A navigációs ablakban válassza a Beállítások>szolgáltatás-összekötő (előzetes verzió) lehetőséget.
  3. Válassza a Create gombot. Ekkor megjelenik a Kapcsolat létrehozása előugró ablak.
  4. Az Alapszintű panel szolgáltatástípus esetén válassza az SQL Database lehetőséget. Ügyféltípus esetén válassza a Java lehetőséget. Hagyja meg a többi mezőt az alapértelmezett értékükön, majd válassza a Tovább: Hitelesítés lehetőséget.
  5. A Hitelesítés panel hitelesítési típusához válassza a Rendszer által hozzárendelt felügyelt identitást, majd válassza a Tovább: Hálózatkezelés lehetőséget.
  6. A Hálózatkezelés panelen válassza a Tovább: Véleményezés + létrehozás lehetőséget.
  7. A Véleményezés + létrehozás panelen várja meg, amíg az ellenőrzés befejeződik, majd válassza a Létrehozás a Cloud Shellen lehetőséget. Megnyílik a Cloud Shell, majd végrehajtja a parancsokat a kapcsolat létrehozásához. Várja meg, amíg a parancsok befejeződnek, majd zárja be a Cloud Shellt.

Megjegyzés

A Service Connector létrehoz egy titkos kulcsot a tárolóalkalmazásban, amely tartalmazza a AZURE_SQL_CONNECTIONSTRINGértékét, amely egy jelszó nélküli kapcsolati sztring az Azure SQL Database-hez. További információért tekintse meg az Azure SQL Database Service Connectorral való integrálásfelhasználó által hozzárendelt felügyelt identitás szakaszának mintaértékét.

Az alkalmazás tesztelése

Az alkalmazás eléréséhez használja a következő parancsot egy teljes körű URL-cím lekéréséhez:

echo https://$(az containerapp show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $ACA_NAME \
    --query properties.configuration.ingress.fqdn \
    --output tsv)

Az alkalmazás eléréséhez és teszteléséhez nyisson meg egy webböngészőt az URL-címre. Az alábbi képernyőképen a futó alkalmazás látható:

Képernyőkép az Azure Container Appsben sikeresen üzembe helyezett Java liberty-alkalmazásról.

Az erőforrások rendbetétele

Az Azure-díjak elkerülése érdekében törölje a felesleges erőforrásokat. Amikor a fürtre már nincs szükség, a az group delete paranccsal távolítsa el az erőforráscsoportot, a konténer-regisztert, a konténeralkalmazásokat, az adatbázis-kiszolgálót, valamint minden kapcsolódó erőforrást.

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

Következő lépések

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

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 .