您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

快速入门:生成应用并将其部署到 Azure Spring Cloud

在本快速入门中,你会使用 Azure CLI 生成微服务应用程序并将其部署到 Azure Spring Cloud。

必备知识

下载示例应用

如果你到目前为止一直在使用 Azure Cloud Shell,请切换到本地命令提示符以执行以下步骤。

  1. 创建一个新文件夹,并克隆示例应用存储库。

    mkdir source-code
    
    cd source-code
    
    git clone https://github.com/Azure-Samples/Azure-Spring-Cloud-Samples
    
  2. 导航到存储库目录中。

    cd Azure-Spring-Cloud-Samples
    

部署 PlanetWeatherProvider

  1. 在 Azure Spring Cloud 实例中为 PlanetWeatherProvider 项目创建应用。

    az spring-cloud app create --name planet-weather-provider --runtime-version NetCore_31
    

    为了启用自动服务注册,为应用提供了与项目 appsettings.json 文件中的 spring.application.name 值相同的名称:

    "spring": {
      "application": {
        "name": "planet-weather-provider"
      }
    }
    

    此命令可能需要几分钟才能运行。

  2. 将目录切换到 PlanetWeatherProvider 项目文件夹。

    cd steeltoe-sample/src/planet-weather-provider
    
  3. 创建要部署的二进制文件和 .zip 文件。

    dotnet publish -c release -o ./publish
    

    提示

    项目文件包含以下 XML,以便在将二进制文件写入 ./publish 文件夹之后,将它们打包为 .zip 文件 :

    <Target Name="Publish-Zip" AfterTargets="Publish">
      <ZipDirectory SourceDirectory="$(PublishDir)" DestinationFile="$(MSBuildProjectDirectory)/publish-deploy-planet.zip" Overwrite="true" />
    </Target>
    
  4. 部署到 Azure。

    运行以下命令之前,请确保命令提示符处于项目文件夹中。

    az spring-cloud app deploy -n planet-weather-provider --runtime-version NetCore_31 --main-entry Microsoft.Azure.SpringCloud.Sample.PlanetWeatherProvider.dll --artifact-path ./publish-deploy-planet.zip
    

    --main-entry 选项指定从 .zip 文件的根文件夹到包含应用程序入口点的 .dll 文件的相对路径。 服务上传 .zip 文件之后,它会提取所有文件和文件夹,并尝试执行指定 .dll 文件中的入口点。

    此命令可能需要几分钟才能运行。

部署 SolarSystemWeather

  1. 这次在 Azure Spring Cloud 实例中为 SolarSystemWeather 项目创建另一个应用:

    az spring-cloud app create --name solar-system-weather --runtime-version NetCore_31
    

    solar-system-weather 是在 SolarSystemWeather 项目的 appsettings.json 文件中指定的名称。

    此命令可能需要几分钟才能运行。

  2. 将目录切换到 SolarSystemWeather 项目。

    cd ../solar-system-weather
    
  3. 创建要部署的二进制文件和 .zip 文件。

    dotnet publish -c release -o ./publish
    
  4. 部署到 Azure。

    az spring-cloud app deploy -n solar-system-weather --runtime-version NetCore_31 --main-entry Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.dll --artifact-path ./publish-deploy-solar.zip
    

    此命令可能需要几分钟才能运行。

分配公共终结点

若要测试应用程序,请通过浏览器将 HTTP GET 请求发送到 solar-system-weather 应用程序。 为此,需要一个公共终结点以用于请求。

  1. 若要分配终结点,请运行以下命令。

    az spring-cloud app update -n solar-system-weather --assign-endpoint true
    
  2. 若要获取终结点的 URL,请运行以下命令。

    Windows:

    az spring-cloud app show -n solar-system-weather -o table
    

    Linux:

    az spring-cloud app show --name solar-system-weather | grep url
    

测试应用程序

将 GET 请求发送到 solar-system-weather 应用。 在浏览器中,导航到末尾追加了 /weatherforecast 的公共 URL。 例如:

https://servicename-solar-system-weather.azuremicroservices.io/weatherforecast

输出为 JSON:

[{"Key":"Mercury","Value":"very warm"},{"Key":"Venus","Value":"quite unpleasant"},{"Key":"Mars","Value":"very cool"},{"Key":"Saturn","Value":"a little bit sandy"}]

