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

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 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 ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Požadavky

Poznámka:

Příkazy v tomto článku můžete spustit také z Azure Cloud Shellu. Tento přístup má předinstalované všechny požadované nástroje s výjimkou Dockeru.

  • Pokud příkazy v této příručce spouštíte místně (místo Azure Cloud Shellu):
    • Připravte místní počítač s nainstalovaným operačním systémem Unix (například Ubuntu, Azure Linux, macOS, Subsystém Windows pro Linux).
    • Nainstalujte implementaci Java SE verze 17 nebo novější. (například Eclipse Open J9).
    • Nainstalujte Maven 3.5.0 nebo novější.
    • Nainstalujte Docker pro váš operační systém.
  • Ujistěte se, že máte přiřazenou Owner roli nebo ContributorUser Access Administrator role v předplatném. Můžete ho ověřit pomocí postupu v části Výpis přiřazení rolí pro uživatele nebo skupinu.

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 IBM Liberty v AKS. 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).

    2. Jako oblast vyberte USA – východ.

    3. Vytvořte v prostředí proměnnou prostředí pro názvy skupin prostředků pro cluster a databázi:

      export RESOURCE_GROUP_NAME=<your-resource-group-name>
      

  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 Připojení brány Aplikace Azure 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 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 přihlašovacího serveru, názvu registru, uživatelského jména a hesla. Hodnotu můžete zkopírovat do systémové schránky pomocí ikony kopírování vedle každého pole.

  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?
    • appDeploymentYaml pokud nasazení zahrnuje aplikaci. To znamená, že jste pro nasazení aplikace vybrali ano?.

    Vložte hodnotu appDeploymentTemplateYaml prostředí Bash nebo appDeploymentYaml do prostředí Bash, připojte | grep secretNamea spusťte příkaz.

    Výstupem tohoto příkazu je název tajného klíče TLS příchozího přenosu dat, například - secretName: secret785e2c. Uložte si hodnotu stranou secretName .

Tyto hodnoty použijete dále v tomto článku. Všimněte si, že výstupy uvádějí několik dalších užitečných příkazů.

Vytvoření instance azure SQL Database

Pokud chcete vytvořit jednoúčelovou databázi Azure SQL Database pro použití s vaší aplikací, postupujte podle kroků v rychlém startu: Vytvoření izolované databáze ve službě Azure SQL Database. Pečlivě si poznamenejte následující rozdíly:

  • V kroku Základy zapište hodnoty pro skupinu prostředků, název databáze,< název> serveru.database.windows.net, přihlášení správce serveru a heslo. Tento článek se týká hodnoty skupiny prostředků databáze jako <db-resource-group>.

  • V kroku Sítě nastavte metodu Připojení ivity na veřejný koncový bod, nastavte Povolit službám a prostředkům Azure přístup k tomuto serveru na Ano a nastavte Přidat aktuální IP adresu klienta na Ano.

    Snímek obrazovky webu Azure Portal znázorňující kartu Sítě na stránce Vytvořit databázi SQL se zvýrazněnou metodou Připojení ivity a nastavením pravidel brány firewall

Poznámka:

Bezserverová výpočetní úroveň , kterou jste vybrali pro tuto databázi, šetří peníze tím, že databázi umístíte do režimu spánku během období nečinnosti. Ukázková aplikace selže, pokud databáze po spuštění aplikace spí.

Pokud chcete vynutit probuzení databáze, můžete spustit dotaz pomocí editoru dotazů. Postupujte podle kroků v dotazu na databázi. Tady je příklad dotazu: SELECT * FROM COFFEE;.

Vytvořte v prostředí proměnnou prostředí pro název skupiny prostředků pro databázi:

export DB_RESOURCE_GROUP_NAME=<db-resource-group>

