Краткое руководство. Подготовка 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.
Необходимые компоненты
- Подписка Azure. Если у вас еще нет подписки, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
- Hashicorp Terraform
- Две выделенные подсети для кластера Azure Spring Apps: одна для среды выполнения службы и вторая для приложений Spring. Подробнее о требованиях к подсети и виртуальной сети см. в разделе Требования виртуальной сети в статье Развертывание Azure Spring Apps в виртуальной сети.
- Существующая рабочая область Log Analytics для параметров диагностики Azure Spring Apps и ресурса Application Insights на основе рабочей области. Дополнительные сведения см. в статье Анализ журналов и метрик с помощью параметров диагностики и Внутрипроцессный агент Java Application Insights в службе Azure Spring Apps.
- Три внутренних диапазона бесклассовой междоменной маршрутизации (CIDR) (как минимум /16 каждый), которые вы определили для использования в кластере Azure Spring Apps. Эти диапазоны CIDR не будут напрямую маршрутизироваться и будут использоваться только внутри кластера Приложений Azure Spring. Кластеры могут не использовать 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 или 192.0.2.0/24 для внутреннего CIDR Для Azure Spring Apps. Кластеры также могут не использовать диапазоны IP-адресов, включенные в диапазон адресов виртуальной сети кластера.
- Разрешение службы, предоставленное виртуальной сети. Поставщик ресурсов Azure Spring Apps требует
User Access Administrator
иNetwork Contributor
разрешения для виртуальной сети для предоставления выделенного и динамического субъекта-службы в виртуальной сети для дальнейшего развертывания и обслуживания. Инструкции и дополнительные сведения см. в разделе Разрешение службы, предоставленное виртуальной сети статьи Развертывание Azure Spring Apps в виртуальной сети. - Если вы используете Брандмауэр Azure или сетевое виртуальное устройство (NVA), вам также потребуется выполнить следующие предварительные требования:
- Правила для сетевых и полных доменных имен (FQDN). Дополнительные сведения см. в разделе Требования к виртуальной сети.
- Уникальный определяемый пользователем маршрут (UDR), применяемый для каждой подсети среды выполнения службы и подсетей приложения Spring. Дополнительные сведения об использовании протокола UDR см. в разделе Маршрутизация трафика в виртуальной сети. Для UDR необходимо настроить маршрут для 0.0.0.0/0 с указанием назначения NVA перед развертыванием кластера Azure Spring Apps. Дополнительные сведения см. в разделе Использование собственной таблицы маршрутизации статьи Развертывание службы Azure Spring Apps в виртуальной сети.
- Если вы развертываете экземпляр плана Azure Spring Apps Enterprise впервые в целевой подписке, см. раздел "Требования" плана Enterprise в Azure Marketplace.
Проверка плана 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, выполните следующие действия:
Сохраните файл variables.tf для плана "Стандартный" или "Корпоративный" локально, а затем откройте его в редакторе.
Измените файл, добавив такие значения.
Идентификатор подписки учетной записи Azure, в которой будет выполняться развертывание.
Расположение развертывания — один из регионов, в которых доступна служба Azure Spring Apps (см. страницу Доступность продуктов по регионам). Вам потребуется краткая форма имени расположения. Чтобы получить это значение, используйте следующую команду для получения списка расположений Azure, а затем найдите значение параметра Имя для выбранного региона.
az account list-locations --output table
Измените файл, чтобы добавить следующие сведения о новом развертывании:
- Имя группы ресурсов, в которой будет выполняться развертывание.
- Выбранное вами имя для развертывания Приложений Azure Spring.
- Выбранное вами имя для ресурса Application Insights.
- Три диапазона CIDR (как минимум /16), которые используются для размещения серверной инфраструктуры Приложений Azure Spring. Диапазоны CIDR не должны перекрываться с существующими диапазонами CIDR в целевой подсети.
- Пары "ключ-значение", применяемые в качестве тегов ко всем ресурсам, поддерживающим теги. Дополнительные сведения см. в статье Использование тегов для упорядочивания ресурсов Azure и создания иерархии управления.
Измените файл, чтобы добавить следующие сведения о существующей инфраструктуре:
- Имя группы ресурсов, в которую входит существующая виртуальная сеть.
- Имя существующей виртуальной сети области.
- Имя существующей подсети, которую будет использовать служба приложений в Приложениях Azure Spring.
- Имя существующей подсети, которую будет использовать служба среды выполнения Приложений Azure Spring.
- Имя рабочей области Log Analytics.
Выполните эту команду, чтобы инициализировать модули Terraform:
terraform init
Выполните эту команду, чтобы создать план развертывания Terraform:
terraform plan -out=springcloud.plan
Выполните эту команду, чтобы применить план развертывания Terraform:
terraform apply springcloud.plan
Просмотр развернутых ресурсов
Вы можете использовать портал Azure, чтобы проверить развернутые ресурсы, либо скрипт Azure CLI или Azure PowerShell, чтобы получить список развернутых ресурсов.
Очистка ресурсов
Если вы планируете продолжить работу с последующими краткими руководствами и статьями, эти ресурсы можно не удалять. Если вам больше не нужны ресурсы, созданные в рамках этой статьи, удалите их с помощью такой команды.
terraform destroy -auto-approve
Следующие шаги
В этом кратком руководстве вы научились развертывать экземпляр службы Azure Spring Apps в существующей виртуальной сети с помощью Terraform, а затем проверять результаты развертывания. Дополнительные сведения о Azure Spring Apps содержатся в статьях ниже.
- Разверните одно из следующих примеров приложений из следующих расположений:
- Использование личных доменов в Azure Spring Apps.
- Публикация приложений в Azure Spring Apps в Интернете с помощью Шлюза приложений Azure. Дополнительные сведения см. в разделе "Предоставление приложений с помощью сквозного TLS" в виртуальной сети.
- Просмотр безопасной комплексной эталонной архитектуры Azure Spring Apps на основе продуманной архитектуры Microsoft Azure.