快速入门:使用 Bicep 预配 Azure Spring Apps

注意

基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告

标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。

本快速入门介绍如何使用 Bicep 模板将 Azure Spring Apps 群集部署到现有虚拟网络中。

借助 Azure Spring Apps,可以轻松地将 Spring 应用程序部署到 Azure,而无需更改代码。 该服务管理 Spring 应用程序的基础结构,让开发人员可以专注于代码。 Azure Spring Apps 可以通过以下方法提供生命周期管理:综合性监视和诊断、配置管理、服务发现、CI/CD 集成、蓝绿部署等。

先决条件

  • Azure 订阅。 如果你没有订阅,请在开始之前创建一个试用版订阅。
  • Azure Spring Apps 群集的两个专用子网,一个用于服务运行时,另一个用于 Spring 应用程序。 有关子网和虚拟网络要求,请参阅在虚拟网络中部署 Azure Spring Apps虚拟网络要求部分。
  • Azure Spring Apps 诊断设置的现有 Log Analytics 工作区。 有关详细信息,请参阅使用诊断设置分析日志和指标
  • 你已确定供 Azure Spring Apps 群集使用的三个内部无类别域际路由 (CIDR) 范围(每个范围至少为 /16)。 这些 CIDR 范围不可直接路由,只能由 Azure Spring Apps 群集在内部使用。 群集不能将 169.254.0.0/16、172.30.0.0/16、172.31.0.0/16 或 192.0.2.0/24 用于内部 Spring 应用 CIDR 范围,或群集虚拟网络地址范围内包含的任何 IP 范围。
  • 已授予对虚拟网络的服务权限。 Azure Spring Apps 资源提供程序要求对虚拟网络拥有 User Access AdministratorNetwork Contributor 权限,以便为虚拟网络中专用的动态服务主体授予访问权限,从而进行进一步的部署和维护。 有关说明和详细信息,请参阅在虚拟网络中部署 Azure Spring Apps向服务授予虚拟网络权限部分。
  • 如果使用 Azure 防火墙或网络虚拟设备 (NVA),则还需要满足以下先决条件:
  • Azure CLI

使用 Bicep 进行部署

若要部署群集,请执行以下步骤。

首先,创建一个包含以下内容的 azuredeploy.bicep 文件:

@description('The instance name of the Azure Spring Cloud resource')
param springCloudInstanceName string

@description('The name of the Application Insights instance for Azure Spring Cloud')
param appInsightsName string

@description('The resource ID of the existing Log Analytics workspace. This will be used for both diagnostics logs and Application Insights')
param laWorkspaceResourceId string

@description('The resourceID of the Azure Spring Cloud App Subnet')
param springCloudAppSubnetID string

@description('The resourceID of the Azure Spring Cloud Runtime Subnet')
param springCloudRuntimeSubnetID string

@description('Comma-separated list of IP address ranges in CIDR format. The IP ranges are reserved to host underlying Azure Spring Cloud infrastructure, which should be 3 at least /16 unused IP ranges, must not overlap with any Subnet IP ranges')
param springCloudServiceCidrs string = '10.0.0.0/16,10.2.0.0/16,10.3.0.1/16'

@description('The tags that will be associated to the Resources')
param tags object = {
  environment: 'lab'
}

var location = resourceGroup().location

resource appInsights 'Microsoft.Insights/components@2020-02-02-preview' = {
  name: appInsightsName
  location: location
  kind: 'web'
  tags: tags
  properties: {
    Application_Type: 'web'
    Flow_Type: 'Bluefield'
    Request_Source: 'rest'
    WorkspaceResourceId: laWorkspaceResourceId
  }
}

resource springCloudInstance 'Microsoft.AppPlatform/Spring@2022-03-01-preview' = {
  name: springCloudInstanceName
  location: location
  tags: tags
  sku: {
    name: 'S0'
    tier: 'Standard'
  }
  properties: {
    networkProfile: {
      serviceCidr: springCloudServiceCidrs
      serviceRuntimeSubnetId: springCloudRuntimeSubnetID
      appSubnetId: springCloudAppSubnetID
    }
  }
}

resource springCloudMonitoringSettings 'Microsoft.AppPlatform/Spring/monitoringSettings@2020-07-01' = {
  name: '${springCloudInstance.name}/default' // The only supported value is 'default'
  properties: {
    traceEnabled: true
    appInsightsInstrumentationKey: appInsights.properties.InstrumentationKey
  }
}

resource springCloudDiagnostics 'microsoft.insights/diagnosticSettings@2017-05-01-preview' = {
  name: 'monitoring'
  scope: springCloudInstance
  properties: {
    workspaceId: laWorkspaceResourceId
    logs: [
      {
        category: 'ApplicationConsole'
        enabled: true
        retentionPolicy: {
          days: 30
          enabled: false
        }
      }
    ]
  }
}

然后,打开 Bash 窗口并运行以下 Azure CLI 命令,将 <value> 占位符替换为以下值:

  • resource-group:用于部署 Azure Spring Apps 实例的资源组名称。

  • springCloudInstanceName:Azure Spring Apps 资源的名称。

  • appInsightsName:Azure Spring Apps 的 Application Insights 实例名称。

  • laWorkspaceResourceId:现有 Log Analytics 工作区的资源 ID(例如 /subscriptions/<你的订阅>/resourcegroups/<你的日志分析资源组>/providers/ Microsoft.OperationalInsights/workspaces/<你的日志分析工作区名称>。)

  • springCloudAppSubnetID:Azure Spring Apps 应用程序子网的资源 ID。

  • springCloudRuntimeSubnetID:Azure Spring Apps 运行时子网的资源 ID。

  • springCloudServiceCidrs:CIDR 格式的 IP 地址范围(总共 3 个)的逗号分隔列表。 这些 IP 范围将保留下来,用于托管底层的 Azure Spring Apps 基础结构。 这 3 个范围应该至少是 /16 的未使用 IP 范围,且不能与网络中使用的任何可路由子网 IP 范围重叠。

    az deployment group create \
        --resource-group <value> \
        --name initial \
        --template-file azuredeploy.bicep \
        --parameters \
            springCloudInstanceName=<value> \
            appInsightsName=<value> \
            laWorkspaceResourceId=<value> \
            springCloudAppSubnetID=<value> \
            springCloudRuntimeSubnetID=<value> \
            springCloudServiceCidrs=<value>
    

    此命令使用 Bicep 模板在现有虚拟网络中创建 Azure Spring Apps 实例。 该命令还会在现有 Azure Monitor Log Analytics 工作区中创建基于工作区的 Application Insights 实例。

查看已部署的资源

可以使用 Azure 门户来检查已部署的资源,也可以使用 Azure CLI 或 Azure PowerShell 脚本列出已部署的资源。

清理资源

如果打算继续使用后续的快速入门和教程,则可能需要保留这些资源。 如果不再需要资源组,可以将其删除,这将删除资源组中的资源。 若要使用 Azure CLI 删除资源组,请使用以下命令:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

后续步骤

在本快速入门中,你已使用 Bicep 将 Azure Spring Apps 实例部署到了现有虚拟网络中,然后验证了部署。 若要详细了解 Azure Spring Apps,请继续访问以下资源。