Partilhar via


Guia de início rápido: provisionar aplicativos do Azure Spring usando o Terraform

Nota

Azure Spring Apps é o novo nome para o serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns lugares por um tempo enquanto trabalhamos para atualizar ativos, como capturas de tela, vídeos e diagramas.

Este artigo aplica-se 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 alterações de código. O serviço gerencia a infraestrutura dos aplicativos Spring para que os desenvolvedores possam se concentrar em seu código. O Azure Spring Apps fornece gerenciamento do ciclo de vida usando monitoramento e diagnóstico abrangentes, gerenciamento de configuração, descoberta de serviços, integração de CI/CD, implantações azul-verde e muito mais.

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

  • Serviço de compilação
  • Serviço de Configuração de Aplicativos
  • Registo de Serviços
  • Gateway de nuvem Spring
  • API Portal

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

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

Pré-requisitos

  • Uma subscrição do Azure. Se você não tiver 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 tempo de execução do serviço e outra para os aplicativos Spring. Para requisitos de sub-rede e rede virtual, consulte a seção Requisitos de rede virtual de Implantar aplicativos Azure Spring em uma rede virtual.
  • Um espaço de trabalho existente do Log Analytics 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, consulte Analisar logs e métricas com configurações de diagnóstico e Agente em processo Java do Application Insights no Azure Spring Apps.
  • Três intervalos internos de Roteamento entre Domínios sem Classe (CIDR) (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 serão usados apenas 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 interno do Azure Spring Apps. Os clusters também não podem usar nenhum intervalo de IP incluído no intervalo de endereços de rede virtual do cluster.
  • Permissão de serviço concedida à rede virtual. O Provedor de Recursos do Azure Spring Apps requer permissão de Proprietário para sua rede virtual para conceder uma entidade de serviço dedicada e dinâmica na rede virtual para implantação e manutenção adicionais. Para obter instruções e mais informações, consulte a seção Conceder permissão de serviço para a rede virtual de Implantar o Azure Spring Apps em uma rede virtual.
  • Se estiver a utilizar a Firewall do Azure ou uma Ferramenta Virtual de Rede (NVA), também terá de satisfazer os seguintes pré-requisitos:
    • Regras de rede e FQDN (nome de domínio totalmente qualificado). Para obter mais informações, consulte Requisitos de rede virtual.
    • Uma UDR (User Defined Route) exclusiva aplicada a cada uma das sub-redes do aplicativo Spring, do tempo de execução do serviço e do aplicativo Spring. Para obter mais informações sobre UDRs, consulte Roteamento de tráfego de rede virtual. O UDR deve ser configurado com uma rota para 0.0.0.0/0 com um destino do seu NVA antes de implantar o cluster do Azure Spring Apps. Para obter mais informações, consulte a seção Traga sua própria tabela de rotas de Implantar aplicativos Azure Spring em uma rede virtual.
  • Se você estiver implantando uma instância do plano do Azure Spring Apps Enterprise pela primeira vez na assinatura de destino, consulte a seção Requisitos do plano Enterprise no Azure Marketplace.

Rever o plano Terraform

O arquivo de configuração usado neste 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            = "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
}

Aplicar o plano Terraform

Para aplicar o plano Terraform, siga estes passos:

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

  2. Edite o arquivo para adicionar os seguintes valores:

    • A ID de assinatura da conta do Azure na qual você implantará.

    • Um local de implantação das regiões onde o Azure Spring Apps está disponível, conforme mostrado em Produtos disponíveis por região. Você precisará da forma abreviada do nome do local. Para obter esse valor, use o comando a seguir para gerar uma lista de locais do Azure e, em seguida, procure o valor Name para a 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 sobrepor-se a quaisquer intervalos CIDR existentes na sub-rede de destino
    • Os pares chave/valor a serem aplicados como tags em todos os recursos que suportam tags. Para obter mais informações, consulte Usar tags para organizar seus recursos do Azure e hierarquia de gerenciamento
  4. Edite o arquivo para adicionar as seguintes informações de infraestrutura existentes:

    • O nome do grupo de recursos onde reside a rede virtual existente.
    • 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 Tempo de Execução do Azure Spring Apps.
    • O nome do espaço de trabalho 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
    

Rever os recursos implementados

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

Clean up resources (Limpar recursos)

Se você planeja continuar trabalhando com guias de início rápido e tutoriais subsequentes, convém deixar esses recursos no lugar. Quando não for mais necessário, exclua os recursos criados neste artigo usando o comando a seguir.

terraform destroy -auto-approve

Próximos passos

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