Freigeben über


Schnellstart: Bereitstellen von Azure Spring Apps mithilfe von Terraform

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

Dieser Artikel gilt für:❌ Basic ✔️ Standard ✔️ Enterprise

In dieser Schnellstartanleitung wird beschrieben, wie Sie mithilfe von Terraform einen Azure Spring Apps-Cluster in einem vorhandenen virtuellen Netzwerk bereitstellen.

Mit Azure Spring Apps lassen sich Spring-Anwendungen ganz einfach und ohne Codeänderungen in Azure bereitstellen. Der Dienst verwaltet die Infrastruktur von Spring-Anwendungen und ermöglicht es Entwicklern dadurch, sich auf ihren Code zu konzentrieren. Azure Spring Apps bietet eine Lebenszyklusverwaltung mit umfassender Überwachung und Diagnose, Konfigurationsverwaltung, Dienstermittlung, CI/CD-Integration, Blau/Grün-Bereitstellungen und mehr.

Der Enterprise-Bereitstellungsplan umfasst die folgenden Tanzu-Komponenten:

  • Buildservice
  • Anwendungskonfigurationsdienst
  • Dienstregistrierung
  • Spring Cloud Gateway
  • API-Portal

Die API-Portalkomponente wird eingeschlossen, wenn sie über den AzureRM Terraform-Anbieter zur Verfügung gestellt wird.

Weitere Anpassungen, einschließlich Unterstützung benutzerdefinierter Domänen, finden Sie in der Dokumentation zum Azure Spring Apps-Terraform-Anbieter.

Voraussetzungen

Überprüfen des Terraform-Plans

Die in dieser Schnellstartanleitung verwendete Konfigurationsdatei stammt aus der Azure Spring Apps-Referenzarchitektur.

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

Anwenden des Terraform-Plans

Führen Sie die folgenden Schritte aus, um den Terraform-Plan anzuwenden:

  1. Speichern Sie die Datei variables.tf für den Standard-Plan oder den Enterprise-Plan lokal, und öffnen Sie sie dann in einem Editor.

  2. Bearbeiten Sie die Datei, und fügen Sie ihr folgende Werte hinzu:

    • Abonnement-ID des Azure-Kontos, in dem Sie die Bereitstellung durchführen

    • Bereitstellungsstandort aus den Regionen, in denen Azure Spring Apps verfügbar ist (siehe Verfügbare Produkte nach Region). Sie benötigen die Kurzform des Standortnamens. Verwenden Sie zum Abrufen dieses Werts den folgenden Befehl, um eine Liste von Azure-Standorten zu generieren, und suchen Sie dann nach dem Wert für Name für die von Ihnen ausgewählte Region.

      az account list-locations --output table
      
  3. Bearbeiten Sie die Datei, um die folgenden neuen Bereitstellungsinformationen hinzuzufügen:

    • Name der Ressourcengruppe, in der Sie die Bereitstellung durchführen
    • Name Ihrer Wahl für die Azure Spring Apps-Bereitstellung
    • Name Ihrer Wahl für die Application Insights-Ressource
    • Drei CIDR-Bereiche (vom Typ „/16“ oder größer), die zum Hosten der Azure Spring Apps-Back-End-Infrastruktur verwendet werden. Die CIDR-Bereiche dürfen sich nicht mit vorhandenen CIDR-Bereichen im Zielsubnetz überschneiden.
    • Schlüssel-Wert-Paare, die als Tags auf alle Ressourcen angewendet werden sollen, die Tags unterstützen. Unter Verwenden von Tags zum Organisieren von Azure-Ressourcen und Verwaltungshierarchie erhalten Sie weitere Informationen.
  4. Bearbeiten Sie die Datei, um die folgenden vorhandenen Infrastrukturinformationen hinzuzufügen:

    • Name der Ressourcengruppe, in der sich das vorhandene virtuelle Netzwerk befindet
    • Name des virtuellen Netzwerks des vorhandenen Bereichs
    • Name des vorhandenen Subnetzes, das vom Azure Spring Apps-Anwendungsdienst verwendet werden soll
    • Name des vorhandenen Subnetzes, das vom Azure Spring Apps-Laufzeitdienst verwendet werden soll
    • Name des Azure Log Analytics-Arbeitsbereichs
  5. Führen Sie den folgenden Befehl aus, um die Terraform-Module zu initialisieren:

    terraform init
    
  6. Führen Sie den folgenden Befehl aus, um den Terraform-Bereitstellungsplan zu initialisieren:

    terraform plan -out=springcloud.plan
    
  7. Führen Sie den folgenden Befehl aus, um den Terraform-Bereitstellungsplan anzuwenden:

    terraform apply springcloud.plan
    

Überprüfen der bereitgestellten Ressourcen

Sie können entweder das Azure-Portal nutzen, um die bereitgestellten Ressourcen zu überprüfen, oder Azure CLI oder ein Azure PowerShell-Skript, um die bereitgestellten Ressourcen aufzulisten.

Bereinigen von Ressourcen

Falls Sie mit weiteren Schnellstartanleitungen und Tutorials fortfahren möchten, sollten Sie die Ressourcen nicht bereinigen. Wenn Sie die in diesem Artikel erstellten Ressourcen nicht mehr benötigen, löschen Sie sie mithilfe des folgenden Befehls:

terraform destroy -auto-approve

Nächste Schritte

In dieser Schnellstartanleitung haben Sie mithilfe von Terraform eine Azure Spring Apps-Instanz in einem vorhandenen virtuellen Netzwerk bereitgestellt und die Bereitstellung überprüft. Weitere Informationen zu Azure Spring Apps finden Sie in den folgenden Ressourcen.