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 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
- Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.
- Připravte místní počítač s nainstalovaným operačním systémem Unix , například Ubuntu, Azure Linux, macOS nebo Subsystém Windows pro Linux.
- Nainstalujte Azure CLI a spusťte příkazy Azure CLI.
- Přihlaste se k 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 příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade. Tento článek vyžaduje aspoň verzi 2.31.0 Azure CLI.
- Nainstalujte implementaci java edice Standard (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 je nainstalovaný Git .
- Ujistěte se, že máte přiřazenou
Owner
roli neboContributor
User 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.
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.
Vyberte Vytvořit.
V podokně Základy :
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
).Jako oblast vyberte USA – východ.
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>
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í.
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.
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.
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.
V rohu libovolné stránky portálu vyberte tlačítko nabídky a pak vyberte Skupiny prostředků.
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ů.
V seznamu prostředků ve skupině prostředků vyberte prostředek s hodnotou Typ registru kontejneru.
V navigačním podokně v části Nastavení vyberte Přístupové klávesy.
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.
Vraťte se do skupiny prostředků, do které jste nasadili prostředky.
V části Nastavení vyberte Nasazení.
V seznamu vyberte nejspodnější nasazení. Hodnota názvu nasazení odpovídá ID vydavatele nabídky. Obsahuje řetězec
ibm
.V navigačním podokně vyberte Výstupy.
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 neboappDeploymentYaml
do prostředí Bash, připojte| grep secretName
a 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 stranousecretName
.
Tyto hodnoty použijete dále v tomto článku. 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í 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.
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;
.
Potom pomocí následujícího příkazu 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-plugin
v č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.
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
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 vhttp://localhost:9080/
prohlížeči a ověřte, že je aplikace přístupná a že fungují všechny funkce.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ů:
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
Po spuštění kontejneru přejděte v
http://localhost:9080/
prohlížeči a získejte přístup k aplikaci.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:
Připojte se ke clusteru AKS.
Vložte hodnotu
cmdToConnectToCluster
do prostředí a spusťte příkaz.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
.Použijte soubor nasazení:
kubectl apply -f openlibertyapplication-agic.yaml
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
Ověřte výsledky:
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.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:
Další informace o nasazení rodiny IBM WebSphere v Azure najdete v tématu Co jsou řešení pro spuštění řady produktů WebSphere v Azure?
Azure Kubernetes Service