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 e Network 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:
  • 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:

  1. Salvare in locale il file variables.tf per il piano Standard o il piano Enterprise, quindi aprirlo in un editor.

  2. 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
      
  3. 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
  4. 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.
  5. Eseguire il seguente comando per inizializzare i moduli Terraform:

    terraform init
    
  6. Eseguire il seguente comando per creare il piano di distribuzione Terraform:

    terraform plan -out=springcloud.plan
    
  7. 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.