本文介绍如何在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工作区记录服务器数据。
在本教程中,你将了解:
- 创建配置服务器
- 创建一系列微服务应用
- 将服务器组件绑定到微服务应用
- 应用集合的部署
- 审核已部署的应用
本文结束时,你将部署一个 Web 应用程序和三个后端应用程序,这些应用程序配置为使用三个不同的Java组件。 然后,可以通过Azure门户管理每个组件。
先决条件
- Azure帐户。 如果没有Azure帐户,免费创建一个帐户。 对于本快速入门,需要在 Azure 订阅上具备 Contributor 或 Owner 角色。 有关详细信息,请参阅使用 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 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 cloud set -n AzureChinaCloud az login # az cloud set -n AzureCloud //means return to Public Azure.使用以下命令创建资源组以组织Azure服务:
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION使用以下命令创建托管Java组件和容器应用的Azure Container Apps环境:
az containerapp env create \ --resource-group $RESOURCE_GROUP \ --name $CONTAINER_APP_ENVIRONMENT \ --location $LOCATION
创建Java组件
现在,请创建以下支持应用的Java组件:
- 配置服务器:管理微服务应用的配置设置。
若要创建这些服务器组件,请使用以下步骤:
使用以下命令为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 存储库。
使用以下命令创建客户数据应用:
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组件绑定到容器应用。 本部分所创建的绑定提供以下功能:
- 启动时,将配置数据从托管配置服务器注入每个应用中。
使用 containerapp update 命令通过以下步骤为每个应用创建绑定:
使用以下命令将绑定添加到客户数据应用:
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $CUSTOMERS_SERVICE \ --bind $CONFIG_SERVER_COMPONENT使用以下命令将绑定添加到兽医服务:
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $VETS_SERVICE \ --bind $CONFIG_SERVER_COMPONENT使用以下命令将绑定添加到访问服务:
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $VISITS_SERVICE \ --bind $CONFIG_SERVER_COMPONENT将绑定添加到 API 网关。 使用以下命令返回前端应用程序的 URL,然后在浏览器中打开此位置:
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $API_GATEWAY \ --bind $CONFIG_SERVER_COMPONENT \ --query properties.configuration.ingress.fqdn
验证应用状态
使用以下步骤验证应用状态:
可选:配置Java组件
可以使用 Configurations 部分通过 Azure 门户配置在本快速入门中创建的Java组件。
有关配置在本快速入门中创建的三个Java组件的详细信息,请参阅以下链接:
清理资源
本快速入门中创建的资源对Azure帐单产生影响。 如果不打算长期使用这些服务,请使用以下命令删除本快速入门中创建的所有内容:
az group delete --resource-group $RESOURCE_GROUP