Sdílet prostřednictvím


Nasazení aplikace v Javě s platformou Open Liberty nebo WebSphere Liberty v clusteru Azure Kubernetes Service (AKS)

Tento článek ukazuje, jak:

  • Spusťte svoji aplikaci Java, Java EE, Jakarta EE nebo MicroProfile v modulu runtime Open Liberty nebo IBM WebSphere Liberty .
  • Sestavte image az acr build Dockeru aplikace pomocí imagí kontejneru Open Liberty nebo WebSphere Liberty.
  • Nasaďte kontejnerizovanou aplikaci do clusteru Azure Kubernetes Service (AKS) pomocí operátoru Open Liberty nebo Operátor WebSphere Liberty.

Operátor Open Liberty zjednodušuje nasazení a správu aplikací spuštěných v clusterech Kubernetes. Pomocí operátoru Open Liberty nebo WebSphere Liberty Operator můžete také provádět pokročilejší operace, jako je shromažďování trasování a výpisů.

Tento článek využívá nabídku Azure Marketplace pro Open Liberty nebo WebSphere Liberty k urychlení vaší cesty k AKS. Nabídka automaticky zřídí některé prostředky Azure, mezi které patří:

  • Instance služby Azure Container Registry.
  • Cluster AKS.
  • Instance kontroleru příchozího přenosu dat služby Application Gateway (AGIC).
  • Operátor Open Liberty a WebSphere Liberty Operator.
  • Volitelně image kontejneru, která zahrnuje Liberty a vaši aplikaci.

Pokud dáváte přednost ručním podrobným pokynům pro spuštění Liberty v AKS, přečtěte si téma Ruční nasazení aplikace v Javě s open liberty nebo WebSphere Liberty v clusteru Azure Kubernetes Service (AKS).

Tento článek vám pomůže rychle se dostat k nasazení. Než přejdete do produkce, měli byste prozkoumat dokumentaci IBM týkající se ladění 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

Vytvoření svobody v nasazení AKS pomocí portálu

Následující kroky vás provedou vytvořením modulu runtime Liberty v AKS. Po dokončení těchto kroků budete mít instanci služby Container Registry a cluster AKS pro nasazení kontejnerizované aplikace.

  1. Přejděte na Azure Portal. Do vyhledávacího pole v horní části stránky zadejte WebSphere Liberty/Open Liberty v Kubernetes. Jakmile se návrhy zobrazí, vyberte ten, který odpovídá pouze v části Marketplace .

    Pokud chcete, můžete přejít přímo na nabídku.

  2. Vyberte Vytvořit.

  3. V podokně Základy :

    1. Vytvoříte novou skupinu prostředků. Vzhledem k tomu, že skupiny prostředků musí být v rámci předplatného jedinečné, zvolte jedinečný název. Jednoduchým způsobem, jak mít jedinečné názvy, je použít kombinaci iniciály, dnešního data a identifikátoru (například ejb0913-java-liberty-project-rg). Uložte si název skupiny prostředků pro pozdější použití v tomto článku.
    2. V části Oblast vyberte oblast, která je blízko vás. Vyberte například USA – východ 2.
  4. Vyberte Další. V podokně AKS můžete volitelně vybrat existující cluster AKS a instanci služby Container Registry místo toho, aby nasazení vytvářelo nové. Tato volba umožňuje používat model sajdkáře, jak je znázorněno v Centru architektury Azure. Můžete také upravit nastavení velikosti a počtu virtuálních počítačů ve fondu uzlů AKS.

    Pro účely tohoto článku ponechte v tomto podokně všechna výchozí nastavení.

  5. Vyberte Další. V podokně Vyrovnávání zatížení vedle položky Připojit k Aplikace Azure lication Gateway? vyberte Ano. V této části můžete přizpůsobit následující možnosti nasazení:

    • Pro virtuální síť a podsíť můžete volitelně přizpůsobit virtuální síť a podsíť, do které nasazení umístí prostředky. Zbývající hodnoty nemusíte měnit z výchozích hodnot.

    • Pro certifikát TLS/SSL můžete zadat certifikát TLS/SSL z Aplikace Azure lication Gateway. Ponechte výchozí hodnoty, které způsobí, že nabídka vygeneruje certifikát podepsaný svým držitelem.

      Nechoďte do produkčního prostředí s certifikátem podepsaným svým držitelem. Další informace o certifikátech podepsaných svým držitelem najdete v tématu Vytvoření veřejného certifikátu podepsaného svým držitelem pro ověření aplikace.

    • Můžete vybrat Povolit spřažení na základě souborů cookie, označované také jako rychlé relace. Tento článek používá rychlé relace, proto nezapomeňte tuto možnost vybrat.

  6. Vyberte Další. V podokně Operátor a aplikace se v tomto článku používají všechny výchozí hodnoty. Můžete ale přizpůsobit následující možnosti nasazení:

    • WebSphere Liberty Operator můžete nasadit tak, že u možnosti IBM vyberete Ano?. Když ponecháte výchozí operátor No , operátor Open Liberty.
    • Aplikaci pro vybraného operátora můžete nasadit tak, že u možnosti Nasadit aplikaci vyberete Ano? Když ponecháte výchozí hodnotu Ne , nenasadí žádnou aplikaci.
  7. Výběrem možnosti Zkontrolovat a vytvořit ověřte vybrané možnosti. Když v podokně Zkontrolovat a vytvořit uvidíte , že po úspěšném ověření se zobrazí možnost Vytvořit , vyberte ji.

    Nasazení může trvat až 20 minut. Během čekání na dokončení nasazení můžete postupovat podle kroků v části Vytvoření instance služby Azure SQL Database. Po dokončení této části se vraťte sem a pokračujte.

