Поделиться через


Краткое руководство. Подготовка Azure Spring Apps с помощью Terraform

Примечание.

Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.

Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.

Эта статья относится к: ❎ Basic ✅ Standard ✅ Enterprise

В этом кратком руководстве рассказывается, как развернуть кластер Azure Spring Apps в существующей виртуальной сети с помощью Terraform.

Azure Spring Apps позволяет легко развертывать в Azure приложения Spring без изменений кода. Эта служба управляет инфраструктурой приложений Spring, благодаря чему разработчики могут сосредоточиться на коде. Azure Spring Apps обеспечивает управление жизненным циклом за счет комплексного мониторинга и диагностики, управления конфигурацией, обнаружения служб, интеграции CI/CD, выполнения сине-зеленых развертываний и прочего.

План развертывания Enterprise включает следующие компоненты Tanzu:

  • Служба сборки;
  • Служба конфигурации приложений;
  • Реестр служб
  • Spring Cloud Gateway
  • Портал API.

Компонент "Портал API" будет включен, когда он станет доступен через поставщик AzureRM Terraform.

Дополнительные сведения о настройке, включая поддержку личного домена, см. в документации по поставщику Terraform для Приложений Azure Spring.

Необходимые компоненты

Проверка плана Terraform

Файл конфигурации, используемый в этом кратком руководстве, взят из эталонной архитектуры 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
    }
  }
}

Применение плана Terraform

Чтобы применить план Terraform, выполните следующие действия:

  1. Сохраните файл variables.tf для плана "Стандартный" или "Корпоративный" локально, а затем откройте его в редакторе.

  2. Измените файл, добавив такие значения.

    • Идентификатор подписки учетной записи Azure, в которой будет выполняться развертывание.

    • Расположение развертывания — один из регионов, в которых доступна служба Azure Spring Apps (см. страницу Доступность продуктов по регионам). Вам потребуется краткая форма имени расположения. Чтобы получить это значение, используйте следующую команду для получения списка расположений Azure, а затем найдите значение параметра Имя для выбранного региона.

      az account list-locations --output table
      
  3. Измените файл, чтобы добавить следующие сведения о новом развертывании:

    • Имя группы ресурсов, в которой будет выполняться развертывание.
    • Выбранное вами имя для развертывания Приложений Azure Spring.
    • Выбранное вами имя для ресурса Application Insights.
    • Три диапазона CIDR (как минимум /16), которые используются для размещения серверной инфраструктуры Приложений Azure Spring. Диапазоны CIDR не должны перекрываться с существующими диапазонами CIDR в целевой подсети.
    • Пары "ключ-значение", применяемые в качестве тегов ко всем ресурсам, поддерживающим теги. Дополнительные сведения см. в статье Использование тегов для упорядочивания ресурсов Azure и создания иерархии управления.
  4. Измените файл, чтобы добавить следующие сведения о существующей инфраструктуре:

    • Имя группы ресурсов, в которую входит существующая виртуальная сеть.
    • Имя существующей виртуальной сети области.
    • Имя существующей подсети, которую будет использовать служба приложений в Приложениях Azure Spring.
    • Имя существующей подсети, которую будет использовать служба среды выполнения Приложений Azure Spring.
    • Имя рабочей области Log Analytics.
  5. Выполните эту команду, чтобы инициализировать модули Terraform:

    terraform init
    
  6. Выполните эту команду, чтобы создать план развертывания Terraform:

    terraform plan -out=springcloud.plan
    
  7. Выполните эту команду, чтобы применить план развертывания Terraform:

    terraform apply springcloud.plan
    

Просмотр развернутых ресурсов

Вы можете использовать портал Azure, чтобы проверить развернутые ресурсы, либо скрипт Azure CLI или Azure PowerShell, чтобы получить список развернутых ресурсов.

Очистка ресурсов

Если вы планируете продолжить работу с последующими краткими руководствами и статьями, эти ресурсы можно не удалять. Если вам больше не нужны ресурсы, созданные в рамках этой статьи, удалите их с помощью такой команды.

terraform destroy -auto-approve

Следующие шаги

В этом кратком руководстве вы научились развертывать экземпляр службы Azure Spring Apps в существующей виртуальной сети с помощью Terraform, а затем проверять результаты развертывания. Дополнительные сведения о Azure Spring Apps содержатся в статьях ниже.