Inicio rápido: Aprovisionamiento de Azure Spring Apps con Terraform
Nota:
Los planes de Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de retiro de 3 años. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte el anuncio de retirada de Azure Spring Apps.
El plan de consumo estándar y dedicado quedará obsoleto a partir del 30 de septiembre de 2024, con un cierre completo al cabo de seis meses. Se recomienda realizar la transición a Azure Container Apps. Para obtener más información, consulte Migrar el plan de consumo y dedicado Azure Spring Apps Standard a Azure Container Apps.
Este artículo se aplica a: ❎ Básico ✅ Estándar ✅ Enterprise
En este inicio rápido se describe cómo usar Terraform para implementar un clúster de Azure Spring Apps en una red virtual existente.
Azure Spring Apps facilita la implementación de aplicaciones de Spring en Azure sin necesidad de realizar cambios en el código. El servicio administra la infraestructura de las aplicaciones de Spring, con el fin de que los desarrolladores puedan centrarse en el código. Azure Spring Apps proporciona administración del ciclo de vida mediante el uso de una supervisión y un diagnóstico completos, administración de la configuración, detección de servicios, integración de CI/CD e implementaciones azul-verde, entre otros.
El plan de implementación Enterprise incluye los siguientes componentes de Tanzu:
- Servicio de compilación
- Servicio de configuración de aplicaciones
- Registro del servicio
- Spring Cloud Gateway
- Portal de API
El componente Portal de API se incluirá cuando esté disponible mediante el proveedor de Terraform de AzureRM.
Para más personalización, incluida la compatibilidad con dominios personalizados, consulte la documentación del proveedor de Terraform de Azure Spring Apps.
Requisitos previos
- Suscripción a Azure. Si no tiene una suscripción, cree una cuenta gratuita antes de empezar.
- Hashicorp Terraform
- Dos subredes dedicadas para el clúster de Azure Spring Apps, una para el entorno de ejecución del servicio y otra para las aplicaciones Spring. Puede encontrar los requisitos de la subred y la red virtual en la sección Requisitos de red virtual de Implementación de Azure Spring Apps en una red virtual.
- Un área de trabajo de Log Analytics existente para la configuración de diagnóstico de Azure Spring Apps y un recurso de Application Insights basado en el área de trabajo. Para más información, consulte Análisis de registros y métricas con la configuración de diagnóstico y Agente In-Process de Java de Application Insights en Azure Spring Apps.
- Tres intervalos internos de enrutamiento de interdominios sin clases (CIDR) (al menos /16 cada uno) que ha identificado para su uso por parte del clúster de Azure Spring Apps. Estos intervalos CIDR no se podrán enrutar directamente y solo los usará internamente el clúster de Azure Spring Apps. Los clústeres no pueden usar 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 o 192.0.2.0/24 para el CIDR interno de Azure Spring Apps. Los clústeres tampoco pueden usar ningún intervalo IP incluido en el intervalo de direcciones de red virtual del clúster.
- Permiso de servicio concedido a la red virtual. El proveedor de recursos de Azure Spring Apps necesita permisos
User Access Administrator
yNetwork Contributor
en la red virtual para conceder una entidad de servicio dinámica y dedicada en la red virtual para realizar tareas de implementación y mantenimiento adicionales. Puede encontrar instrucciones y más información en la sección Concesión de permisos de servicio a la red virtual de Implementación de Azure Spring Apps en una red virtual. - Si usa Azure Firewall o una aplicación virtual de red (NVA), también deberá cumplir los siguientes requisitos previos:
- Reglas de nombre de dominio completo (FQDN) y de red. Para más información, consulte Requisitos de red virtual.
- Una ruta definida por el usuario (UDR) única aplicada a cada una de las subredes del entorno de ejecución del servicio y la aplicación de Spring. Para más información sobre las UDR, consulte Enrutamiento del tráfico de redes virtuales. La UDR debe configurarse con una ruta de 0.0.0.0/0 con un destino de la NVA antes de implementar el clúster de Azure Spring Apps. Para más información, consulte la sección Traer su propia tabla de rutas de Implementación de Azure Spring Apps en una red virtual.
- Si va a implementar la instancia del plan Enterprise de Azure Spring Apps por primera vez en la suscripción de destino, vea la sección Requisitos del plan Enterprise en Azure Marketplace.
Revisión del plan de Terraform
El archivo de configuración que se usa en este inicio rápido procede de la arquitectura de referencia de 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
}
}
}
Aplicación del plan de Terraform
Para aplicar el plan de Terraform, siga estos pasos:
Guarde el archivo variables.tf del plan Estándar o el plan Enterprise localmente y ábralo en un editor.
Edite el archivo para agregar los siguientes valores:
El identificador de suscripción de la cuenta de Azure en la que se va a realizar la implementación.
Una ubicación de implementación entre las regiones en las que Azure Spring Apps está disponible, como se muestra en Productos disponibles por región. Necesitará el formato corto del nombre de la ubicación. Para obtener este valor, use el siguiente comando para generar una lista de ubicaciones de Azure y, a continuación, busque el valor Nombre de la región seleccionada.
az account list-locations --output table
Edite el archivo para agregar la siguiente información de implementación nueva:
- El nombre del grupo de recursos en el que se va a realizar la implementación.
- Un nombre de su elección para la implementación de Azure Spring Apps.
- Un nombre de su elección para el recurso de Application Insights.
- Tres intervalos CIDR (al menos /16) que se usen para hospedar la infraestructura de back-end de Azure Spring Apps. Los intervalos CIDR no se deben superponerse con ningún intervalo CIDR existente en la subred de destino.
- Los pares clave-valor que se aplicarán como etiquetas en todos los recursos que admiten etiquetas. Para más información, consulte Uso de etiquetas para organizar los recursos de Azure y la jerarquía de administración.
Edite el archivo para agregar la siguiente información de infraestructura existente:
- El nombre del grupo de recursos donde reside la red virtual existente.
- El nombre de la red virtual de ámbito existente.
- El nombre de la subred existente que va a usar el servicio de aplicaciones de Azure Spring Apps.
- El nombre de la subred existente que va a usar el servicio de entorno en tiempo de ejecución de Azure Spring Apps.
- El nombre del área de trabajo de Azure Log Analytics.
Ejecute el comando siguiente para inicializar los módulos de Terraform.
terraform init
Ejecute el siguiente comando para crear el plan de implementación de Terraform:
terraform plan -out=springcloud.plan
Ejecute el siguiente comando para aplicar el plan de implementación de Terraform:
terraform apply springcloud.plan
Revisión de los recursos implementados
Puede usar Azure Portal para comprobar los recursos implementados, o bien usar un script de la CLI de Azure o Azure PowerShell script para enumerar los recursos implementados.
Limpieza de recursos
Si planea seguir trabajando en otros inicios rápidos y tutoriales, considere la posibilidad de dejar estos recursos activos. Cuando ya no los necesite, elimine los recursos creados en este artículo mediante el comando siguiente.
terraform destroy -auto-approve
Pasos siguientes
En este inicio rápido, ha implementado una instancia de Azure Spring Apps en una red virtual existente con Terraform y, luego, ha validado la implementación. Para obtener más información sobre Azure Spring Apps, continúe con los artículos siguientes.
- Implemente una de las siguientes aplicaciones de ejemplo desde las ubicaciones siguientes:
- Use dominios personalizados con Azure Spring Apps.
- Exponga aplicaciones de Azure Spring Apps en Internet mediante Azure Application Gateway. Para obtener más información, consulte Exposición de aplicaciones con TLS de un extremo a otro en una red virtual.
- Vea la arquitectura de referencia de Azure Spring Apps completa, que se basa en el Marco de buena arquitectura de Microsoft Azure.