Zachycení vybraných informací z nasazení

Pokud jste se přesunuli mimo podokno Nasazení , následující kroky ukazují, jak se k tomuto podoknu vrátit. Pokud jste stále v podokně, ve kterém se zobrazuje dokončení nasazení, přejděte do nově vytvořené skupiny prostředků a přejděte ke třetímu kroku.

  1. V rohu libovolné stránky portálu vyberte tlačítko nabídky a pak vyberte Skupiny prostředků.

  2. Do pole s textovým filtrem libovolného pole zadejte několik prvních znaků skupiny prostředků, kterou jste vytvořili dříve. Pokud jste postupovali podle doporučené konvence, zadejte iniciály a pak vyberte příslušnou skupinu prostředků.

  3. V seznamu prostředků ve skupině prostředků vyberte prostředek s hodnotou Typ registru kontejneru.

  4. V navigačním podokně v části Nastavení vyberte Přístupové klávesy.

  5. Uložte si hodnoty pro název registru a přihlašovací server. Hodnotu můžete zkopírovat do systémové schránky pomocí ikony kopírování vedle každého pole.

    Poznámka:

    Tento článek používá az acr build příkaz k sestavení a nasdílení image Dockeru do služby Container Registry bez použití username a password služby Container Registry. Je stále možné použít uživatelské jméno a heslo s docker login a docker push. Použití uživatelského jména a hesla je méně bezpečné než ověřování bez hesla.

  6. Vraťte se do skupiny prostředků, do které jste nasadili prostředky.

  7. V části Nastavení vyberte Nasazení.

  8. V seznamu vyberte nejspodnější nasazení. Hodnota názvu nasazení odpovídá ID vydavatele nabídky. Obsahuje řetězec ibm.

  9. V navigačním podokně vyberte Výstupy.

  10. Pomocí stejné techniky kopírování jako u předchozích hodnot uložte hodnoty pro následující výstupy:

    • cmdToConnectToCluster

    • appDeploymentTemplateYaml pokud nasazení neobsahuje aplikaci. To znamená, že jste při nasazení nabídky Marketplace vybrali možnost Ne pro nasazení aplikace? Tento článek vybral ne. Pokud jste však vybrali ano, uložte si hodnotu appDeploymentYaml, která zahrnuje nasazení aplikace.

      Vložte hodnotu appDeploymentTemplateYaml prostředí Bash nebo appDeploymentYaml do prostředí Bash a spusťte příkaz.

      Výstupem tohoto příkazu je YAML nasazení aplikace. Vyhledejte tajný kód TLS příchozího přenosu dat s klíčovým slovem secretName, například - secretName: secret785e2c. Uložte si hodnotu stranou secretName .

