你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:使用 Terraform 预配 Azure Spring Apps
注意
从 2025 年 3 月中旬开始,基本、标准和企业计划将弃用,停用期为三年。 建议过渡到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
从 2024 年 9 月 30 日开始,标准消耗和专用计划将弃用,六个月后将完全关闭。 建议过渡到 Azure 容器应用。 有关详细信息,请参阅将 Azure Spring Apps 标准消耗和专用计划迁移到 Azure 容器应用。
本文适用于:❌ 基本版 ✔️ 标准版 ✔️ 企业版
本快速入门介绍如何使用 Terraform 将 Azure Spring Apps 群集部署到现有虚拟网络中。
借助 Azure Spring Apps,可以轻松地将 Spring 应用程序部署到 Azure,而无需更改代码。 该服务管理 Spring 应用程序的基础结构,让开发人员可以专注于代码。 Azure Spring Apps 可以通过以下方法提供生命周期管理:综合性监视和诊断、配置管理、服务发现、CI/CD 集成、蓝绿部署等。
企业部署计划包括以下 Tanzu 组件:
- 生成服务
- 应用程序配置服务
- 服务注册表
- Spring Cloud 网关
- API 门户
通过 AzureRM Terraform 提供程序提供 API 门户组件时,将包含该组件。
如需更多自定义(包括自定义域支持),请参阅 Azure Spring Apps Terraform 提供程序文档。
先决条件
- Azure 订阅。 如果你没有订阅,请在开始之前创建一个免费帐户。
- Hashicorp Terraform
- Azure Spring Apps 群集的两个专用子网,一个用于服务运行时,另一个用于 Spring 应用程序。 有关子网和虚拟网络要求,请参阅在虚拟网络中部署 Azure Spring Apps 的虚拟网络要求部分。
- 用于 Azure Spring Apps 诊断设置的现有 Log Analytics 工作区,以及一个基于工作区的 Application Insights 资源。 有关详细信息,请参阅使用诊断设置分析日志和指标以及 Azure Spring Apps 中的 Application Insights Java 进程内代理。
- 你已确定供 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 用于内部 Azure Spring Apps 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 Spring Apps 企业计划实例,请参阅 Azure 市场中的企业计划的要求部分。
查看 Terraform 计划
本快速入门中使用的配置文件来自 Azure Spring Apps 参考体系结构。
# Azure provider version
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "= 3.21.1"
}
}
}
provider "azurerm" {
features {}
}
### Create Resource group
resource "azurerm_resource_group" "sc_corp_rg" {
name = var.resource_group_name
location = var.location
}
### Create Application Insights
resource "azurerm_application_insights" "sc_app_insights" {
name = var.app_insights_name
location = var.location
resource_group_name = var.resource_group_name
application_type = "web"
workspace_id = "/subscriptions/${var.subscription}/resourceGroups/${var.azurespringcloudvnetrg}/providers/Microsoft.OperationalInsights/workspaces/${var.sc_law_id}"
depends_on = [azurerm_resource_group.sc_corp_rg]
}
### Create Spring Cloud Service
resource "azurerm_spring_cloud_service" "sc" {
name = var.sc_service_name
resource_group_name = var.resource_group_name
location = var.location
sku_name = "S0"
network {
app_subnet_id = "/subscriptions/${var.subscription}/resourceGroups/${var.azurespringcloudvnetrg}/providers/Microsoft.Network/virtualNetworks/${var.vnet_spoke_name}/subnets/${var.app_subnet_id}"
service_runtime_subnet_id = "/subscriptions/${var.subscription}/resourceGroups/${var.azurespringcloudvnetrg}/providers/Microsoft.Network/virtualNetworks/${var.vnet_spoke_name}/subnets/${var.service_runtime_subnet_id}"
cidr_ranges = var.sc_cidr
}
timeouts {
create = "60m"
delete = "2h"
}
depends_on = [azurerm_resource_group.sc_corp_rg]
tags = var.tags
}
### Update Diags setting for Spring Cloud Service
resource "azurerm_monitor_diagnostic_setting" "sc_diag" {
name = "monitoring"
target_resource_id = azurerm_spring_cloud_service.sc.id
log_analytics_workspace_id = "/subscriptions/${var.subscription}/resourceGroups/${var.azurespringcloudvnetrg}/providers/Microsoft.OperationalInsights/workspaces/${var.sc_law_id}"
log {
category = "ApplicationConsole"
enabled = true
retention_policy {
enabled = false
}
}
metric {
category = "AllMetrics"
retention_policy {
enabled = false
}
}
}
应用 Terraform 计划
若要应用 Terraform 计划,请执行以下步骤:
编辑该文件,在其中添加以下值:
要部署到的 Azure 帐户的订阅 ID。
提供 Azure Spring Apps 的区域中的一个部署位置,如各区域的产品可用性中所示。 需要以短格式输入位置名称。 若要获取此值,请使用以下命令生成 Azure 位置列表,然后查找所选区域的“名称”值。
az account list-locations --output table
编辑文件以添加以下新部署信息:
- 要部署到的资源组的名称。
- 为 Azure Spring Apps 部署选择的名称。
- 为 Application Insights 资源选择的名称。
- 三个 CIDR 范围(至少 /16),用于托管 Azure Spring Apps 后端基础结构。 CIDR 范围不得与目标子网中的任何现有 CIDR 范围重叠
- 要在所有支持标记的资源上作为标记应用的键/值对。 有关详细信息,请参阅使用标记对 Azure 资源和管理层次结构进行组织
编辑该文件以添加以下现有基础结构信息:
- 现有虚拟网络所在的资源组的名称。
- 现有作用域虚拟网络的名称。
- Azure Spring Apps 应用程序服务要使用的现有子网的名称。
- Azure Spring Apps 运行时服务要使用的现有子网的名称。
- Azure Log Analytics 工作区的名称。
运行以下命令以初始化 Terraform 模块:
terraform init
运行以下命令以创建 Terraform 部署计划:
terraform plan -out=springcloud.plan
运行以下命令以应用 Terraform 部署计划:
terraform apply springcloud.plan
查看已部署的资源
可以使用 Azure 门户来检查已部署的资源,也可以使用 Azure CLI 或 Azure PowerShell 脚本列出已部署的资源。
清理资源
如果打算继续使用后续的快速入门和教程,则可能需要保留这些资源。 如果不再需要本文中创建的资源,请使用以下命令将其删除。
terraform destroy -auto-approve
后续步骤
在本快速入门中,你已使用 Terraform 将 Azure Spring Apps 实例部署到了现有虚拟网络中,然后验证了部署。 若要详细了解 Azure Spring Apps,请继续访问以下资源。
- 从以下位置部署下列示例应用程序之一:
- 在 Azure Spring Apps 中使用自定义域。
- 使用 Azure 应用程序网关向 Internet 公开 Azure Spring Apps 中的应用程序。 有关详细信息,请参阅在虚拟网络中使用端到端 TLS 公开应用程序。
- 查看基于 Microsoft Azure 架构良好的框架的安全端到端 Azure Spring Apps 参考体系结构。