빠른 시작: Terraform을 사용하여 Azure Spring Apps 프로비전
참고 항목
기본, 표준 및 엔터프라이즈 계획은 2025년 3월 중순부터 사용되지 않으며 3년의 은퇴 기간이 있습니다. Azure Container Apps로 전환하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps 사용 중지 공지 사항을 참조하세요.
표준 소비 및 전용 계획은 2024년 9월 30일부터 사용되지 않으며 6개월 후에 완전히 종료됩니다. Azure Container Apps로 전환하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps 표준 사용량 및 전용 계획을 Azure Container Apps로 마이그레이션을 참조 하세요.
이 문서는 기본 ✅ 표준 ✅ 엔터프라이즈에 ❎ 적용됩니다.
이 빠른 시작에서는 Terraform을 사용하여 기존 가상 네트워크에 Azure Spring Apps 클러스터를 배포하는 방법을 설명합니다.
Azure Spring Apps를 사용하면 코드 변경 없이 Spring 애플리케이션을 Azure에 쉽게 배포할 수 있습니다. 이 서비스는 개발자가 코드에 집중할 수 있도록 Spring 애플리케이션의 인프라를 관리합니다. Azure Spring Apps는 포괄적인 모니터링 및 진단, 구성 관리, 서비스 검색, CI/CD 통합, 파란색-녹색 배포 등을 사용하여 수명 주기 관리를 제공합니다.
엔터프라이즈 배포 계획에는 다음과 같은 Tanzu 구성 요소가 포함됩니다.
- Build Service
- Application Configuration Service
- 서비스 레지스트리
- Spring Cloud Gateway
- API 포털
API Portal 구성 요소는 AzureRM Terraform 공급자를 통해 사용할 수 있게 되면 포함됩니다.
사용자 지정 도메인 지원을 포함한 자세한 사용자 지정은 Azure Spring Apps Terraform 공급자 설명서를 참조하세요.
필수 구성 요소
- Azure 구독 구독이 없는 경우 시작하기 전에 체험 계정을 만드세요.
- Hashicorp Terraform
- Azure Spring Apps 클러스터를 위한 두 개의 전용 서브넷(하나는 서비스 런타임용이고 다른 하나는 Spring 애플리케이션용). 서브넷 및 가상 네트워크 요구 사항은 가상 네트워크에 Azure Spring Apps 배포의 가상 네트워크 요구 사항 섹션을 참조하세요.
- Azure Spring Apps 진단 설정 및 작업 영역 기반 Application Insights 리소스의 기존 Log Analytics 작업 영역. 자세한 내용은 진단 설정을 사용하여 로그 및 메트릭 분석 및 Azure Spring Apps의 Application Insights Java In-Process 에이전트를 참조하세요.
- Azure Spring Apps 클러스터에서 사용하도록 식별된 세 개의 내부 CIDR(Classless Inter-Domain Routing) 범위(각각 /16 이상). 이러한 CIDR 범위는 직접 라우팅할 수 없으며 Azure Spring Apps 클러스터에서 내부적으로만 사용됩니다. 클러스터에서 내부 Azure Spring Apps CIDR에 대해 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 또는 192.0.2.0/24를 사용하지 않을 수 있습니다. 클러스터에서 클러스터 가상 네트워크 주소 범위 내에 포함된 IP 범위를 사용하지 않을 수도 있습니다.
- 가상 네트워크에 부여된 서비스 권한. Azure Spring Apps 리소스 공급자가 추가 배포 및 유지 관리를 위해 가상 네트워크에서 전용 및 동적 서비스 주체를 부여하려면 가상 네트워크에 대한
User Access Administrator
및Network Contributor
권한이 있어야 합니다. 지침 및 자세한 내용은 가상 네트워크에 Azure Spring Apps 배포의 가상 네트워크에 서비스 권한 부여 섹션을 참조하세요. - Azure Firewall 또는 NVA(네트워크 가상 어플라이언스)를 사용하는 경우 다음 필수 조건도 충족해야 합니다.
- 네트워크 및 FQDN(정규화된 도메인 이름) 규칙. 자세한 내용은 가상 네트워크 요구 사항을 참조하세요.
- 각 서비스 런타임 및 Spring 애플리케이션 서브넷에 적용되는 고유한 UDR(사용자 정의 경로)입니다. UDR에 대한 자세한 내용은 가상 네트워크 트래픽 라우팅을 참조하세요. UDR은 Azure Spring Apps 클러스터를 배포하기 전에 NVA의 대상이 있는 0.0.0.0/0 경로로 구성해야 합니다. 자세한 내용은 가상 네트워크에 Azure Spring Apps 배포의 사용자 고유의 경로 테이블 가져오기 섹션을 참조하세요.
- 대상 구독에서 Azure Spring Apps 엔터프라이즈 플랜 인스턴스를 처음 배포하는 경우 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 계정의 구독 ID
지역별 사용 가능한 제품에 표시된 대로 Azure Spring Apps를 사용할 수 있는 지역의 배포 위치 약식 형태의 위치 이름이 필요합니다. 이 값을 얻으려면 다음 명령을 사용하여 Azure 위치 목록을 생성한 다음, 선택한 지역의 이름 값을 조회합니다.
az account list-locations --output table
파일을 편집하여 다음과 같은 새 배포 정보를 추가합니다.
- 배포할 리소스 그룹의 이름
- Azure Spring Apps 배포에 대해 선택한 이름
- Application Insights 리소스에 대해 선택한 이름
- Azure Spring Apps 백 엔드 인프라를 호스트하는 데 사용되는 세 개의 CIDR 범위(/16 이상). CIDR 범위는 대상 서브넷의 기존 CIDR 범위와 겹치지 않아야 합니다.
- 태그를 지원하는 모든 리소스에서 태그로 적용할 키/값 쌍. 자세한 내용은 태그를 사용하여 Azure 리소스 및 관리 계층 구조 구성을 참조하세요.
파일을 편집하여 다음과 같은 기존 인프라 정보를 추가합니다.
- 기존 가상 네트워크가 있는 리소스 그룹의 이름
- 기존 범위 가상 네트워크의 이름
- Azure Spring Apps 애플리케이션 서비스에서 사용할 기존 서브넷의 이름
- Azure Spring Apps 런타임 서비스에서 사용할 기존 서브넷의 이름
- Azure Log Analytics 작업 영역의 이름
다음 명령을 실행하여 Terraform 모듈을 초기화합니다.
terraform init
다음 명령을 실행하여 Terraform 배포 계획을 만듭니다.
terraform plan -out=springcloud.plan
다음 명령을 실행하여 Terraform 배포 계획을 적용합니다.
terraform apply springcloud.plan
배포된 리소스 검토
Azure Portal을 사용하여 배포된 리소스를 확인하거나 Azure CLI 또는 Azure PowerShell 스크립트를 사용하여 배포된 리소스를 나열할 수 있습니다.
리소스 정리
후속 빠른 시작 및 자습서를 계속 사용하려는 경우 이러한 리소스를 그대로 유지할 수 있습니다. 더 이상 필요하지 않은 경우 다음 명령을 실행하여 이 문서에서 만든 리소스를 삭제합니다.
terraform destroy -auto-approve
다음 단계
이 빠른 시작에서는 Terraform을 사용하여 기존 가상 네트워크에 Azure Spring Apps 인스턴스를 배포한 다음, 배포의 유효성을 검사했습니다. Azure Spring Apps에 대해 자세히 알아보려면 아래 리소스를 계속 진행합니다.
- 아래 위치에서 다음 샘플 애플리케이션 중 하나를 배포합니다.
- Azure Spring Apps에서 사용자 지정 도메인을 사용합니다.
- Azure Application Gateway를 사용하여 Azure Spring Apps의 애플리케이션을 인터넷에 노출합니다. 자세한 내용은 가상 네트워크에서 엔드투엔드 TLS를 사용하여 애플리케이션 노출을 참조하세요.
- Microsoft Azure Well-Architected Framework를 기반으로 하는 안전한 엔드투엔드 Azure Spring Apps 참조 아키텍처를 확인합니다.