Guida introduttiva: effettuare il provisioning di App Azure Spring Apps con Terraform
Nota
I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.
Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.
Questo articolo si applica a:❌ Basic/Standard ✔️ Enterprise
Questa guida introduttiva descrive come usare Terraform per implementare un cluster Azure Spring Apps in una rete virtuale esistente.
Con Azure Spring Apps è semplice implementare le applicazioni Spring in Azure, senza necessità di modifiche al codice. Il servizio gestisce l'infrastruttura delle applicazioni Spring per consentire agli sviluppatori di concentrarsi sul codice. Azure Spring Apps fornisce la gestione del ciclo di vita tramite funzionalità complete di monitoraggio e diagnostica, gestione della configurazione, individuazione dei servizi, integrazione di CI/CD, distribuzioni blu/verde e altro ancora.
Il piano di distribuzione Enterprise include i seguenti componenti Tanzu:
- Servizio di compilazione
- Servizio di configurazione delle applicazioni
- Service Registry
- Spring Cloud Gateway
- Portale API
Il componente del portale API verrà incluso una volta disponibile tramite il provider di AzureRM Terraform.
Per altre personalizzazioni, incluso il supporto del dominio personalizzato, consultare la documentazione del provider di Azure Spring Apps Terraform.
Prerequisiti
- Una sottoscrizione di Azure. Se non si ha già una sottoscrizione, creare un account gratuito prima di iniziare.
- Hashicorp Terraform
- Due subnet dedicate per il cluster Azure Spring Apps: una per il runtime del servizio e una per le applicazioni Spring. Per i requisiti della subnet e della rete virtuale, vedere la sezione Requisiti della rete virtuale di Distribuire Azure Spring Apps in una rete virtuale.
- Un'area di lavoro Log Analytics esistente per le impostazioni di diagnostica di Azure Spring Apps e una risorsa di Application Insights basata sull’area di lavoro. Per altre informazioni, vedere Analizzare log e metriche con le impostazioni di diagnostica e Agente In-Process Java di Application Insights in Azure Spring Apps.
- Tre intervalli di Classless Inter-Domain Routing (CIDR) interni (almeno /16 ciascuno) individuati per l'utilizzo da parte del cluster Azure Spring Apps. Questi intervalli di CIDR non saranno instradabili direttamente e verranno usati solo internamente dal cluster Azure Spring Apps. I cluster non possono usare gli intervalli 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 o 192.0.2.0/24 per il CIDR di Azure Spring Apps. I cluster non possono nemmeno usare gli intervalli IP inclusi nell'intervallo di indirizzi della rete virtuale del cluster.
- Autorizzazione per il servizio concessa alla rete virtuale. Il provider di risorse di Azure Spring Apps richiede le autorizzazioni
User Access Administrator
eNetwork Contributor
per la rete virtuale, per concedere un'entità servizio dedicata e dinamica nella rete virtuale per ulteriore distribuzione e manutenzione. Per istruzioni e ulteriori informazioni, consultare la sezione Concedere al servizio l'autorizzazione per la rete virtuale di Distribuire Azure Spring Apps in una rete virtuale. - Se si usa Firewall di Azure o un'appliance virtuale di rete (NVA), è necessario soddisfare anche i seguenti prerequisiti:
- Regole della rete e del nome di dominio completo (FQDN). Per altre informazioni, vedere Requisiti della rete virtuale.
- Una route definita dall'utente univoca applicata a ogni runtime del servizio e subnet dell'applicazione Spring. Per altre informazioni sulle route definite dall'utente, vedere Routing del traffico della rete virtuale. La route definita dall'utente deve essere configurata con una route per 0.0.0.0/0 con una destinazione della propria appliance virtuale di rete (NVA), prima di distribuire il cluster Azure Spring Apps. Per altre informazioni, vedere la sezione Bring Your On Route Table di Distribuire Azure Spring Apps in una rete virtuale.
- Se si distribuisce un'istanza del piano Enterprise di Azure Spring Apps per la prima volta nella sottoscrizione di destinazione, consultare la sezione Requisiti del piano Enterprise in Azure Marketplace.
Rivedere il piano Terraform
Il file di configurazione usato in questa guida introduttiva è quello dell'architettura di riferimento di 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
}
}
}
Applicare il piano Terraform
Per applicare il piano Terraform, seguire queste fasi:
Salvare in locale il file variables.tf per il piano Standard o il piano Enterprise, quindi aprirlo in un editor.
Modificare il file aggiungendo i valori seguenti:
L'ID della sottoscrizione dell'account Azure in cui si eseguirà la distribuzione.
Posizione di distribuzione dalle aree in cui Azure Spring Apps è disponibile, come illustrato nella sezione Prodotti disponibili in base all'area. Sarà necessario avere la forma breve del nome della posizione. Per ottenere questo valore, usare il seguente comando allo scopo di generare un elenco di località di Azure, quindi cercare il valore Nome per l'area selezionata.
az account list-locations --output table
Modificare il file aggiungendo le seguenti nuove informazioni della distribuzione:
- Nome del gruppo di risorse nel quale si vuole implementare.
- Nome che si è scelto per la distribuzione di Azure Spring Apps.
- Nome che si è scelto per la risorsa di Application Insights.
- Tre intervalli di CIDR (almeno /16) usati per ospitare l'infrastruttura di back-end di Azure Spring Apps. Gli intervalli di CIDR non devono sovrapporsi ad altri intervalli di CIDR esistenti nella subnet di destinazione
- Coppie chiave/valore da applicare come tag per tutte le risorse che supportano i tag. Per ulteriori informazioni, consultare la sezione Usare i tag per organizzare le risorse di Azure e la gerarchia di gestione
Modificare il file aggiungendo le seguenti informazioni sull'infrastruttura esistente:
- Nome del gruppo di risorse nel quale risiede la rete virtuale esistente.
- Nome della rete virtuale esistente nell'ambito.
- Nome della subnet esistente che il servizio dell'applicazione Azure Spring Apps userà.
- Nome della subnet esistente che il servizio di runtime di Azure Spring Apps userà.
- Nome dell'area di lavoro Log Analytics di Azure.
Eseguire il seguente comando per inizializzare i moduli Terraform:
terraform init
Eseguire il seguente comando per creare il piano di distribuzione Terraform:
terraform plan -out=springcloud.plan
Eseguire il seguente comando per applicare il piano di distribuzione Terraform:
terraform apply springcloud.plan
Esaminare le risorse distribuite
Per controllare le risorse distribuite, è possibile usare il portale di Azure, l'interfaccia della riga di comando di Azure o lo script di Azure PowerShell.
Pulire le risorse
Se si prevede di usare le guide di avvio rapido e le esercitazioni successive, è consigliabile non cancellare le risorse create. Quando non sono più necessarie, eliminare le risorse create in questo articolo utilizzando il seguente comando.
terraform destroy -auto-approve
Passaggi successivi
In questa guida introduttiva è stata distribuita un'istanza dell’app per Azure Spring Apps in una rete virtuale esistente usando Terraform, dopodiché la distribuzione è stata convalidata. Per ulteriori informazioni su Azure Spring Apps, passare alle seguenti risorse.
- Implementare una delle seguenti applicazioni di esempio dalle seguenti posizioni:
- Usare i domini personalizzati con Azure Spring Apps.
- Esporre le applicazioni in Azure Spring Apps su Internet usando il gateway applicazione di Azure. Per altre informazioni, vedere Esporre applicazioni con TLS end-to-end in una rete virtuale.
- Visualizzare l'architettura di riferimento di Azure Spring Apps sicura end-to-end basata su Microsoft Azure Well-Architected Framework.