Spuštěním následujících příkazů nastavte proměnné prostředí, které jste zachytili v předchozích krocích. Tyto proměnné prostředí se používají dále v tomto článku.

export RESOURCE_GROUP_NAME=<your-resource-group-name>
export REGISTRY_NAME=<your-registry-nam-of-container-registry>
export LOGIN_SERVER=<your-login-server-of-container-registry>
export INGRESS_TLS_SECRET=<your-ingress-tls-secret-name>

Vytvoření instance azure SQL Database

V této části vytvoříte jednoúčelovou databázi Azure SQL Database pro použití s vaší aplikací.

Nejprve 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

Spuštěním následujícího příkazu v terminálu 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 přidejte místní IP adresu do pravidel brány firewall serveru 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:

Tento článek zakáže ověřování SQL, aby ilustroval osvědčené postupy zabezpečení. K ověření připojení k serveru se používá ID Microsoft Entra. Pokud potřebujete povolit ověřování SQL, přečtěte si téma az sql server create.

Vytvoření připojení služby v AKS pomocí konektoru Service Connector

V této části vytvoříte připojení služby mezi clusterem AKS a službou Azure SQL Database pomocí ID úloh Microsoft Entra s konektorem služby. Toto připojení umožňuje clusteru AKS přistupovat ke službě Azure SQL Database bez použití ověřování SQL.

Nejprve udělte poskytovateli prostředků konektoru služby Azure Service Connector oprávnění služby Application Gateway nasazené dříve. Tento krok je nutný k úspěšnému vytvoření připojení služby mezi clusterem AKS a službou Azure SQL Database.

  1. Přejděte na web Azure Portal a přejděte do skupiny prostředků, kterou jste vytvořili dříve.
  2. V seznamu prostředků ve skupině prostředků vyberte prostředek s hodnotou Typ služby Application Gateway.
  3. Vyberte Řízení přístupu (IAM) . Potom rozbalte přidat a vyberte Přidat přiřazení role.
  4. Na kartě Role vyberte role privilegovaného správce. Pak vyberte Přispěvatel. Vyberte Další.
  5. Na kartě Členové vyberte Vybrat členy. Pak vyhledejte aplikaci poskytovatele prostředků konektoru služeb Azure. Vyberte aplikaci a vyberte Vybrat. Vyberte Další.
  6. Vyberte Zkontrolovat + přiřadit. Počkejte několik sekund, než se přiřazení role dokončí.

Potom spuštěním následujících příkazů vytvořte připojení mezi clusterem AKS a databází SQL pomocí ID úloh Microsoft Entra s konektorem služby. Další informace najdete v tématu Vytvoření připojení služby v AKS pomocí konektoru Service Connector (Preview).

# Register the Service Connector and Kubernetes Configuration resource providers
az provider register --namespace Microsoft.ServiceLinker --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait

# Install the Service Connector passwordless extension
az extension add --name serviceconnector-passwordless --upgrade --allow-preview true

# Retrieve the AKS cluster and Azure SQL Server resource IDs
export AKS_CLUSTER_RESOURCE_ID=$(az aks show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $CLUSTER_NAME \
    --query id \
    --output tsv)
export AZURE_SQL_SERVER_RESOURCE_ID=$(az sql server show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $SQL_SERVER_NAME \
    --query id \
    --output tsv)

# Create a user-assigned managed identity used for workload identity
export USER_ASSIGNED_IDENTITY_NAME=workload-identity-uami
az identity create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name ${USER_ASSIGNED_IDENTITY_NAME}

# Retrieve the user-assigned managed identity resource ID
export UAMI_RESOURCE_ID=$(az identity show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name ${USER_ASSIGNED_IDENTITY_NAME} \
    --query id \
    --output tsv)

# Create a service connection between your AKS cluster and your SQL database using Microsoft Entra Workload ID
az aks connection create sql \
    --connection akssqlconn \
    --client-type java \
    --source-id $AKS_CLUSTER_RESOURCE_ID \
    --target-id $AZURE_SQL_SERVER_RESOURCE_ID/databases/$DB_NAME \
    --workload-identity $UAMI_RESOURCE_ID

Poznámka:

Doporučujeme použít ID úloh Microsoft Entra pro zabezpečený přístup ke službě Azure SQL Database bez použití ověřování SQL. Pokud potřebujete použít ověřování SQL, ignorujte předchozí kroky v této části a pro připojení ke službě Azure SQL Database použijte uživatelské jméno a heslo.

Získání účtu služby a tajného kódu vytvořeného konektorem služby

Pokud se chcete ověřit ve službě Azure SQL Database, musíte získat účet služby a tajný kód vytvořený konektorem služby. Postupujte podle pokynů v části Kurz aktualizace kontejneru: Připojení aplikace AKS ke službě Azure SQL Database. Použijte možnost Přímé vytvoření nasazení pomocí poskytnutého fragmentu ukázkového kódu YAML a postupujte následovně:

  1. Ze zvýrazněných částí v ukázkovém YAML nasazení Kubernetes zkopírujte hodnoty a secretRef.name hodnotyserviceAccountName, jak je znázorněno v následujícím příkladu:

    serviceAccountName: <service-account-name>
    containers:
    - name: raw-linux
       envFrom:
          - secretRef:
             name: <secret-name>
    
  2. K definování proměnných prostředí použijte následující příkazy. Nahraďte <service-account-name> hodnoty <secret-name> , které jste zkopírovali v předchozím kroku.

    export SERVICE_ACCOUNT_NAME=<service-account-name>
    export SECRET_NAME=<secret-name>
    

    Tyto hodnoty se používají v další části k nasazení aplikace Liberty do clusteru AKS.

Poznámka:

Tajný kód vytvořený konektorem služby obsahuje AZURE_SQL_CONNECTIONSTRINGheslo zdarma připojovací řetězec do služby Azure SQL Database. Další informace najdete v ukázkové hodnotě v části Ověřování spravované identity přiřazené uživatelem integrace Azure SQL Database s konektorem služby.

Teď, když nastavíte databázi a cluster AKS, můžete pokračovat v přípravě AKS na hostování aplikace Open Liberty.

Konfigurace a nasazení ukázkové aplikace

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

Naklonujte vzorový kód pro tento článek. Ukázka je na GitHubu.

V úložišti je několik ukázek. Tento článek používá java-app. Spuštěním následujících příkazů získejte ukázku:

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

Pokud se zobrazí zpráva o tom, že je v odpojeném stavu HEAD, můžete ji bezpečně ignorovat. Zpráva znamená, že jste si rezervovali značku.

Tady je struktura souborů aplikace s důležitými soubory a adresáři:

java-app
├─ src/main/
│  ├─ aks/
│  │  ├─ openlibertyapplication-agic-passwordless-db.yaml
│  ├─ docker/
│  │  ├─ Dockerfile
│  │  ├─ Dockerfile-wlp
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ 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 adresáři aks se soubor openlibertyapplication-agic-passwordless-db.yaml používá k nasazení image aplikace s připojením AGIC a bez hesla ke službě Azure SQL Database. Tento článek předpokládá, že tento soubor používáte.

V adresáři dockeru 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 na azure-identity. Tento soubor slouží 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ěření ve službě Azure SQL Database pomocí ověřování Microsoft Entra. Pokud potřebujete ve své aplikaci Liberty použít ověřování SQL, přečtěte si téma Připojení relační databáze s JDBC.

Sestavení projektu

