Aracılığıyla paylaş


Hızlı Başlangıç: Terraform kullanarak Azure Spring Apps sağlama

Not

Azure Spring Apps, Azure Spring Cloud hizmetinin yeni adıdır. Hizmetin yeni bir adı olsa da, ekran görüntüleri, videolar ve diyagramlar gibi varlıkları güncelleştirmek için çalışırken bazı yerlerde eski adı bir süre görürsünüz.

Bu makale şunlar için geçerlidir:❌ Temel ✔️ Standart ✔️ Kurumsal

Bu hızlı başlangıçta Terraform'un azure spring apps kümesini mevcut bir sanal ağa dağıtmak için nasıl kullanılacağı açıklanmaktadır.

Azure Spring Apps, kod değişikliği yapmadan Spring uygulamalarını Azure'a dağıtmayı kolaylaştırır. Hizmet, geliştiricilerin kodlarına odaklanabilmesi için Spring uygulamalarının altyapısını yönetir. Azure Spring Apps kapsamlı izleme ve tanılama, yapılandırma yönetimi, hizmet bulma, CI/CD tümleştirmesi, mavi-yeşil dağıtımlar ve daha fazlasını kullanarak yaşam döngüsü yönetimi sağlar.

Kurumsal dağıtım planı aşağıdaki Tanzu bileşenlerini içerir:

  • Derleme Hizmeti
  • Uygulama Yapılandırma Hizmeti
  • Hizmet Kayıt Defteri
  • Spring Cloud Gateway
  • API Portalı

API Portalı bileşeni, AzureRM Terraform sağlayıcısı aracılığıyla kullanılabilir duruma geldiğinde eklenir.

Özel etki alanı desteği de dahil olmak üzere daha fazla özelleştirme için Azure Spring Apps Terraform sağlayıcısı belgelerine bakın.

Önkoşullar

  • Azure aboneliği. Aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
  • Hashicorp Terraform
  • Azure Spring Apps kümesi için biri hizmet çalışma zamanı ve diğeri spring uygulamaları için olan iki ayrılmış alt ağ. Alt ağ ve sanal ağ gereksinimleri için Azure Spring Apps'i sanal ağda dağıtma bölümünün Sanal ağ gereksinimleri bölümüne bakın.
  • Azure Spring Apps tanılama ayarları için mevcut log analytics çalışma alanı ve çalışma alanı tabanlı bir Uygulama Analizler kaynağı. Daha fazla bilgi için bkz. Tanılama ayarlarıyla günlükleri ve ölçümleri analiz etme ve Azure Spring Apps'te Uygulama Analizler Java İşlem İçi Aracısı.
  • Azure Spring Apps kümesi tarafından kullanılmak üzere tanımladığınız üç iç Sınıfsız Etki Alanı Arası Yönlendirme (CIDR) aralığı (her birinde en az /16 ). Bu CIDR aralıkları doğrudan yönlendirilemez ve yalnızca Azure Spring Apps kümesi tarafından dahili olarak kullanılır. Kümeler iç Azure Spring Apps CIDR için 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 veya 192.0.2.0/24'i kullanamaz. Kümeler, küme sanal ağ adres aralığına dahil edilen IP aralıklarını da kullanamaz.
  • Sanal ağa verilen hizmet izni. Azure Spring Apps Kaynak Sağlayıcısı, daha fazla dağıtım ve bakım için sanal ağda ayrılmış ve dinamik bir hizmet sorumlusu vermek için sanal ağınızda Sahip izni gerektirir. Yönergeler ve daha fazla bilgi için Azure Spring Apps'i sanal ağa dağıtma bölümünün Sanal ağa hizmet izni verme bölümüne bakın.
  • Azure Güvenlik Duvarı veya Ağ Sanal Gereci (NVA) kullanıyorsanız, aşağıdaki önkoşulları da karşılamanız gerekir:
    • Ağ ve tam etki alanı adı (FQDN) kuralları. Daha fazla bilgi için bkz . Sanal ağ gereksinimleri.
    • Hizmet çalışma zamanının ve Spring uygulaması alt ağlarının her birine uygulanan benzersiz bir Kullanıcı Tanımlı Yol (UDR). UDF'ler hakkında daha fazla bilgi için bkz . Sanal ağ trafiği yönlendirme. UDR, Azure Spring Apps kümesini dağıtmadan önce NVA'nızın hedefiyle 0.0.0.0/0 yolu ile yapılandırılmalıdır. Daha fazla bilgi için Azure Spring Apps'i sanal ağa dağıtma bölümünün Kendi yol tablonuzu getirin bölümüne bakın.
  • Hedef abonelikte ilk kez bir Azure Spring Apps Kurumsal plan örneği dağıtıyorsanız Azure Market'deki Kurumsal plan'ın Gereksinimler bölümüne bakın.