此响应显示两个微服务应用程序都在运行。 SolarSystemWeather 应用返回从 PlanetWeatherProvider 应用检索的数据。


本文档说明如何使用以下内容生成微服务应用程序并将其部署到 Azure Spring Cloud:

  • Azure CLI
  • Maven 插件
  • Intellij

在使用 Azure CLI 或 Maven 进行部署之前,请完成预配 Azure Spring Cloud 实例设置配置服务器的示例。

先决条件

部署过程

在本地构建微服务应用程序

  1. 将示例应用存储库克隆到你的 Azure 云帐户。 更改目录并生成项目。

    git clone https://github.com/azure-samples/spring-petclinic-microservices
    cd spring-petclinic-microservices
    mvn clean package -DskipTests -Denv=cloud
    

编译项目需要 5 至 10 分钟时间。 完成后,相应的文件夹中应会包含每个服务的各个 JAR 文件。

生成应用并将其部署到 Azure Spring Cloud

  1. 如果在前面的快速入门中没有运行以下命令,请设置 CLI 默认值。

    az configure --defaults group=<resource group name> spring-cloud=<service name>  
    az spring-cloud config-server git set -n <service instance name> --uri https://github.com/azure-samples/spring-petclinic-microservices-config
    
  2. 创建 PetClinic 的 2 核微服务:API 网关和客户服务。

    az spring-cloud app create --name api-gateway --instance-count 1 --memory 2 --assign-endpoint
    az spring-cloud app create --name customers-service --instance-count 1 --memory 2
    
  3. 部署上一步骤中生成的 JAR 文件。

    az spring-cloud app deploy --name api-gateway --jar-path spring-petclinic-api-gateway/target/spring-petclinic-api-gateway-2.3.6.jar --jvm-options="-Xms2048m -Xmx2048m"
    az spring-cloud app deploy --name customers-service --jar-path spring-petclinic-customers-service/target/spring-petclinic-customers-service-2.3.6.jar --jvm-options="-Xms2048m -Xmx2048m"
    
  4. 在部署后通过以下命令查询应用状态。

    az spring-cloud app list -o table
    
        Name               Location    ResourceGroup    Production Deployment    Public Url                                           Provisioning Status    CPU    Memory    Running Instance    Registered Instance    Persistent Storage
    -----------------  ----------  ---------------  -----------------------  ---------------------------------------------------  ---------------------  -----  --------  ------------------  ---------------------  --------------------
    api-gateway        eastus      xxxxxx-sp         default                  https://<service name>-api-gateway.azuremicroservices.io   Succeeded              1      2         1/1                 1/1                    -     
    customers-service  eastus      <service name>         default                                                                       Succeeded              1      2         1/1                 1/1                    -     
    

验证服务

使用如上所示的公共 URL(格式为“https://-api-gateway.azuremicroservices.io”)从浏览器访问应用网关和客户服务。

访问 PetClinic 客户服务

提示

若要对部署进行故障排除,可以使用以下命令在每次应用运行 az spring-cloud app logs --name <app name> -f 时实时获取日志流式处理。

部署额外的应用

若要让 PetClinic 应用正常运行所有功能(如“管理服务器”、“访问”和“兽医”功能),可以通过以下命令部署其他应用:

az spring-cloud app create --name admin-server --instance-count 1 --memory 2 --assign-endpoint
az spring-cloud app create --name vets-service --instance-count 1 --memory 2
az spring-cloud app create --name visits-service --instance-count 1 --memory 2
az spring-cloud app deploy --name admin-server --jar-path spring-petclinic-admin-server/target/spring-petclinic-admin-server-2.3.6.jar --jvm-options="-Xms2048m -Xmx2048m"
az spring-cloud app deploy --name vets-service --jar-path spring-petclinic-vets-service/target/spring-petclinic-vets-service-2.3.6.jar --jvm-options="-Xms2048m -Xmx2048m"
az spring-cloud app deploy --name visits-service --jar-path spring-petclinic-visits-service/target/spring-petclinic-visits-service-2.3.6.jar --jvm-options="-Xms2048m -Xmx2048m"

后续步骤

在此快速入门中,你创建了 Azure 资源,如果这些资源保留在订阅中,将继续产生费用。 如果不打算继续学习下一个快速入门,请参阅清理资源。 否则,请继续学习下一个快速入门: