Quickstart: Azure Spring Apps inrichten met Behulp van Terraform

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

Dit artikel is van toepassing op:❌ Basic ✔️ Standard ✔️ Enterprise

In deze quickstart wordt beschreven hoe u Terraform gebruikt om een Azure Spring Apps-cluster te implementeren in een bestaand virtueel netwerk.

Met Azure Spring Apps kunt u Spring-toepassingen eenvoudig implementeren in Azure zonder codewijzigingen. De service beheert de infrastructuur van Spring-toepassingen, zodat ontwikkelaars zich kunnen richten op hun code. Azure Spring Apps biedt levenscyclusbeheer met uitgebreide bewaking en diagnose, configuratiebeheer, servicedetectie, CI/CD-integratie, blauwgroene implementaties en meer.

Het Enterprise-implementatieplan bevat de volgende Tanzu-onderdelen:

  • Build-service
  • Toepassingsconfiguratieservice
  • Serviceregister
  • Spring Cloud Gateway
  • API-portal

Het API Portal-onderdeel wordt opgenomen wanneer het beschikbaar wordt via de AzureRM Terraform-provider.

Zie de documentatie van de Azure Spring Apps Terraform-provider voor meer aanpassingen, waaronder ondersteuning voor aangepaste domeinen.

Vereisten

Het Terraform-plan controleren

Het configuratiebestand dat in deze quickstart wordt gebruikt, is afkomstig uit de referentiearchitectuur van 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            = "E0" 

  # Tanzu service registry - Set to true if Enterprise Tier
  service_registry_enabled = true
  build_agent_pool_size    = "S1"

  
  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
    }
  }
}


# Begin Tanzu Components


resource "azurerm_spring_cloud_build_pack_binding" "appinsights-binding" {
  name                    = "appins-binding"
  spring_cloud_builder_id = "${azurerm_spring_cloud_service.sc.id}/buildServices/default/builders/default"
  binding_type            = "ApplicationInsights"
  launch {
    properties = {
      sampling_percentage = "10"
    }

    secrets = {
      connection-string   = azurerm_application_insights.sc_app_insights.connection_string
    }
  }
}


# Configuration service
resource "azurerm_spring_cloud_configuration_service" "configservice" {
  name                    = "default"
  spring_cloud_service_id = azurerm_spring_cloud_service.sc.id
}

# Gateway
resource "azurerm_spring_cloud_gateway" "scgateway" {
  name                    = "default"
  spring_cloud_service_id = azurerm_spring_cloud_service.sc.id
  instance_count          = 2 
}

resource "azurerm_spring_cloud_api_portal" "apiportal" {
  name                          = "default"
  spring_cloud_service_id       = azurerm_spring_cloud_service.sc.id
  gateway_ids                   = [azurerm_spring_cloud_gateway.scgateway.id]
  https_only_enabled            = false
  public_network_access_enabled = true
  instance_count                = 1
}

Het Terraform-plan toepassen

Voer de volgende stappen uit om het Terraform-plan toe te passen:

  1. Sla het variables.tf bestand voor het Standard-abonnement of het Enterprise-abonnement lokaal op en open het in een editor.

  2. Bewerk het bestand om de volgende waarden toe te voegen:

    • De abonnements-id van het Azure-account waarnaar u gaat implementeren.

    • Een implementatielocatie uit de regio's waar Azure Spring Apps beschikbaar is, zoals wordt weergegeven in Producten die beschikbaar zijn per regio. U hebt de korte vorm van de locatienaam nodig. Als u deze waarde wilt ophalen, gebruikt u de volgende opdracht om een lijst met Azure-locaties te genereren en zoekt u vervolgens de naamwaarde op voor de regio die u hebt geselecteerd.

      az account list-locations --output table
      
  3. Bewerk het bestand om de volgende nieuwe implementatiegegevens toe te voegen:

    • De naam van de resourcegroep waarnaar u gaat implementeren.
    • Een naam van uw keuze voor de Implementatie van Azure Spring Apps.
    • Een naam van uw keuze voor de Application Insights-resource.
    • Drie CIDR-bereiken (ten minste /16) die worden gebruikt voor het hosten van de back-endinfrastructuur van Azure Spring Apps. De CIDR-bereiken mogen niet overlappen met bestaande CIDR-bereiken in het doelsubnet
    • De sleutel-/waardeparen die moeten worden toegepast als tags op alle resources die tags ondersteunen. Zie Tags gebruiken om uw Azure-resources en -beheerhiërarchie te organiseren voor meer informatie
  4. Bewerk het bestand om de volgende bestaande infrastructuurgegevens toe te voegen:

    • De naam van de resourcegroep waarin het bestaande virtuele netwerk zich bevindt.
    • De naam van het bestaande virtuele bereiknetwerk.
    • De naam van het bestaande subnet dat moet worden gebruikt door de Azure Spring Apps Application Service.
    • De naam van het bestaande subnet dat moet worden gebruikt door de Azure Spring Apps Runtime-service.
    • De naam van de Azure Log Analytics-werkruimte.
  5. Voer de volgende opdracht uit om de Terraform-modules te initialiseren:

    terraform init
    
  6. Voer de volgende opdracht uit om het Terraform-implementatieplan te maken:

    terraform plan -out=springcloud.plan
    
  7. Voer de volgende opdracht uit om het Terraform-implementatieplan toe te passen:

    terraform apply springcloud.plan
    

Geïmplementeerde resources bekijken

U kunt de Azure-portal gebruiken om de geïmplementeerde resources te controleren of Azure CLI of een Azure PowerShell-script gebruiken om de geïmplementeerde resources weer te geven.

Resources opschonen

Als u van plan bent om verder te gaan met volgende snelstarts en zelfstudies, kunt u deze resources het beste intact laten. Wanneer u de resources die in dit artikel zijn gemaakt niet meer nodig hebt, verwijdert u deze met behulp van de volgende opdracht.

terraform destroy -auto-approve

Volgende stappen

In deze quickstart hebt u een Azure Spring Apps-exemplaar geïmplementeerd in een bestaand virtueel netwerk met behulp van Terraform en vervolgens de implementatie gevalideerd. Ga verder met de onderstaande resources voor meer informatie over Azure Spring Apps.