Teď, když jste shromáždili potřebné vlastnosti, sestavte aplikaci. Soubor POM pro projekt čte mnoho proměnných z prostředí. V rámci sestavení Maven se tyto proměnné používají k naplnění hodnot v souborech YAML umístěných v souborech src/main/aks. Pokud chcete, můžete pro svou aplikaci udělat něco podobného mimo Maven.

cd $BASE_DIR/java-app
# The following variables are used for deployment file generation into the target.
export LOGIN_SERVER=${LOGIN_SERVER}
export SC_SERVICE_ACCOUNT_NAME=${SERVICE_ACCOUNT_NAME}
export SC_SECRET_NAME=${SECRET_NAME}
export INGRESS_TLS_SECRET=${INGRESS_TLS_SECRET}

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

Místní testování projektu

Před nasazením do Azure spusťte a otestujte projekt místně. Pro usnadnění použití tohoto článku .liberty-maven-plugin Další informace najdete liberty-maven-pluginv článku o vytváření webové aplikace pomocí Mavenu v článku Open Liberty.

Poznámka:

Pokud jste vybrali nasazení bezserverové databáze, ověřte, že databáze SQL nezašla do režimu pozastavení. Jedním ze způsobů, jak to udělat, je přihlásit se k editoru databázových dotazů, jak je popsáno v rychlém startu: K dotazování služby Azure SQL Database použijte editor dotazů na webu Azure Portal (Preview).

  1. Spusťte aplikaci pomocí .liberty:run

    cd $BASE_DIR/java-app
    
    # The value of environment variable AZURE_SQL_CONNECTIONSTRING is read by 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. Ověřte, že aplikace funguje podle očekávání. Měla by se zobrazit zpráva podobná [INFO] [AUDIT ] CWWKZ0001I: Application javaee-cafe started in 18.235 seconds. ve výstupu příkazu. Přejděte v http://localhost:9080/ prohlížeči a ověřte, že je aplikace přístupná a že fungují všechny funkce.

  3. Stisknutím kláves Ctrl+C zastavte. Pokud se zobrazí výzva k ukončení dávkové úlohy, stiskněte 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í AKS

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

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ží ho do instance Container Registry.

Nasazení aplikace do clusteru AKS

Pomocí následujících kroků nasaďte aplikaci Liberty v clusteru AKS:

  1. Připojte se ke clusteru AKS.

    Vložte hodnotu cmdToConnectToCluster do prostředí a spusťte příkaz.

  2. Použijte soubor nasazení spuštěním následujících příkazů:

    cd $BASE_DIR/java-app/target
    
    # Apply deployment file
    kubectl apply -f openlibertyapplication-agic-passwordless-db.yaml
    
  3. Pomocí následujícího příkazu počkejte, až se všechny pody úspěšně restartují:

    kubectl get pods --watch
    

    Výstup podobný následujícímu příkladu označuje, že jsou spuštěné všechny pody:

    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
    

Testování aplikace

Když jsou pody spuštěné, můžete aplikaci otestovat pomocí veřejné IP adresy instance služby Application Gateway.

Spuštěním následujícího příkazu získejte a zobrazte veřejnou IP adresu instance služby Application Gateway vystavenou prostředkem příchozího přenosu dat vytvořeným službou AGIC:

export APP_URL=https://$(kubectl get ingress | grep javaee-cafe-cluster-agic-ingress | cut -d " " -f14)/
echo $APP_URL

Zkopírujte adresu URL a otevřete ji v prohlížeči, aby se zobrazila domovská stránka aplikace. Pokud se webová stránka nevykreslí správně nebo vrátí 502 Bad Gateway chybu, aplikace se stále spouští na pozadí. Počkejte několik minut a zkuste to znovu.

Snímek obrazovky aplikace Java liberty úspěšně nasazené v AKS

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í az group delete příkazu odeberte skupinu prostředků, službu kontejneru, registr kontejneru, databázi a všechny související prostředky:

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

Další kroky

Další informace najdete v následujících odkazech:

Další informace o nasazení řady IBM WebSphere v Azure najdete v tématu Co jsou řešení pro spuštění řady produktů WebSphere v Azure?.