你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本快速入门介绍如何在 Azure 容器应用中部署应用程序,该应用程序使用 Java 组件来处理配置管理、服务发现以及运行状况和指标。 此示例中使用的示例应用程序为 Java PetClinic,其使用微服务体系结构模式。 下图描述了 Azure 容器应用上的 PetClinic 应用程序的体系结构:
PetClinic 应用程序包括以下功能:
- 前端是 API 网关应用上托管的独立 Node.js Web 应用。
- API 网关将请求路由到后端服务应用。
- 后端应用是使用 Spring Boot 构建的。
- 每个后端应用都使用 HyperSQL 数据库作为持久性存储。
- 这些应用使用 Azure 容器应用上的托管 Java 组件,包括服务注册表、配置服务器和管理服务器。
- 配置服务器从 Git 存储库读取数据。
- Log Analytics 工作区记录服务器数据。
在本教程中,你将了解:
- 创建配置服务器、Eureka 服务器、管理服务器和管理组件
- 创建一系列微服务应用
- 将服务器组件绑定到微服务应用
- 部署应用的集合
- 查看已部署的资源
本文结束时,你将部署一个 Web 应用程序和三个后端应用程序,这三个后端应用程序配置为使用三个不同的 Java 组件。 然后,可以通过 Azure 门户管理每个组件。
先决条件
- Azure 帐户:如果没有 Azure 帐户,可以免费创建一个。 需要拥有 Azure 订阅的“参与者”或“所有者”权限才能使用本快速入门。 有关详细信息,请参阅使用 Azure 门户分配 Azure 角色。
- Azure CLI:安装 Azure CLI。
- Azure 容器应用 CLI 扩展。 使用版本 0.3.47 或更高版本。 使用
az extension add --name containerapp --upgrade --allow-preview
命令安装最新版本。
安装
若要创建环境变量、资源组和 Azure 容器应用环境,请使用以下步骤:
环境变量包含你的自定义值,因此在运行以下命令之前,请将括在
<>
内的占位符值替换为自己的值:export RESOURCE_GROUP=<RESOURCE_GROUP> export LOCATION=<LOCATION> export CONTAINER_APP_ENVIRONMENT=<CONTAINER_APPS_ENVIRONMENT>
现在,创建更多包含微服务应用设置的环境变量。 这些值用于定义部署微服务所使用的 Java 组件和 Azure 容器应用的名称及配置。 使用以下命令创建这些环境变量:
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 容器应用环境,以便托管 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 容器应用,请执行以下步骤:
注意
在本文中,你对 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
使用以下命令创建兽医应用:
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
使用以下命令将绑定添加到访问服务:
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 update
命令所返回的 URL,在浏览器中查看前端应用程序。 该应用程序应与以下屏幕截图类似:使用以下步骤查看 Eureka 服务器仪表板:
重要
要查看 Eureka 服务器仪表板和 Spring 管理仪表板,至少需要在托管环境资源上为你的帐户分配
Microsoft.App/managedEnvironments/write
角色。 可以在资源上显式分配Owner
或Contributor
角色。 也可按照以下步骤创建自定义角色定义,并将其分配给你的帐户。使用以下步骤查看 Spring 管理仪表板:
可选:配置 Java 组件
可以使用“配置”部分,通过 Azure 门户配置在本快速入门中创建的 Java 组件。
有关配置在本快速入门中创建的三个 Java 组件的详细信息,请参阅以下链接:
清理资源
本快速入门中创建的资源会影响 Azure 帐单。 如果不打算长期使用这些服务,请使用以下命令删除本快速入门中创建的所有内容:
az group delete --resource-group $RESOURCE_GROUP