Ruční nasazení aplikace v Javě pomocí Open Liberty nebo WebSphere Liberty v clusteru Azure Kubernetes Service
Tento článek vysvětluje následující postupy:
- Spusťte svoji aplikaci Java, Java EE, Jakarta EE nebo MicroProfile v modulu runtime Open Liberty nebo WebSphere Liberty.
- Sestavte image Dockeru aplikace pomocí imagí kontejneru Liberty.
- Nasaďte kontejnerizovanou aplikaci do clusteru Azure Kubernetes Service (AKS) pomocí operátoru Liberty.
Operátor 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ů.
Další informace o open liberty naleznete na stránce projektu Open Liberty. Další informace o IBM WebSphere Liberty naleznete na stránce produktu WebSphere Liberty.
Tento článek obsahuje podrobné pokyny k ručnímu spuštění Open/WebSphere Liberty v Azure. Automatizovanější řešení, které urychlí vaši cestu ke službě AKS, najdete v tématu Nasazení aplikace v Javě s platformou Open Liberty/WebSphere Liberty v clusteru Azure Kubernetes Service (AKS).
Tento článek vám pomůže rychle se dostat k nasazení. Než půjdete do produkce, měli byste prozkoumat Tuning Liberty.
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
Požadavky
- Připravte místní počítač s nainstalovaným Systémem Windows, macOS nebo Linux.
- Nainstalujte rozhraní příkazového řádku Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Dockeru. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
- 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 SE verze 17 nebo novější (například Eclipse Open J9).
- Nainstalujte Maven verze 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. Přiřazení můžete ověřit pomocí postupu v části Výpis přiřazení rolí Azure pomocí webu Azure Portal.
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.
Přihlášení k Azure
Pokud jste to ještě neudělali, 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 se rozdíl bude v případě potřeby řešit 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. Můžete to udělat pomocí --tenant
této možnosti. Například az login --tenant contoso.onmicrosoft.com
.
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í eastus . Tato skupina prostředků se použije později k vytvoření instance služby Azure Container Registry (ACR) a clusteru AKS.
export RESOURCE_GROUP_NAME=java-liberty-project
az group create --name $RESOURCE_GROUP_NAME --location eastus
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 je vašeuniqueacrname v rámci Azure jedinečný.
export REGISTRY_NAME=youruniqueacrname
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--name $REGISTRY_NAME \
--sku Basic \
--admin-enabled
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",
Připojení k instanci služby ACR
Před nasdílení image do instance služby ACR se musíte přihlásit k instanci služby ACR. Spuštěním následujících příkazů ověřte připojení:
export LOGIN_SERVER=$(az acr show \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
export USER_NAME=$(az acr credential show \
--name $REGISTRY_NAME \
--query 'username' \
--output tsv)
export PASSWORD=$(az acr credential show \
--name $REGISTRY_NAME \
--query 'passwords[0].value' \
--output tsv)
docker login $LOGIN_SERVER -u $USER_NAME -p $PASSWORD
Pokud jste úspěšně přihlášení k instanci ACR, měli byste vidět Login Succeeded
na konci výstupu příkazu.
Vytvoření clusteru AKS
Pomocí příkazu az aks create vytvořte cluster AKS. Následující příklad vytvoří cluster myAKSCluster s jedním uzlem. Dokončení tohoto příkazu trvá několik minut.
export CLUSTER_NAME=myAKSCluster
az aks create \
--resource-group $RESOURCE_GROUP_NAME \
--name $CLUSTER_NAME \
--node-count 1 \
--generate-ssh-keys \
--enable-managed-identity
Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON, včetně následujícího výstupu:
"nodeResourceGroup": "MC_java-liberty-project_myAKSCluster_eastus",
"privateFqdn": null,
"provisioningState": "Succeeded",
"resourceGroup": "java-liberty-project",
Připojení do clusteru AKS
Ke správě clusteru Kubernetes použijete klienta příkazového řádku Kubernetes kubectl. Pokud chcete nainstalovat kubectl
místně, použijte příkaz az aks install-cli , jak je znázorněno v následujícím příkladu:
az aks install-cli
Pomocí příkazu az aks get-credentials nakonfigurujte klienta kubectl
pro připojení k vašemu clusteru Kubernetes. Tento příkaz stáhne přihlašovací údaje a nakonfiguruje rozhraní příkazového řádku Kubernetes tak, aby je používalo.
az aks get-credentials \
--resource-group $RESOURCE_GROUP_NAME \
--name $CLUSTER_NAME \
--overwrite-existing \
--admin
Poznámka:
Výše uvedený příkaz používá výchozí umístění pro konfigurační soubor Kubernetes, což je ~/.kube/config
. Můžete zadat jiné umístění konfiguračního souboru Kubernetes pomocí --file
.
Pokud chcete ověřit připojení ke clusteru, použijte příkaz kubectl get, který vrátí seznam uzlů clusteru.
kubectl get nodes
Následující příklad výstupu ukazuje jeden uzel vytvořený v předchozích krocích. Ujistěte se, že je stav uzlu připravený:
NAME STATUS ROLES AGE VERSION
aks-nodepool1-xxxxxxxx-yyyyyyyyyy Ready agent 76s v1.23.8
Vytvoření databáze Azure SQL Database
V této části vytvoříte jednoúčelovou databázi Azure SQL Database pro použití s vaší aplikací.
V Azure SQL Database vytvořte jednu databázi pomocí kroků Azure CLI nebo PowerShellu v rychlém startu: Vytvoření izolované databáze Azure SQL Database. Při procházení článku použijte následující pokyny a po vytvoření a konfiguraci databázového serveru se vraťte k tomuto dokumentu.
Když se dostanete do části Nastavení hodnot parametrů rychlého startu, zapište všechny proměnné v příkladu kódu označeném
Variable block
, včetnělocation
, ,database
resourceGroup
, ,login
server
, apassword
. Tento článek odkazuje na databáziresourceGroup
jako<db-resource-group>
.Po vytvoření databázového serveru přejděte na nově vytvořený server na webu Azure Portal. V podokně Sítě na kartě Připojení ivity nastavte minimální verzi protokolu TLS na TLS 1.0.
V podokně Sítě na kartě Veřejný přístup vyberte Povolit službám a prostředkům Azure přístup k tomuto serveru.
Pokud chcete aplikaci otestovat místně, ujistěte se, že adresa IPv4 klienta je v seznamu povolených pravidel brány firewall.
Uložte změny sítě.
Pomocí následujícího příkazu vytvořte 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 AKS připravit na hostování Liberty.
Instalace operátoru Open Liberty
Po vytvoření a připojení ke clusteru nainstalujte operátor Open Liberty Operator.
Spuštěním následujících příkazů nainstalujte operátor Open Liberty:
# Install cert-manager Operator
CERT_MANAGER_VERSION=v1.11.2
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.yaml
# Install Open Liberty Operator
export OPERATOR_VERSION=1.2.2
mkdir -p overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/olo-all-namespaces.yaml -q -P ./overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/cluster-roles.yaml -q -P ./overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/kustomization.yaml -q -P ./overlays/watch-all-namespaces
mkdir base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/kustomization.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-crd.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-operator.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-roles.yaml -q -P ./base
kubectl create namespace open-liberty
kubectl apply --server-side -k overlays/watch-all-namespaces
Konfigurace a sestavení image aplikace
Pokud chcete nasadit a spustit aplikaci Liberty v clusteru AKS, kontejnerizujte aplikaci jako image Dockeru pomocí imagí kontejnerů Open Liberty nebo imagí kontejnerů WebSphere Liberty.
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 tuto příručku. Ukázka je na GitHubu. V úložišti je několik ukázek. Tento článek používá java-app. Tady je struktura souborů aplikace.
git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
git checkout 20230830
Pokud se zobrazí zpráva o tom, že je v odpojeném stavu HEAD, je tato zpráva v bezpečí ignorovat. Jen to znamená, že jste si rezervovali značku.
java-app
├─ src/main/
│ ├─ aks/
│ │ ├─ db-secret.yaml
│ │ ├─ openlibertyapplication.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 jsou dva soubory nasazení. db-secret.xml slouží k vytvoření tajných kódů Kubernetes s přihlašovacími údaji pro připojení k databázi. Soubor openlibertyapplication.yaml se používá k nasazení image aplikace. V adresáři dockeru existují dva soubory pro vytvoření image aplikace s open Liberty nebo WebSphere Liberty.
V adresáři liberty/config se server.xml používá ke konfiguraci připojení databáze pro cluster Open Liberty a WebSphere Liberty.
Sestavení projektu
Teď, když jste shromáždili 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 <path-to-your-repo>/java-app
# The following variables will be used for deployment file generation into target/
export LOGIN_SERVER=${LOGIN_SERVER}
export REGISTRY_NAME=${REGISTRY_NAME}
export USER_NAME=${USER_NAME}
export PASSWORD=${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>
mvn clean install
(Volitelné) Místní testování projektu
Projekt teď můžete spustit a otestovat 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). Můžete také zvážit použití liberty:devc
možnosti určené pro vývoj s kontejnery. Další liberty:devc
informace si můžete přečíst v dokumentech o 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).
Spusťte aplikaci pomocí
liberty:run
.liberty:run
používá proměnné prostředí definované v předchozím kroku.cd <path-to-your-repo>/java-app mvn liberty:run
Ověřte, že aplikace funguje podle očekávání. V případě úspěchu by se měla zobrazit zpráva podobná
[INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds.
výstupu příkazu.http://localhost:9080/
Přejděte v prohlížeči a ověřte, že je aplikace přístupná a všechny funkce fungují.Stisknutím kláves Ctrl+C zastavte.
Sestavení image pro nasazení AKS
Teď můžete spustit docker buildx build
příkaz pro sestavení image, jak je znázorněno v následujícím příkladu:
cd <path-to-your-repo>/java-app/target
# If you are running with Open Liberty
docker buildx --platform linux/amd64 build -t javaee-cafe:v1 --pull --file=Dockerfile .
# If you are running with WebSphere Liberty
docker buildx --platform linux/amd64 build -t javaee-cafe:v1 --pull --file=Dockerfile-wlp .
(Volitelné) Místní testování image Dockeru
Teď můžete pomocí následujících kroků otestovat image Dockeru místně před nasazením do Azure.
Spusťte image pomocí následujícího příkazu. Tento příkaz používá dříve definované proměnné prostředí.
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.Stisknutím kláves Ctrl+C zastavte.
Odeslat image do služby ACR
Potom nahrajte sestavenou image do služby ACR, kterou jste vytvořili v předchozích krocích.
Pokud jste to ještě neudělali, přihlaste se k registru kontejneru pomocí následujícího příkazu:
docker login -u ${USER_NAME} -p ${PASSWORD} ${LOGIN_SERVER}
K označení a nasdílení image kontejneru použijte následující příkazy:
docker tag javaee-cafe:v1 ${LOGIN_SERVER}/javaee-cafe:v1
docker push ${LOGIN_SERVER}/javaee-cafe:v1
Nasazení aplikace do clusteru AKS
Pomocí následujících kroků nasaďte aplikaci Liberty v clusteru AKS:
Připojte instanci ACR ke clusteru AKS, aby se cluster AKS ověřil pro vyžádání image z instance ACR, jak je znázorněno v následujícím příkladu:
az aks update \ --resource-group $RESOURCE_GROUP_NAME \ --name $CLUSTER_NAME \ --attach-acr $REGISTRY_NAME
Pomocí následujících příkazů použijte tajný klíč a soubor nasazení databáze:
cd <path-to-your-repo>/java-app/target # Apply DB secret kubectl apply -f db-secret.yaml # Apply deployment file kubectl apply -f openlibertyapplication.yaml
Spuštěním následujícího příkazu určete, jestli
OpenLibertyApplication
je instance vytvořená:kubectl get openlibertyapplication javaee-cafe-cluster
Měl by se zobrazit výstup podobný následujícímu příkladu:
NAME IMAGE EXPOSED RECONCILED AGE javaee-cafe-cluster youruniqueacrname.azurecr.io/javaee-cafe:1.0.25 True 59s
Spuštěním následujícího příkazu určete, jestli je nasazení vytvořené operátorem připravené:
kubectl get deployment javaee-cafe-cluster --watch
Měl by se zobrazit výstup podobný následujícímu příkladu:
NAME READY UP-TO-DATE AVAILABLE AGE javaee-cafe-cluster 0/3 3 0 20s
Počkejte, až se pod sloupcem a pod sloupcem zobrazí
3/3
READY
, a pak pomocí ctrl+C proces kukátkukubectl
zastavte.AVAILABLE
3
Testování aplikace
Když se aplikace spustí, služba nástroje pro vyrovnávání zatížení Kubernetes zveřejní front-end aplikace na internetu. Dokončení tohoto procesu může chvíli trvat.
Pokud chcete monitorovat průběh, použijte příkaz kubectl get service s argumentem --watch
, jak je znázorněno v následujícím příkladu:
kubectl get service javaee-cafe-cluster --watch
Měl by se zobrazit výstup podobný následujícímu příkladu:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
javaee-cafe-cluster LoadBalancer 10.0.251.169 52.152.189.57 80:31732/TCP 68s
Jakmile se externí IP adresa změní z čekání na skutečnou kubectl
veřejnou IP adresu, zastavte proces sledování pomocí ctrl+C.
Pokud mezi provedením kroků v této části a předchozími kroky uplynul nějaký čas, ujistěte se, že je databáze v případě potřeby aktivní. Viz předchozí poznámka týkající se pozastavení databáze.
Otevřete webový prohlížeč s externí IP adresou vaší služby (52.152.189.57
pro výše uvedený příklad) a zobrazte domovskou stránku aplikace. Pokud se stránka nenačte správně, je to proto, že se aplikace spouští. Chvíli můžete počkat a stránku aktualizovat později. V levém horním rohu stránky by se měl zobrazit název podu replik aplikace. Počkejte několik minut a aktualizujte stránku, aby se zobrazil jiný název podu kvůli vyrovnávání zatížení poskytovanému clusterem AKS.
Poznámka:
V současné době aplikace nepoužívá protokol HTTPS. Doporučujeme povolit protokol TLS s vlastními certifikáty. Další informace najdete v tématu Použití protokolu TLS s kontrolerem příchozího přenosu dat ve službě Azure Kubernetes Service (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í 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 referencích použitých v tomto průvodci:
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro