Compartilhar via


Guia de Início Rápido: Provisionar o Azure Spring Apps usando o Terraform

Observação

Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de desativação de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.

O plano consumo e dedicado Standard será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira Migrar o plano dedicado e consumo Standard dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.

Este artigo se aplica a: ❎ Basic ✅ Standard ✅ Enterprise

Este guia de início rápido descreve como usar o Terraform para implantar um cluster do Azure Spring Apps em uma rede virtual existente.

O Azure Spring Apps facilita a implantação de aplicativos Spring no Azure sem nenhuma alteração de código. O serviço gerencia a infraestrutura dos aplicativos do Spring para que os desenvolvedores possam se concentrar no código. O Azure Spring Apps fornece gerenciamento de ciclo de vida usando monitoramento e diagnóstico abrangentes, gerenciamento de configuração, descoberta de serviços, integração de CI/CD, implantações em “blue-green” e muito mais.

O plano de implantação Enterprise inclui os seguintes componentes do Tanzu:

  • Serviço de build
  • Serviço de Configuração do Aplicativo
  • Registro do Serviço
  • Spring Cloud Gateway
  • Portal de API

O componente de Portal da API será incluído quando ele ficar disponível por meio do provedor Terraform do AzureRM.

Para ter mais personalização, incluindo suporte de domínio personalizado, confira a documentação do provedor Terraform do Azure Spring Apps.

Pré-requisitos

  • Uma assinatura do Azure. Caso não tenha uma assinatura, crie uma conta gratuita antes de começar.
  • Hashicorp Terraform
  • Duas sub-redes dedicadas para o cluster do Azure Spring Apps: uma para o runtime de serviço e outra para os aplicativos Spring. Para obter os requisitos detalhados da rede virtual, confira a seção Requisitos de rede virtual de Implantar o Azure Spring Apps em uma rede virtual.
  • Um workspace do Log Analytics existente para configurações de diagnóstico do Azure Spring Apps e um recurso do Application Insights baseado em espaço de trabalho. Para obter mais informações, confira Analisar logs e métricas com configurações de diagnóstico e Agente em processo de Java do Application Insights no Azure Spring Apps.
  • Três intervalos internos do CIDR (Roteamento entre Domínios sem Classificação) (pelo menos /16 cada) que você identificou para uso pelo cluster do Azure Spring Apps. Esses intervalos CIDR não serão diretamente roteáveis e só serão usados internamente pelo cluster do Azure Spring Apps. Os clusters não podem usar 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 ou 192.0.2.0/24 para o CIDR do Aplicativos Spring do Azure. Os clusters também podem não usar nenhum intervalo de IP incluído no intervalo de endereços de rede virtual do cluster.
  • Permissão de serviço concedida para a rede virtual. O Provedor de Recursos do Aplicativos Spring do Azure requer User Access Administrator e Network Contributor permissões para sua rede virtual para conceder uma entidade de serviço dedicada e dinâmica na rede virtual para implantação e manutenção posteriores. Para obter instruções e mais informações, confira a seção Conceder permissão de serviço à rede virtual de Implantar o Azure Spring Apps em uma rede virtual.
  • Caso esteja usando o Firewall do Azure ou um NVA (Solução de virtualização de rede), você também precisará atender aos seguintes pré-requisitos:
  • Se você estiver implantando a instância do plano Enterprise do Aplicativos Spring do Azure pela primeira vez na assinatura de destino, confira a seção Requisitos do plano Enterprise no Azure Marketplace.

Revisar o plano do Terraform

O arquivo de configuração usado neste guia de início rápido é da arquitetura de referência do 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
    }
  }
}

Aplicar o plano do Terraform

Para aplicar o plano do Terraform, siga estas etapas:

  1. Salve o arquivo variables.tf do plano Standard ou do plano Enterprise localmente e abra-o em um editor.

  2. Edite o arquivo para adicionar os seguintes valores:

    • A ID da assinatura da conta do Azure que você implantará.

    • Um local de implantação das regiões em que o Azure Spring Apps está disponível, conforme mostrado em Produtos disponíveis por região. Você precisará da forma curta do nome do local. Para obter esse valor, use o comando a seguir para gerar uma lista de locais do Azure e procure o valor Nome da região selecionada.

      az account list-locations --output table
      
  3. Edite o arquivo para adicionar as seguintes novas informações de implantação:

    • O nome do grupo de recursos no qual você implantará.
    • Um nome de sua escolha para a implantação do Azure Spring Apps.
    • Um nome de sua escolha para o recurso do Application Insights.
    • Três intervalos CIDR (pelo menos /16) que são usados para hospedar a infraestrutura de back-end do Azure Spring Apps. Os intervalos CIDR não devem se sobrepor a nenhum intervalo CIDR existente na sub-rede de destino
    • Os pares chave/valor a serem aplicados como marcas em todos os recursos que dão suporte a marcas. Para saber mais, confira Usar marcas para organizar os recursos do Azure e a hierarquia de gerenciamento
  4. Edite o arquivo para adicionar as seguintes informações de infraestrutura existentes:

    • O nome do grupo de recursos em que a rede virtual existente se encontra.
    • O nome da rede virtual de escopo existente.
    • O nome da sub-rede existente a ser usada pelo Serviço de Aplicativo do Azure Spring Apps.
    • O nome da sub-rede existente a ser usada pelo Serviço de Runtime do Azure Spring Apps.
    • O nome do workspace do Azure Log Analytics.
  5. Execute o seguinte comando para inicializar os módulos Terraform:

    terraform init
    
  6. Execute o seguinte comando para criar o plano de implantação do Terraform:

    terraform plan -out=springcloud.plan
    
  7. Execute o seguinte comando para aplicar o plano de implantação do Terraform:

    terraform apply springcloud.plan
    

Examinar os recursos implantados

Você pode usar o portal do Azure para verificar os recursos implantados ou usar o script da CLI do Azure ou do Azure PowerShell para listar os recursos implantados.

Limpar os recursos

Se planejar continuar trabalhando com os tutoriais e inícios rápidos subsequentes, deixe esses recursos onde estão. Quando não forem mais necessários, exclua os recursos criados neste artigo usando o comando a seguir.

terraform destroy -auto-approve

Próximas etapas

Neste guia de início rápido, você implantou uma instância do Azure Spring Apps em uma rede virtual existente usando o Terraform e validou a implantação. Para saber mais sobre o Azure Spring Apps, confira os recursos abaixo.