本文說明如何在 Azure 容器應用中部署一個使用 Java 元件來處理組態管理、服務發現,以及健康與指標的應用程式。 本範例中展示的範例應用程式是 Java PetClinic,採用微服務架構模式。 下圖描述 Azure Container Apps 上的 PetClinic 應用程式架構:
PetClinic 應用程式包含下列功能:
- 前端是裝載在 API 閘道應用程式上的獨立Node.js Web 應用程式。
- API 閘道會將要求路由傳送至後端服務應用程式。
- 後端應用程式是使用 Spring Boot 所建置。
- 每個後端應用程式都會使用 HyperSQL 資料庫作為永續性存放區。
- 應用程式在 Azure Container Apps 上使用受控 Java 元件,包括服務登錄、組態伺服器和管理伺服器。
- 設定伺服器會從 Git 存放庫讀取數據。
- Log Analytics 工作區會記錄伺服器數據。
在本教學課程中,您已:
- 建立組態伺服器、Eureka 伺服器、系統管理伺服器和系統管理員元件
- 建立一系列微服務應用程式
- 將伺服器元件系結至微服務應用程式
- 部署集合的應用程式
- 檢閱已部署的應用程式
在本文中結束時,您會部署一個 Web 應用程式和三個後端應用程式,這些應用程式已設定為使用三個不同的 Java 元件。 然後,您可以透過 Azure 入口網站 管理每個元件。
必要條件
- 一個 Azure 帳戶。 如果您沒有 Azure 帳戶,請建立一個免費帳戶。 在這個快速入門中,你需要在 Azure 訂閱中選擇貢獻 者 或 擁有者 角色。 如需詳細資訊,請參閱使用 Azure 入口網站指派 Azure 角色。
- 安裝 Azure CLI。
- Azure Container Apps CLI 擴展,版本 0.3.47 或更高。 使用
az extension add --name containerapp --upgrade --allow-preview命令來安裝最新版本。
設定
若要建立環境變數、資源群組和 Azure Container Apps 環境,請使用下列步驟:
環境變數包含您的自定義值,因此在執行下列命令之前,請先以您自己的值取代 所包圍
<>的佔位元值:export RESOURCE_GROUP=<your-resource-group> export LOCATION=<region> export CONTAINER_APP_ENVIRONMENT=<container-apps-environment>建立更多包含微服務應用程式設定的環境變數。 這些值可用來定義 Java 元件的名稱和組態,以及您用來部署微服務的 Azure Container Apps。 使用下列命令建立這些環境變數:
export CONFIG_SERVER_COMPONENT=configserver export ADMIN_SERVER_COMPONENT=admin export EUREKA_SERVER_COMPONENT=eureka export CONFIG_SERVER_URI=https://github.com/spring-petclinic/spring-petclinic-microservices-config.git export CUSTOMERS_SERVICE=customers-service export VETS_SERVICE=vets-service export VISITS_SERVICE=visits-service export API_GATEWAY=api-gateway export CUSTOMERS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-customers-service export VETS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-vets-service export VISITS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-visits-service export API_GATEWAY_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-api-gateway使用下列命令登入 Azure CLI 並選擇使用中的訂用帳戶:
az login使用下列命令建立資源群組來組織您的 Azure 服務:
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION使用下列命令建立 Azure Container Apps 環境,其同時裝載 Java 元件和容器應用程式:
az containerapp env create \ --resource-group $RESOURCE_GROUP \ --name $CONTAINER_APP_ENVIRONMENT \ --location $LOCATION
建立Java元件
現在,您會建立下列支援應用程式的 Java 元件:
- 設定伺服器:管理微服務應用程式的設定。
- Eureka 伺服器:管理服務登錄與發現。
- 管理伺服器:監控並管理微服務應用程式的健康狀況與指標。
若要建立這些伺服器元件,請使用下列步驟:
使用下列指令建立 Java 元件的配置伺服器:
az containerapp env java-component config-server-for-spring create \ --resource-group $RESOURCE_GROUP \ --name $CONFIG_SERVER_COMPONENT \ --environment $CONTAINER_APP_ENVIRONMENT \ --configuration spring.cloud.config.server.git.uri=$CONFIG_SERVER_URI使用下列命令為您的 Java 元件建立 Eureka 伺服器:
az containerapp env java-component eureka-server-for-spring create \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_SERVER_COMPONENT --environment $CONTAINER_APP_ENVIRONMENT \使用下列指令建立 Java 元件的管理員伺服器:
az containerapp env java-component admin-for-spring create \ --resource-group $RESOURCE_GROUP \ --name $ADMIN_SERVER_COMPONENT --environment $CONTAINER_APP_ENVIRONMENT \
部署微服務應用程式
若要使用預先建置的容器映射將 Java 微服務應用程式部署至 Azure Container Apps,請使用下列步驟:
注意
在本文中,您會針對 Spring Petclinic 微服務應用程式使用一系列已建置映像。 您也可以選擇自訂範例程序代碼,並使用您自己的映像。 如需詳細資訊,請參閱 azure-container-apps-java-samples GitHub 存放庫。
使用下列指令建立客戶資料應用程式:
az containerapp create \ --resource-group $RESOURCE_GROUP \ --name $CUSTOMERS_SERVICE \ --environment $CONTAINER_APP_ENVIRONMENT \ --image $CUSTOMERS_SERVICE_IMAGE使用下列命令建立 vet 應用程式:
az containerapp create \ --resource-group $RESOURCE_GROUP \ --name $VETS_SERVICE \ --environment $CONTAINER_APP_ENVIRONMENT \ --image $VETS_SERVICE_IMAGE使用下列命令來建立「訪問」應用程式:
az containerapp create \ --resource-group $RESOURCE_GROUP \ --name $VISITS_SERVICE \ --environment $CONTAINER_APP_ENVIRONMENT \ --image $VISITS_SERVICE_IMAGE使用下列指令建立 API 閘道應用程式:
az containerapp create \ --resource-group $RESOURCE_GROUP \ --name $API_GATEWAY \ --environment $CONTAINER_APP_ENVIRONMENT \ --image $API_GATEWAY_IMAGE \ --ingress external \ --target-port 8080 \ --query properties.configuration.ingress.fqdn
將容器應用程式系結至 Java 元件
接下來,將 Java 元件系結至容器應用程式。 您在本節中建立的系結提供下列功能:
- 在啟動時,從受控設定伺服器將組態數據插入每個應用程式。
- 向受控 Eureka 伺服器註冊應用程式以進行服務探索。
- 啟用系統管理員伺服器來監視應用程式。
使用 containerapp update 命令來根據下列步驟為每個應用程式建立系結:
使用下列命令將系結新增至客戶資料應用程式:
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $CUSTOMERS_SERVICE \ --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT使用下列命令將繫結新增至獸醫服務:
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $VETS_SERVICE \ --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT使用下列命令將系結新增至 visits 服務中:
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $VISITS_SERVICE \ --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT將系結新增至 API 閘道。 請使用以下指令返回前端應用程式的 URL:
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $API_GATEWAY \ --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT \ --query properties.configuration.ingress.fqdn
確認應用程式狀態
使用下列步驟來驗證應用程式狀態:
利用你在前一節找到的網址,在瀏覽器中查看前端應用程式。 應用程式應該類似下列螢幕快照:
使用下列步驟檢視 Eureka 伺服器儀錶板:
重要
若要檢視 Eureka 伺服器儀表板和 Spring 儀表板的管理員,您必須至少擁有指派給受控環境資源上帳戶的
Microsoft.App/managedEnvironments/write角色。 您可以在資源上明確指派Owner或Contributor角色。 您也可以遵循步驟來建立自定義角色定義,並將它指派給您的帳戶。使用下列步驟檢視 Spring 管理儀錶板:
選擇性:設定 Java 元件
您可以使用 [組態] 區段,透過 Azure 入口網站,設定在本快速入門中建立的 Java 元件。
如需設定您在本快速入門中建立的三個 Java 元件的詳細資訊,請參閱下列連結:
清除資源
本快速入門中建立的資源會影響您的 Azure 帳單。 如果您不會長期使用這些服務,請使用下列命令來移除本快速入門中建立的所有專案:
az group delete --resource-group $RESOURCE_GROUP