共用方式為

快速入门:使用托管Java组件启动Java微服务应用程序

本文介绍如何在Azure Container Apps中部署应用程序,该应用程序使用Java组件来处理配置管理、服务发现以及运行状况和指标。 此示例中显示的示例应用程序是使用微服务体系结构模式的 Java PetClinic。 下图描绘了 Azure Container Apps 上的 PetClinic 应用程序的体系结构:

Java组件与微服务应用程序之间的关系的Diagram.

PetClinic 应用程序包括以下功能:

  • 前端是 API 网关应用上托管的独立 Node.js Web 应用。
  • API 网关将请求路由到后端服务应用。
  • 后端应用是使用 Spring Boot 构建的。
  • 每个后端应用都使用 HyperSQL 数据库作为持久性存储。
  • 这些应用在Azure Container Apps上使用托管Java组件,包括服务注册表、配置服务器和管理员服务器。
  • 配置服务器从 Git 存储库读取数据。
  • Log Analytics工作区记录服务器数据。

在本教程中,你将了解:

  • 创建配置服务器
  • 创建一系列微服务应用
  • 将服务器组件绑定到微服务应用
  • 应用集合的部署
  • 审核已部署的应用

本文结束时,你将部署一个 Web 应用程序和三个后端应用程序,这些应用程序配置为使用三个不同的Java组件。 然后,可以通过Azure门户管理每个组件。

先决条件

  • Azure帐户。 如果没有Azure帐户,免费创建一个帐户。 对于本快速入门,需要在 Azure 订阅上具备 ContributorOwner 角色。 有关详细信息,请参阅使用 Azure 门户分配角色
  • 安装 Azure CLI
  • Azure Container Apps CLI 扩展版本 0.3.47 或更高版本。 使用 az extension add --name containerapp --upgrade --allow-preview 命令安装最新版本。

安装

若要创建环境变量、资源组和Azure Container Apps环境,请使用以下步骤:

  1. 环境变量包含你的自定义值,因此在运行以下命令之前,请将括在 <> 内的占位符值替换为自己的值:

    export RESOURCE_GROUP=<your-resource-group>
    export LOCATION=<region>
    export CONTAINER_APP_ENVIRONMENT=<container-apps-environment>
    
  2. 创建更多包含微服务应用的设置的环境变量。 这些值用于定义Java组件的名称和配置以及用于部署微服务的Azure Container Apps。 使用以下命令创建这些环境变量:

    export CONFIG_SERVER_COMPONENT=configserver
    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 cloud set -n AzureChinaCloud
    az login
    # az cloud set -n AzureCloud   //means return to Public Azure.
    
  4. 使用以下命令创建资源组以组织Azure服务:

    az group create \
        --name $RESOURCE_GROUP \
        --location $LOCATION
    
  5. 使用以下命令创建托管Java组件和容器应用的Azure Container Apps环境:

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

创建Java组件

现在,请创建以下支持应用的Java组件:

  • 配置服务器:管理微服务应用的配置设置。

若要创建这些服务器组件,请使用以下步骤:

  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
    

部署微服务应用

若要使用预生成的容器映像将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. 使用以下命令创建兽医应用:

    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组件绑定到容器应用。 本部分所创建的绑定提供以下功能:

  • 启动时,将配置数据从托管配置服务器注入每个应用中。

使用 containerapp update 命令通过以下步骤为每个应用创建绑定:

  1. 使用以下命令将绑定添加到客户数据应用:

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $CUSTOMERS_SERVICE \
        --bind $CONFIG_SERVER_COMPONENT 
    
  2. 使用以下命令将绑定添加到兽医服务:

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $VETS_SERVICE \
        --bind $CONFIG_SERVER_COMPONENT 
    
  3. 使用以下命令将绑定添加到访问服务:

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $VISITS_SERVICE \
        --bind $CONFIG_SERVER_COMPONENT 
    
  4. 将绑定添加到 API 网关。 使用以下命令返回前端应用程序的 URL,然后在浏览器中打开此位置:

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $API_GATEWAY \
        --bind $CONFIG_SERVER_COMPONENT \
        --query properties.configuration.ingress.fqdn 
    

验证应用状态

使用以下步骤验证应用状态:

  1. 使用在上一部分中找到的 URL,在浏览器中查看前端应用程序。 该应用程序应与以下屏幕截图类似:

    Pet Clinic 应用程序主页的屏幕截图。

可选:配置Java组件

可以使用 Configurations 部分通过 Azure 门户配置在本快速入门中创建的Java组件。

“配置”部分的屏幕截图,其中显示了“属性名称”和“值”文本框,以及删除属性的功能。

有关配置在本快速入门中创建的三个Java组件的详细信息,请参阅以下链接:

清理资源

本快速入门中创建的资源对Azure帐单产生影响。 如果不打算长期使用这些服务,请使用以下命令删除本快速入门中创建的所有内容:

az group delete --resource-group $RESOURCE_GROUP