Udostępnij za pośrednictwem


Szybki start: aprowizuj usługę Azure Spring Apps przy użyciu narzędzia Terraform

Uwaga

Azure Spring Apps to nowa nazwa usługi Azure Spring Cloud. Mimo że usługa ma nową nazwę, stara nazwa będzie widoczna w niektórych miejscach przez pewien czas, ponieważ pracujemy nad aktualizowaniem zasobów, takich jak zrzuty ekranu, filmy wideo i diagramy.

Ten artykuł dotyczy:❌ Basic ✔️ Standard ✔️ Enterprise

W tym przewodniku Szybki start opisano sposób wdrażania klastra usługi Azure Spring Apps w istniejącej sieci wirtualnej za pomocą narzędzia Terraform.

Usługa Azure Spring Apps ułatwia wdrażanie aplikacji Spring na platformie Azure bez żadnych zmian w kodzie. Usługa zarządza infrastrukturą aplikacji Spring, aby deweloperzy mogli skupić się na swoim kodzie. Usługa Azure Spring Apps zapewnia zarządzanie cyklem życia przy użyciu kompleksowego monitorowania i diagnostyki, zarządzania konfiguracją, odnajdywania usług, integracji/ciągłego wdrażania, wdrożeń niebieskich zielonych i nie tylko.

Plan wdrożenia przedsiębiorstwa obejmuje następujące składniki Tanzu:

  • Usługa kompilacji
  • Usługa konfiguracji aplikacji
  • Rejestr usług
  • Spring Cloud Gateway
  • API Portal

Składnik portalu interfejsu API zostanie uwzględniony, gdy stanie się dostępny za pośrednictwem dostawcy narzędzia Terraform modułu AzureRM.

Aby uzyskać więcej możliwości dostosowywania, w tym obsługę domeny niestandardowej, zobacz dokumentację dostawcy narzędzia Terraform usługi Azure Spring Apps.

Wymagania wstępne

  • Subskrypcja platformy Azure. Jeśli nie masz subskrypcji, przed rozpoczęciem utwórz bezpłatne konto .
  • Hashicorp Terraform
  • Dwie dedykowane podsieci klastra usługi Azure Spring Apps, jedna dla środowiska uruchomieniowego usługi, a druga dla aplikacji Spring. Aby uzyskać wymagania dotyczące podsieci i sieci wirtualnej, zobacz sekcję Wymagania dotyczące sieci wirtualnej w temacie Wdrażanie usługi Azure Spring Apps w sieci wirtualnej.
  • Istniejący obszar roboczy usługi Log Analytics dla ustawień diagnostycznych usługi Azure Spring Apps i zasób aplikacji opartej na obszarze roboczym Szczegółowe informacje. Aby uzyskać więcej informacji, zobacz Analizowanie dzienników i metryk przy użyciu ustawień diagnostycznych i agenta przetwarzania Java Szczegółowe informacje Java w usłudze Azure Spring Apps.
  • Trzy wewnętrzne zakresy routingu międzydomenowego (CIDR, Classless Inter-Domain Routing) (co najmniej /16 ), które zostały zidentyfikowane do użycia przez klaster usługi Azure Spring Apps. Te zakresy CIDR nie będą bezpośrednio routingowane i będą używane tylko wewnętrznie przez klaster usługi Azure Spring Apps. Klastry mogą nie używać 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 lub 192.0.2.0/24 dla wewnętrznej trasy CIDR usługi Azure Spring Apps. Klastry mogą również nie używać żadnych zakresów adresów IP uwzględnionych w zakresie adresów sieci wirtualnej klastra.
  • Uprawnienie usługi przyznane sieci wirtualnej. Dostawca zasobów usługi Azure Spring Apps wymaga uprawnień właściciela do sieci wirtualnej, aby udzielić dedykowanej i dynamicznej jednostki usługi w sieci wirtualnej w celu dalszego wdrażania i konserwacji. Aby uzyskać instrukcje i więcej informacji, zobacz sekcję Udzielanie uprawnień usługi do sieci wirtualnej w temacie Wdrażanie usługi Azure Spring Apps w sieci wirtualnej.
  • Jeśli używasz usługi Azure Firewall lub wirtualnego urządzenia sieciowego (WUS), musisz również spełnić następujące wymagania wstępne:
    • Reguły w pełni kwalifikowanej nazwy domeny (FQDN). Aby uzyskać więcej informacji, zobacz Wymagania dotyczące sieci wirtualnej.
    • Unikatowa trasa zdefiniowana przez użytkownika (UDR) zastosowana do każdego środowiska uruchomieniowego usługi i podsieci aplikacji Spring. Aby uzyskać więcej informacji na temat tras zdefiniowanych przez użytkownika, zobacz Routing ruchu w sieci wirtualnej. Trasa zdefiniowana przez użytkownika powinna być skonfigurowana przy użyciu trasy dla wersji 0.0.0.0/0 z miejscem docelowym urządzenia WUS przed wdrożeniem klastra usługi Azure Spring Apps. Aby uzyskać więcej informacji, zobacz sekcję Bring your own route table ( Wdrażanie usługi Azure Spring Apps w sieci wirtualnej).
  • Jeśli wdrażasz wystąpienie planu Usługi Azure Spring Apps Enterprise po raz pierwszy w subskrypcji docelowej, zobacz sekcję Wymagania planu przedsiębiorstwa w witrynie Azure Marketplace.