Teď, když jste vytvořili 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 20240220

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:

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

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 je pět souborů nasazení:

  • db-secret.xml: Tento soubor použijte k vytvoření tajných kódů Kubernetes s přihlašovacími údaji pro připojení k databázi.
  • openlibertyapplication-agic.yaml: Tento soubor použijte k nasazení aplikace Open Liberty s AGIC. Tento článek předpokládá, že tento soubor používáte.
  • openlibertyapplication.yaml: Tento soubor použijte, pokud chcete nasadit aplikaci Open Liberty bez AGIC.
  • webspherelibertyapplication-agic.yaml: Tento soubor použijte k nasazení aplikace WebSphere Liberty s AGIC, pokud jste nasadili WebSphere Liberty Operator dříve v tomto článku.
  • webspherelibertyapplication.yaml: Tento soubor použijte k nasazení aplikace WebSphere Liberty bez AGIC, pokud jste nasadili WebSphere Liberty Operator dříve v tomto článku.

V adresáři Dockeru existují dva soubory pro vytvoření image aplikace:

  • Dockerfile: Tento soubor použijte k sestavení image aplikace s Open Liberty v tomto článku.
  • Dockerfile-wlp: Tento soubor použijte k sestavení image aplikace s WebSphere Liberty, pokud jste nasadili WebSphere Liberty Operator dříve v tomto článku.

V adresáři liberty/config použijete soubor server.xml ke konfiguraci připojení databáze pro cluster Open Liberty a WebSphere Liberty.

Sestavení projektu

Teď, když máte potřebné vlastnosti, můžete aplikaci sestavit. 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=<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

(Volitelné) 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.

Pro vaši aplikaci můžete udělat něco podobného pomocí jakéhokoli jiného mechanismu, jako je místní vývojové prostředí. Můžete také zvážit použití liberty:devc možnosti určené pro vývoj s kontejnery. Další liberty:devc informace najdete v dokumentaci Open Liberty.

  1. Spusťte aplikaci pomocí .liberty:run liberty:run také používá proměnné prostředí, které jste definovali dříve.

    cd $BASE_DIR/java-app
    mvn liberty:run
    
  2. Pokud je test úspěšný, zobrazí se ve výstupu příkazu zpráva podobná [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds . 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. Chcete-li zastavit, vyberte ctrl+C.

Sestavení image pro nasazení AKS

Teď můžete spustit docker build příkaz pro sestavení image:

cd $BASE_DIR/java-app/target

docker buildx build --platform linux/amd64 -t javaee-cafe:v1 --pull --file=Dockerfile .

(Volitelné) Místní testování image Dockeru

Před nasazením do Azure otestujte image Dockeru místně pomocí následujících kroků:

  1. Spusťte image pomocí následujícího příkazu. Tento příkaz používá proměnné prostředí, které jste definovali dříve.

    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
    
  2. Po spuštění kontejneru přejděte v http://localhost:9080/ prohlížeči a získejte přístup k aplikaci.

  3. Chcete-li zastavit, vyberte ctrl+C.

Nahrání image do služby Azure Container Registry

Nahrajte sestavenou image do instance služby Container Registry, kterou jste vytvořili v nabídce:

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

Nasazení a otestování aplikace

K nasazení a otestování aplikace použijte následující postup:

  1. Připojení ke clusteru AKS.

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

  2. Použijte tajný klíč databáze:

    cd $BASE_DIR/java-app/target
    kubectl apply -f db-secret.yaml
    

    Výstup je secret/db-secret-sql created.

  3. Použijte soubor nasazení:

    kubectl apply -f openlibertyapplication-agic.yaml
    
  4. 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
    
  5. Ověřte výsledky:

    1. Získejte adresu prostředku příchozího přenosu dat nasazeného s aplikací:

      kubectl get ingress
      

      Z výstupu zkopírujte hodnotu ADDRESS. Tato hodnota je front-endová veřejná IP adresa nasazené instance služby Application Gateway.

    2. Přejděte k https://<ADDRESS> otestování aplikace. Pro usnadnění vašeho pohodlí vytvoří tento příkaz prostředí proměnnou prostředí, jejíž hodnotu můžete vložit přímo do prohlížeče:

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

      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.

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ů, službu kontejneru, registr kontejneru, databázi a všechny související prostředky:

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

Další kroky

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