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:
Standart plan veya Kurumsal plan için variables.tf dosyasını yerel olarak kaydedin ve bir düzenleyicide açın.
Aşağıdaki değerleri eklemek için dosyayı düzenleyin:
Dağıtacağın Azure hesabının abonelik kimliği.
Bölgelere göre kullanılabilir ürünler bölümünde gösterildiği gibi Azure Spring Apps'in kullanılabildiği bölgelerden bir dağıtım konumu. Konum adının kısa biçimi gerekir. Bu değeri almak için aşağıdaki komutu kullanarak Azure konumlarının listesini oluşturun ve seçtiğiniz bölgenin Ad değerini arayın.
az account list-locations --output table
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
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ı.
Terraform modüllerini başlatmak için aşağıdaki komutu çalıştırın:
terraform init
Terraform dağıtım planını oluşturmak için aşağıdaki komutu çalıştırın:
terraform plan -out=springcloud.plan
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.
- Aşağıdaki konumlardan aşağıdaki örnek uygulamalardan birini dağıtın:
- Azure Spring Apps ile özel etki alanları kullanın.
- Azure Uygulaması lication Gateway kullanarak Azure Spring Apps'teki uygulamaları İnternet'te kullanıma sunma. Daha fazla bilgi için bkz . Sanal ağda uçtan uca TLS ile uygulamaları kullanıma sunma.
- Microsoft Azure İyi Tasarlanmış Çerçeve'yi temel alan güvenli uçtan uca Azure Spring Apps başvuru mimarisini görüntüleyin.