快速入门:使用 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 Administrator
和Network Contributor
权限,以便为虚拟网络中专用的动态服务主体授予访问权限,从而进行进一步的部署和维护。 有关说明和详细信息,请参阅在虚拟网络中部署 Azure Spring Apps 的向服务授予虚拟网络权限部分。 - 如果使用 Azure 防火墙或网络虚拟设备 (NVA),则还需要满足以下先决条件:
- 网络和完全限定域名 (FQDN) 规则。 有关详细信息,请参阅虚拟网络要求。
- 应用于每个服务运行时和 Spring 应用程序子网的一个唯一的用户定义的路由 (UDR)。 有关 UDR 的详细信息,请参阅虚拟网络流量路由。 在部署 Azure Spring Apps 群集之前,应将 UDR 配置为具有 NVA 目标的 0.0.0.0/0 路由。 有关详细信息,请参阅在虚拟网络中部署 Azure Spring Apps 的自带路由表部分。
- 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,请继续访问以下资源。
- 从以下位置部署下列示例应用程序之一:
- 将自定义域与 Azure Spring Apps 配合使用。
- 使用 Azure 应用程序网关向 Internet 公开 Azure Spring Apps 中的应用程序。 有关详细信息,请参阅在虚拟网络中使用端到端 TLS 公开应用程序。
- 查看基于 Azure 架构良好框架的安全端到端 Azure Spring Apps 参考体系结构。