Zapoznaj się z planem narzędzia Terraform

Plik konfiguracji używany w tym przewodniku Szybki start pochodzi z architektury referencyjnej usługi 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
}

Stosowanie planu narzędzia Terraform

Aby zastosować plan programu Terraform, wykonaj następujące kroki:

  1. Zapisz plik variables.tf dla planu standardowego lub planu Enterprise lokalnie, a następnie otwórz go w edytorze.

  2. Edytuj plik, aby dodać następujące wartości:

    • Identyfikator subskrypcji konta platformy Azure, do którego będziesz wdrażać.

    • Lokalizacja wdrożenia z regionów, w których jest dostępna usługa Azure Spring Apps, jak pokazano w artykule Produkty dostępne według regionów. Będzie potrzebna krótka forma nazwy lokalizacji. Aby uzyskać tę wartość, użyj następującego polecenia, aby wygenerować listę lokalizacji platformy Azure, a następnie wyszukaj wartość Nazwa dla wybranego regionu.

      az account list-locations --output table
      
  3. Edytuj plik, aby dodać następujące nowe informacje o wdrożeniu:

    • Nazwa grupy zasobów, w której zostanie wdrożona.
    • Wybrana nazwa wdrożenia usługi Azure Spring Apps.
    • Wybrana nazwa zasobu Application Szczegółowe informacje.
    • Trzy zakresy CIDR (co najmniej /16), które są używane do hostowania infrastruktury zaplecza usługi Azure Spring Apps. Zakresy CIDR nie mogą pokrywać się z żadnymi istniejącymi zakresami CIDR w docelowej podsieci
    • Pary klucz/wartość, które mają być stosowane jako tagi dla wszystkich zasobów, które obsługują tagi. Aby uzyskać więcej informacji, zobacz Organizowanie zasobów platformy Azure i hierarchii zarządzania przy użyciu tagów
  4. Edytuj plik, aby dodać następujące istniejące informacje o infrastrukturze:

    • Nazwa grupy zasobów, w której znajduje się istniejąca sieć wirtualna.
    • Nazwa istniejącej sieci wirtualnej zakresu.
    • Nazwa istniejącej podsieci, która ma być używana przez usługę aplikacji Azure Spring Apps.
    • Nazwa istniejącej podsieci, która ma być używana przez usługę Azure Spring Apps Runtime Service.
    • Nazwa obszaru roboczego usługi Azure Log Analytics.
  5. Uruchom następujące polecenie, aby zainicjować moduły programu Terraform:

    terraform init
    
  6. Uruchom następujące polecenie, aby utworzyć plan wdrożenia programu Terraform:

    terraform plan -out=springcloud.plan
    
  7. Uruchom następujące polecenie, aby zastosować plan wdrożenia programu Terraform:

    terraform apply springcloud.plan
    

Przeglądanie wdrożonych zasobów

Możesz użyć witryny Azure Portal, aby sprawdzić wdrożone zasoby lub użyć interfejsu wiersza polecenia platformy Azure lub skryptu programu Azure PowerShell, aby wyświetlić listę wdrożonych zasobów.

Czyszczenie zasobów

Jeśli planujesz kontynuować pracę z kolejnymi przewodnikami Szybki start i samouczkami, możesz pozostawić te zasoby na miejscu. Jeśli zasoby utworzone w tym artykule nie będą już potrzebne, usuń je przy użyciu następującego polecenia.

terraform destroy -auto-approve

Następne kroki

W tym przewodniku Szybki start wdrożono wystąpienie usługi Azure Spring Apps w istniejącej sieci wirtualnej przy użyciu narzędzia Terraform, a następnie sprawdzono wdrożenie. Aby dowiedzieć się więcej na temat usługi Azure Spring Apps, przejdź do poniższych zasobów.