在本快速入門中,您將瞭解如何在 Azure Container Apps 中部署應用程式,以使用 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 CLI。
- Azure Container Apps CLI 擴充功能。 使用 0.3.47 版或更高版本。 使用
az extension add --name containerapp --upgrade --allow-preview命令來安裝最新版本。
設定
若要建立環境變數、資源群組和 Azure Container Apps 環境,請使用下列步驟:
環境變數包含您的自定義值,因此在執行下列命令之前,請先以您自己的值取代 所包圍
<>的佔位元值:export RESOURCE_GROUP=<RESOURCE_GROUP> export LOCATION=<LOCATION> 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使用下列命令將系結新增至 vet 服務:
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
確認應用程式狀態
使用下列步驟來驗證應用程式狀態:
使用從 API 閘道命令傳回的
az containerapp updateURL,在瀏覽器中檢視前端應用程式。 應用程式應該類似下列螢幕快照:使用下列步驟檢視 Eureka 伺服器儀錶板:
重要
若要檢視 Eureka Server 儀錶板和 Spring 儀錶板的管理員,您必須至少
Microsoft.App/managedEnvironments/write將角色指派給受控環境資源上的帳戶。 您可以在資源上明確指派Owner或Contributor角色。 您也可以遵循步驟來建立自定義角色定義,並將它指派給您的帳戶。使用下列步驟檢視 Spring 儀錶板的管理員:
選擇性:設定 Java 元件
您可以使用 [組態] 區段,透過 Azure 入口網站,設定在本快速入門中建立的 Java 元件。
如需設定您在本快速入門中建立的三個 Java 元件的詳細資訊,請參閱下列連結:
清除資源
本快速入門中建立的資源會影響您的 Azure 帳單。 如果您不會長期使用這些服務,請使用下列命令來移除本快速入門中建立的所有專案:
az group delete --resource-group $RESOURCE_GROUP