共用方式為


快速入門:在 Azure Container Apps 中使用受控 Java 元件啟動您的第一個 Java 微服務應用程式

在本快速入門中,您將瞭解如何在 Azure Container Apps 中部署應用程式,以使用 Java 元件來處理組態管理、服務探索和健康情況和計量。 此範例中使用的範例應用程式是使用微服務架構模式的 Java PetClinic。 下圖描述 Azure Container Apps 上的 PetClinic 應用程式架構:

Java 元件與微服務應用程式之間的關聯性圖表。

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 環境,請使用下列步驟:

  1. 環境變數包含您的自定義值,因此在執行下列命令之前,請先以您自己的值取代 所包圍 <> 的佔位元值:

    export RESOURCE_GROUP=<RESOURCE_GROUP>
    export LOCATION=<LOCATION>
    export CONTAINER_APP_ENVIRONMENT=<CONTAINER_APPS_ENVIRONMENT>
    
  2. 現在,您可以建立更多環境變數,其中包含微服務應用程式的設定。 這些值可用來定義 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
    
  3. 使用下列命令登入 Azure CLI 並選擇使用中的訂用帳戶:

    az login
    
  4. 使用下列命令建立資源群組來組織您的 Azure 服務:

    az group create \
        --name $RESOURCE_GROUP \
        --location $LOCATION
    
  5. 使用下列命令建立 Azure Container Apps 環境,其同時裝載 Java 元件和容器應用程式:

    az containerapp env create \
        --resource-group $RESOURCE_GROUP \
        --name $CONTAINER_APP_ENVIRONMENT \
        --location $LOCATION
    

建立Java元件

現在,您會建立下列支援應用程式的 Java 元件:

  • 設定伺服器。 用來管理微服務應用程式的組態設定。
  • Eureka 伺服器。 用來管理服務登錄和探索。
  • 系統管理伺服器。 用來監視和管理微服務應用程式的健全狀況和計量。

若要建立這些伺服器元件,請使用下列步驟:

  1. 使用下列指令建立 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
    
  2. 使用下列命令為您的 Java 元件建立 Eureka 伺服器:

    az containerapp env java-component eureka-server-for-spring create \
        --resource-group $RESOURCE_GROUP \
        --name $EUREKA_SERVER_COMPONENT
        --environment $CONTAINER_APP_ENVIRONMENT \
    
  3. 使用下列指令建立 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 存放庫

  1. 使用下列指令建立客戶資料應用程式:

    az containerapp create \
        --resource-group $RESOURCE_GROUP \
        --name $CUSTOMERS_SERVICE \
        --environment $CONTAINER_APP_ENVIRONMENT \
        --image $CUSTOMERS_SERVICE_IMAGE
    
  2. 使用下列命令建立 vet 應用程式:

    az containerapp create \
        --resource-group $RESOURCE_GROUP \
        --name $VETS_SERVICE \
        --environment $CONTAINER_APP_ENVIRONMENT \
        --image $VETS_SERVICE_IMAGE
    
  3. 使用下列命令建立造訪應用程式:

    az containerapp create \
        --resource-group $RESOURCE_GROUP \
        --name $VISITS_SERVICE \
        --environment $CONTAINER_APP_ENVIRONMENT \
        --image $VISITS_SERVICE_IMAGE
    
  4. 使用下列指令建立 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使用 命令,使用下列步驟建立每個應用程式的系結:

  1. 使用下列命令將系結新增至客戶資料應用程式:

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $CUSTOMERS_SERVICE \
        --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT
    
  2. 使用下列命令將系結新增至 vet 服務:

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $VETS_SERVICE \
        --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT
    
  3. 使用下列命令將系結新增至 visits 服務:

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $VISITS_SERVICE \
        --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT
    
  4. 將系結新增至 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 
    

確認應用程式狀態

使用下列步驟來驗證應用程式狀態:

  1. 使用從 API 閘道命令傳回的 az containerapp update URL,在瀏覽器中檢視前端應用程式。 應用程式應該類似下列螢幕快照:

    寵物診所應用程式的首頁螢幕快照。

  2. 使用下列步驟檢視 Eureka 伺服器儀錶板:

    重要

    若要檢視 Eureka Server 儀錶板和 Spring 儀錶板的管理員,您必須至少 Microsoft.App/managedEnvironments/write 將角色指派給受控環境資源上的帳戶。 您可以在資源上明確指派 OwnerContributor 角色。 您也可以遵循步驟來建立自定義角色定義,並將它指派給您的帳戶。

    1. 執行下列命令以傳回儀錶板 URL:

      az containerapp env java-component eureka-server-for-spring show \
          --resource-group $RESOURCE_GROUP \
          --name $EUREKA_SERVER_COMPONENT \
          --environment $CONTAINER_APP_ENVIRONMENT \
          --query properties.ingress.fqdn
      
    2. 在瀏覽器中開啟URL。 您應該會看到類似下列螢幕快照的應用程式:

      寵物診所應用程式 Eureka Server 的螢幕快照。

  3. 使用下列步驟檢視 Spring 儀錶板的管理員:

    1. 使用下列命令傳回儀錶板 URL:

      az containerapp env java-component admin-for-spring show \
          --resource-group $RESOURCE_GROUP \
          --name $ADMIN_SERVER_COMPONENT \
          --environment $CONTAINER_APP_ENVIRONMENT \
          --query properties.ingress.fqdn
      
    2. 在瀏覽器中開啟URL。 您應該會看到類似下列螢幕快照的應用程式:

      寵物診所管理員儀錶板的螢幕快照,其中顯示五項服務,以及四項服務的版本資訊。

選擇性:設定 Java 元件

您可以使用 [組態] 區段,透過 Azure 入口網站,設定在本快速入門中建立的 Java 元件。

[組態] 區段的螢幕快照,其中顯示 [屬性名稱] 和 [值] 文本框,以及刪除屬性的能力。

如需設定您在本快速入門中建立的三個 Java 元件的詳細資訊,請參閱下列連結:

清除資源

本快速入門中建立的資源會影響您的 Azure 帳單。 如果您不會長期使用這些服務,請使用下列命令來移除本快速入門中建立的所有專案:

az group delete --resource-group $RESOURCE_GROUP