Terraform planını gözden geçirme

Bu hızlı başlangıçta kullanılan yapılandırma dosyası Azure Spring Apps başvuru mimarisinden alınmıştı.

# 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
}

Terraform planını uygulama

Terraform planını uygulamak için şu adımları izleyin:

  1. Standart plan veya Kurumsal plan için variables.tf dosyasını yerel olarak kaydedin ve bir düzenleyicide açın.

  2. Aşağıdaki değerleri eklemek için dosyayı düzenleyin:

  3. Aşağıdaki yeni dağıtım bilgilerini eklemek için dosyayı düzenleyin:

    • Dağıtılacak kaynak grubunun adı.
    • Azure Spring Apps Dağıtımı için seçtiğiniz bir ad.
    • Uygulama Analizler kaynağı için seçtiğiniz ad.
    • Azure Spring Apps arka uç altyapısını barındırmak için kullanılan üç CIDR aralığı (en az /16). CIDR aralıkları hedef Alt Ağ'daki mevcut CIDR aralıklarıyla çakışmamalıdır
    • Etiketleri destekleyen tüm kaynaklara etiket olarak uygulanacak anahtar/değer çiftleri. Daha fazla bilgi için bkz. Azure kaynaklarınızı ve yönetim hiyerarşinizi düzenlemek için etiketleri kullanma
  4. Aşağıdaki mevcut altyapı bilgilerini eklemek için dosyayı düzenleyin:

    • Mevcut sanal ağın bulunduğu kaynak grubunun adı.
    • Mevcut kapsam sanal ağının adı.
    • Azure Spring Apps Uygulama Hizmeti tarafından kullanılacak mevcut alt ağın adı.
    • Azure Spring Apps Çalışma Zamanı Hizmeti tarafından kullanılacak mevcut alt ağın adı.
    • Azure Log Analytics çalışma alanının adı.
  5. Terraform modüllerini başlatmak için aşağıdaki komutu çalıştırın:

    terraform init
    
  6. Terraform dağıtım planını oluşturmak için aşağıdaki komutu çalıştırın:

    terraform plan -out=springcloud.plan
    
  7. Terraform dağıtım planını uygulamak için aşağıdaki komutu çalıştırın:

    terraform apply springcloud.plan
    

Dağıtılan kaynakları gözden geçirme

Dağıtılan kaynakları denetlemek için Azure portalını veya dağıtılan kaynakları listelemek için Azure CLI veya Azure PowerShell betiğini kullanabilirsiniz.

Kaynakları temizleme

Sonraki hızlı başlangıçlar ve öğreticilerle çalışmaya devam etmek istiyorsanız, bu kaynakları yerinde bırakmak isteyebilirsiniz. Artık gerekli olmadığında, aşağıdaki komutu kullanarak bu makalede oluşturulan kaynakları silin.

terraform destroy -auto-approve

Sonraki adımlar

Bu hızlı başlangıçta Terraform kullanarak mevcut bir sanal ağa bir Azure Spring Apps örneği dağıttınız ve ardından dağıtımı doğrulamıştınız. Azure Spring Apps hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara geçin.