Nasazení aplikace v Javě s Open Liberty v Azure Container Apps
V tomto článku se dozvíte, jak spustit Open Liberty v Azure Container Apps. V tomto článku provedete následující aktivity:
- Spusťte svoji aplikaci Java, Java EE, Jakarta EE nebo MicroProfile v modulu runtime Open Liberty.
- Sestavte image Dockeru aplikace pomocí imagí kontejneru Liberty.
- Nasaďte kontejnerizovanou aplikaci do Azure Container Apps.
Další informace o aplikaci Open Liberty naleznete na stránce projektu Open Liberty. Další informace o PRODUKTU IBM WebSphere Liberty naleznete na stránce produktu WebSphere Liberty.
Tento článek vám pomůže rychle se dostat k nasazení. Než půjdete do produkce, měli byste prozkoumat Tuning Liberty.
Pokud chcete poskytnout zpětnou vazbu nebo úzce spolupracovat na scénářích migrace s technickým týmem, který vyvíjí webSphere v řešeních Azure, vyplňte tento krátký průzkum o migraci WebSphere a uveďte své kontaktní informace. Tým programových manažerů, architektů a inženýrů se s vámi okamžitě spojí a zahájí úzkou spolupráci.
Požadavky
- Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
- Připravte místní počítač s nainstalovaným operačním systémem Windows nebo Unix – například Ubuntu, macOS nebo Subsystém Windows pro Linux.
-
nainstalujte Azure CLI 2.62.0 nebo novější a spusťte příkazy Azure CLI.
- Přihlaste se pomocí Azure CLI pomocí příkazu
az login
. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení k Azure pomocí Azure CLI . - Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Použití a správa rozšíření pomocí Azure CLI.
- Spuštěním
az version
vyhledejte nainstalované verze a závislé knihovny. Pokud chcete upgradovat na nejnovější verzi, spusťteaz upgrade
.
- Přihlaste se pomocí Azure CLI pomocí příkazu
- Nainstalujte implementaci Java SE verze 17 – například sestavení OpenJDKMicrosoftu .
- Nainstalujte Maven 3.9.8 nebo novější.
- Ujistěte se, že je nainstalovaný Git .
Přihlášení k Azure
Přihlaste se ke svému předplatnému Azure pomocí příkazu az login
a postupujte podle pokynů na obrazovce.
az login
Poznámka:
Většinu příkazů Azure CLI můžete spustit v PowerShellu stejně jako v Bash. Rozdíl existuje pouze při použití proměnných. V následujících částech je rozdíl v případě potřeby vyřešený na různých kartách.
Pokud máte k přihlašovacím údajům Azure přidružených více tenantů Azure, musíte určit, ke kterému tenantovi se chcete přihlásit. Tenanta můžete zadat pomocí možnosti --tenant
, například az login --tenant contoso.onmicrosoft.com
.
Pokud máte více předplatných v rámci jednoho tenanta, ujistěte se, že jste přihlášeni pomocí toho předplatného, které chcete použít, prostřednictvím az account set --subscription <subscription-id>
.
Vytvoření skupiny zdrojů
Skupina prostředků Azure je logická skupina, ve které se nasazují a spravují prostředky Azure.
Vytvořte skupinu prostředků s názvem java-liberty-project
pomocí příkazu az group create
v umístění eastus2
. Tato skupina prostředků se použije později k vytvoření instance služby Azure Container Registry (ACR) a instance Azure Container Apps.
export RESOURCE_GROUP_NAME=java-liberty-project
az group create --name $RESOURCE_GROUP_NAME --location eastus2
Vytvoření instance ACR
K vytvoření instance ACR použijte příkaz az acr create
. Následující příklad vytvoří instanci ACR s názvem youruniqueacrname
. Ujistěte se, že youruniqueacrname
je v rámci Azure jedinečný.
Poznámka:
Tento článek používá doporučený mechanismus ověřování bez hesla pro Container Registry. K získání uživatelského jména a hesla je stále možné použít uživatelské jméno a heslo s docker login
po použití az acr credential show
. Použití uživatelského jména a hesla je méně bezpečné než ověřování bez hesla.
export REGISTRY_NAME=youruniqueacrname
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--name $REGISTRY_NAME \
--sku Basic
Po krátké době by se měl zobrazit výstup JSON, který obsahuje následující řádky:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "java-liberty-project",
Dále pomocí následujícího příkazu načtěte přihlašovací server pro instanci container Registry. Tuto hodnotu budete potřebovat, když později nasadíte image aplikace do Azure Container Apps.
export ACR_LOGIN_SERVER=$(az acr show \
--resource-group $RESOURCE_GROUP_NAME \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
Vytvořit prostředí
Prostředí v Azure Container Apps vytvoří zabezpečenou hranici kolem skupiny kontejnerových aplikací. KontejnerOvé aplikace nasazené do stejného prostředí se nasazují ve stejné virtuální síti a zapisují protokoly do stejného pracovního prostoru služby Log Analytics. K vytvoření prostředí použijte příkaz az containerapp env create
. Následující příklad vytvoří prostředí s názvem youracaenvname
:
export ACA_ENV=youracaenvname
az containerapp env create \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_ENV
Pokud se zobrazí výzva k instalaci rozšíření, odpovězte na Y.
Po krátké době by se měl zobrazit výstup JSON, který obsahuje následující řádky:
"provisioningState": "Succeeded",
"type": "Microsoft.App/managedEnvironments"
"resourceGroup": "java-liberty-project",
Vytvoření izolované databáze ve službě Azure SQL Database
V této části vytvoříte jednoúčelovou databázi ve službě Azure SQL Database pro použití s vaší aplikací.
Nejprve pomocí následujících příkazů nastavte proměnné prostředí související s databází. Nahraďte <your-unique-sql-server-name>
jedinečným názvem vašeho serveru Azure SQL Database.
export SQL_SERVER_NAME=<your-unique-sql-server-name>
export DB_NAME=demodb
Dále pomocí následujících příkazů vytvořte v Azure SQL Database jednu databázi a nastavte aktuální přihlášeného uživatele jako správce Microsoft Entra. Další informace najdete v tématu Rychlý start: Vytvoření izolované databáze – 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
Potom pomocí následujících příkazů přidejte místní IP adresu do pravidel brány firewall serveru služby Azure SQL Database, aby se místní počítač mohl připojit k databázi pro pozdější testování.
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
Poznámka:
Z hlediska zabezpečení vytvoříte Azure SQL server s vypnutým SQL ověřováním. K ověření na serveru se používá pouze ID Microsoft Entra. Pokud potřebujete povolit ověřování SQL, přečtěte si az sql server create
.
Konfigurace a sestavení image aplikace
Pokud chcete nasadit a spustit aplikaci Liberty ve službě Azure Container Apps, kontejnerizujte aplikaci jako image Dockeru pomocí open liberty container images.
Podle kroků v této části nasaďte ukázkovou aplikaci do modulu runtime Liberty. Tyto kroky používají Maven.
Podívejte se na aplikaci
Pomocí následujících příkazů připravte vzorový kód pro tuto příručku. Ukázka je na GitHubu.
git clone https://github.com/Azure-Samples/open-liberty-on-aca.git
cd open-liberty-on-aca
export BASE_DIR=$PWD
git checkout 20241118
Pokud se zobrazí zpráva o stavu detached HEAD
, je tato zpráva bezpečná pro ignorování. Znamená to jen, že jste se podívali na značku.
Tento článek používá java-app. Tady je struktura souborů důležitých souborů aplikace:
java-app
├─ src/main/
│ ├─ liberty/config/
│ │ ├─ server.xml
│ ├─ java/
│ ├─ resources/
│ ├─ webapp/
├─ Dockerfile
├─ Dockerfile-wlp
├─ pom.xml
├─ pom-azure-identity.xml
Adresáře java, resources a webová aplikace obsahují zdrojový kód ukázkové aplikace. Kód deklaruje a používá zdroj dat s názvem jdbc/JavaEECafeDB
.
V kořenovém adresáři aplikace v javě existují dva soubory pro vytvoření image aplikace s open Liberty nebo WebSphere Liberty.
V adresáři liberty/config se soubor server.xml používá ke konfiguraci připojení databáze pro cluster Open Liberty a WebSphere Liberty. Definuje proměnnou azure.sql.connectionstring
, která se používá pro připojení ke službě Azure SQL Database.
Soubor pom.xml je soubor objektového modelu projektu Maven (POM), který obsahuje informace o konfiguraci projektu. Soubor pom-azure-identity.xml deklaruje závislost azure-identity
, která se používá k ověřování ve službách Azure pomocí ID Microsoft Entra.
Poznámka:
Tato ukázka používá knihovnu azure-identity
k ověřování ve službě Azure SQL Database pomocí ověřování Microsoft Entra, která se doporučuje pro aspekty zabezpečení. Pokud potřebujete v aplikaci Liberty použít ověřování pomocí SQL, podívejte se na téma Připojení k relační databázi pomocíJDBC.
Sestavení projektu
K sestavení aplikace použijte následující příkazy:
cd $BASE_DIR/java-app
mvn clean install
mvn dependency:copy-dependencies -f pom-azure-identity.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resources
Pokud je sestavení úspěšné, měl by se na konci sestavení zobrazit výstup podobný následujícímu.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 22.651 s
[INFO] Finished at: 2023-10-26T18:58:40-04:00
[INFO] ------------------------------------------------------------------------
Pokud tento výstup nevidíte, před pokračováním problém vyřešte a vyřešte ho.
Místní testování projektu
Teď můžete pomocí následujících kroků spustit a otestovat projekt místně před nasazením do Azure. Pro usnadnění použití .liberty-maven-plugin
Další informace o této liberty-maven-plugin
funkci najdete v tématu Vytvoření webové aplikace pomocí Mavenu. Pro vaši aplikaci můžete udělat něco podobného pomocí jakéhokoli jiného mechanismu, jako je místní integrované vývojové prostředí (IDE).
Poznámka:
Pokud jste vybrali nasazení databáze bez serveru, ověřte, že vaše databáze SQL nepřešla do režimu pozastavení. Jedním ze způsobů, jak provést ověření, je přihlásit se k editoru databázových dotazů, jak je popsáno v rychlém startu : Použití editoru dotazů na webu Azure Portal (Preview) k dotazování služby Azure SQL Database.
Spusťte aplikaci pomocí
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
Ověřte, že aplikace funguje podle očekávání. V případě úspěchu by se ve výstupu příkazu měla zobrazit zpráva podobná
[INFO] [AUDIT ] CWWKZ0001I: Application javaee-cafe started in 11.086 seconds.
. Přejděte dohttp://localhost:9080/
v prohlížeči a ověřte, že je aplikace přístupná a že fungují všechny funkce.Stisknutím kláves Ctrl+C zastavte. Pokud se zobrazí výzva k ukončení dávkové úlohy, vyberte Y.
Po dokončení odstraňte pravidlo brány firewall, které umožňuje vaší místní IP adrese přistupovat ke službě Azure SQL Database pomocí následujícího příkazu:
az sql server firewall-rule delete \
--resource-group $RESOURCE_GROUP_NAME \
--server $SQL_SERVER_NAME \
--name AllowLocalIP
Sestavení image pro nasazení Azure Container Apps
Teď můžete spustit az acr build
příkaz pro sestavení image, jak je znázorněno v následujícím příkladu:
cd $BASE_DIR/java-app
az acr build \
--registry ${REGISTRY_NAME} \
--image javaee-cafe:v1 \
.
Příkaz az acr build
nahraje artefakty zadané v souboru Dockerfile do instance Container Registry, sestaví image a uloží je v instanci Container Registry.
Nasazení aplikace do Azure Container Apps
Pomocí následujících příkazů vytvořte instanci Azure Container Apps, která spustí aplikaci po načtení image z ACR. Tento příklad vytvoří instanci Azure Container Apps s názvem youracainstancename
:
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
Úspěšný výstup je objekt JSON včetně vlastnosti "type": "Microsoft.App/containerApps"
.
Potom pomocí konektoru služby připojte server Služby Azure SQL Database k aplikaci kontejneru pomocí následujícího postupu:
Tato ukázka používá konektor Service Connector k usnadnění připojení k databázi. Další informace o konektoru služby najdete v tématu Co je konektor služby? nainstalujte rozšíření bez hesla pro Azure CLI pomocí následujícího příkazu:
az extension add --name serviceconnector-passwordless --upgrade --allow-preview true
Připojte databázi k aplikaci kontejneru pomocí spravované identity přiřazené systémem pomocí následujícího příkazu:
az containerapp connection create sql \ --resource-group $RESOURCE_GROUP_NAME \ --name $ACA_NAME \ --target-resource-group $RESOURCE_GROUP_NAME \ --server $SQL_SERVER_NAME \ --database $DB_NAME \ --system-identity \ --container $ACA_NAME \ --client-type java
Úspěšný výstup je objekt JSON včetně vlastnosti
"type": "microsoft.servicelinker/linkers"
.
Poznámka:
Konektor služby vytvoří v aplikaci kontejneru tajný klíč, který obsahuje hodnotu pro AZURE_SQL_CONNECTIONSTRING
, což je připojovací řetězec bez hesla ke službě Azure SQL Database. Další informace najdete v ukázkové hodnotě z části uživatelsky přiřazené spravované identity oddílu Integrace služby Azure SQL Database s konektorem služby.
Testování aplikace
K získání plně kvalifikované adresy URL pro přístup k aplikaci použijte následující příkaz:
echo https://$(az containerapp show \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--query properties.configuration.ingress.fqdn \
--output tsv)
Pokud chcete získat přístup k aplikaci a otestovat ji, otevřete webový prohlížeč na adresu URL. Následující snímek obrazovky ukazuje spuštěnou aplikaci:
Vyčištění prostředků
Abyste se vyhnuli poplatkům za Azure, měli byste vyčistit nepotřebné prostředky. Pokud už cluster nepotřebujete, pomocí příkazu az group delete
odeberte skupinu prostředků, registr kontejnerů, aplikace kontejnerů, databázový server a všechny související prostředky.
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Další kroky
Další informace najdete v referenčních informacích použitých v tomto průvodci:
- Azure Container Apps
- Integrovat Azure SQL Database pomocí konektoru služby
- Připojit s využitím ověřování Microsoft Entra
- Otevřít Svobodu
- Otevření konfigurace serveru Liberty
- Liberty Maven Plugin
- Otevření imagí kontejneru Liberty
- Image kontejnerů WebSphere Liberty
Pokud chcete prozkoumat možnosti spouštění produktů WebSphere v Azure, přečtěte si téma Co jsou řešení pro spuštění řady produktů WebSphere v Azure?