빠른 시작: Azure CLI를 사용하여 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로 마이그레이션을 참조 하세요.
이 문서는 기본 ✅ 표준 ✅ 엔터프라이즈에 ❎ 적용됩니다.
이 빠른 시작에서는 Azure CLI를 사용하여 기존 가상 네트워크에 Azure Spring Apps 클러스터를 배포하는 방법을 설명합니다.
Azure Spring Apps를 사용하면 코드 변경 없이 Spring 애플리케이션을 Azure에 쉽게 배포할 수 있습니다. 이 서비스는 개발자가 코드에 집중할 수 있도록 Spring 애플리케이션의 인프라를 관리합니다. Azure Spring Apps는 포괄적인 모니터링 및 진단, 구성 관리, 서비스 검색, CI/CD 통합, 파란색-녹색 배포 등을 사용하여 수명 주기 관리를 제공합니다.
엔터프라이즈 배포 계획에는 다음과 같은 Tanzu 구성 요소가 포함됩니다.
- Build Service
- Application Configuration Service
- 서비스 레지스트리
- Spring Cloud Gateway
- API 포털
필수 구성 요소
- Azure 구독 구독이 없는 경우 시작하기 전에 체험 계정을 만드세요.
- 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 클러스터에서 내부적으로만 사용됩니다. 클러스터는 내부 Spring 앱 CIDR 범위 또는 클러스터 가상 네트워크 주소 범위 내에 포함된 IP 범위에 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 또는 192.0.2.0/24를 사용할 수 없습니다.
- 가상 네트워크에 부여된 서비스 권한. 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 CLI
- 대상 구독에서 Azure Spring Apps 엔터프라이즈 플랜 인스턴스를 처음 배포하는 경우 Azure Marketplace의 엔터프라이즈 플랜의 요구 사항 섹션을 참조하세요.
Azure CLI 배포 스크립트 검토
이 빠른 시작에 사용된 배포 스크립트는 Azure Spring Apps 참조 아키텍처에서 가져왔습니다.
#!/bin/bash
echo "Enter Azure Subscription ID: "
read subscription
subscription=$subscription
echo "Enter Azure region for resource deployment: "
read region
location=$region
echo "Enter Azure Spring Resource Group Name: "
read azurespringrg
azurespring_resource_group_name=$azurespringrg
echo "Enter Azure Spring VNet Resource Group Name: "
read azurespringvnetrg
azurespring_vnet_resource_group_name=$azurespringvnetrg
echo "Enter Azure Spring Spoke VNet : "
read azurespringappspokevnet
azurespringappspokevnet=$azurespringappspokevnet
echo "Enter Azure Spring App SubNet : "
read azurespringappsubnet
azurespring_app_subnet_name='/subscriptions/'$subscription'/resourcegroups/'$azurespring_vnet_resource_group_name'/providers/Microsoft.Network/virtualNetworks/'$azurespringappspokevnet'/subnets/'$azurespringappsubnet
echo "Enter Azure Spring Service SubNet : "
read azurespringservicesubnet
azurespring_service_subnet_name='/subscriptions/'$subscription'/resourcegroups/'$azurespring_vnet_resource_group_name'/providers/Microsoft.Network/virtualNetworks/'$azurespringappspokevnet'/subnets/'$azurespringservicesubnet
echo "Enter Azure Log Analytics Workspace Resource Group Name: "
read loganalyticsrg
loganalyticsrg=$loganalyticsrg
echo "Enter Log Analytics Workspace Resource Name: "
read workspace
workspaceID='/subscriptions/'$subscription'/resourcegroups/'$loganalyticsrg'/providers/microsoft.operationalinsights/workspaces/'$workspace
echo "Enter Reserved CIDR Ranges for Azure Spring: "
read reservedcidrrange
reservedcidrrange=$reservedcidrrange
echo "Enter key=value pair used for tagging Azure Resources (space separated for multiple tags): "
read tag
tags=$tag
randomstring=$(LC_ALL=C tr -dc 'a-z0-9' < /dev/urandom | fold -w 13 | head -n 1)
azurespring_service='spring-'$randomstring #Name of unique Spring resource
azurespring_appinsights=$azurespring_service
azurespring_resourceid='/subscriptions/'$subscription'/resourceGroups/'$azurespring_resource_group_name'/providers/Microsoft.AppPlatform/Spring/'$azurespring_service
# Create Application Insights
az monitor app-insights component create \
--app ${azurespring_service} \
--location ${location} \
--kind web \
-g ${azurespringrg} \
--application-type web \
--workspace ${workspaceID}
az spring create \
-n ${azurespring_service} \
-g ${azurespringrg} \
-l ${location} \
--sku Standard \
--app-insights ${azurespring_service} \
--app-subnet ${azurespring_app_subnet_name} \
--service-runtime-subnet ${azurespring_service_subnet_name} \
--reserved-cidr-range ${reservedcidrrange} \
--tags ${tags}
# Update diagnostic setting for Azure Spring instance
az monitor diagnostic-settings create \
--name monitoring \
--resource ${azurespring_resourceid} \
--logs '[{"category": "ApplicationConsole","enabled": true}]' \
--workspace ${workspaceID}
클러스터 배포
Azure CLI 스크립트를 사용하여 Azure Spring Apps 클러스터를 배포하려면 다음 단계를 따릅니다.
다음 명령을 사용하여 Azure에 로그인합니다.
az login
로그인한 후에 이 명령은 사용자에게 액세스 권한이 있는 모든 구독에 대한 정보를 출력합니다. 사용할 구독의 이름과 ID를 적어둡니다.
대상 구독을 설정합니다.
az account set --subscription "<your subscription name>"
Azure Spring Apps 리소스 공급자를 등록합니다.
az provider register --namespace 'Microsoft.AppPlatform'
Azure CLI에 필요한 확장을 추가합니다.
az extension add --name spring
지역별 사용 가능한 제품에 표시된 대로 Azure Spring Apps를 사용할 수 있는 지역의 배포 위치를 선택합니다.
다음 명령을 사용하여 Azure 위치 목록을 생성합니다. 이전 단계에서 선택한 지역에 대한 짧은 이름 값을 적어둡니다.
az account list-locations --output table
리소스를 배포할 리소스 그룹을 만듭니다.
az group create --name <your-resource-group-name> --location <location-name>
Azure Spring Apps 표준 계획 또는 엔터프라이즈 계획용 스크립트를 로컬에 저장한 다음, Bash 프롬프트에서 실행합니다.
표준 계획:
./azuredeploySpringStandard.sh
엔터프라이즈 계획:
./azuredeploySpringEnterprise.sh
스크립트에서 요구할 경우 다음 값을 입력합니다.
- 이전에 저장한 Azure 구독 ID
- 이전에 저장한 Azure 위치 이름
- 이전에 만든 리소스 그룹의 이름
- 리소스를 배포할 가상 네트워크 리소스 그룹의 이름
- 스포크 가상 네트워크의 이름(예: vnet-spoke)
- Azure Spring Apps 애플리케이션 서비스에서 사용할 서브넷의 이름(예: snet-app)입니다.
- Azure Spring Apps 런타임 서비스에서 사용할 서브넷의 이름(예: snet-runtime).
- Azure Log Analytics 작업 영역이 진단 로그를 저장하는 데 사용할 리소스 그룹의 이름
- Azure Log Analytics 작업 영역의 이름(예: la-cb5sqq6574o2a)
- Azure Spring Apps에서 사용할 가상 네트워크의 CIDR 범위(예: XX.X.X.X/16,XX.X.X.X/16,XX.X.X.X/16)
- 태그를 지원하는 모든 리소스에서 태그로 적용할 키/값 쌍. 자세한 내용은 태그를 사용하여 Azure 리소스 및 관리 계층 구조 구성을 참조하세요. 여러 태그를 적용하려면 공백으로 구분된 목록을 사용합니다(예: environment=Dev BusinessUnit=finance).
이 정보를 입력하면 스크립트에서 Azure 리소스를 만들고 배포합니다.
배포된 리소스 검토
Azure Portal을 사용하여 배포된 리소스를 확인하거나 Azure CLI를 사용하여 배포된 리소스를 나열할 수 있습니다.
리소스 정리
후속 빠른 시작 및 자습서를 계속 사용하려는 경우 이러한 리소스를 그대로 유지할 수 있습니다. 더 이상 필요 없으면 리소스 그룹을 삭제합니다. 그러면 리소스 그룹의 리소스가 삭제됩니다. Azure CLI를 사용하여 리소스 그룹을 삭제하려면 다음 명령을 사용합니다.
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
다음 단계
이 빠른 시작에서는 Azure CLI를 사용하여 기존 가상 네트워크에 Azure Spring Apps 인스턴스를 배포한 후 배포의 유효성을 검사했습니다. Azure Spring Apps에 대해 자세히 알아보려면 아래 리소스를 계속 진행합니다.
- 아래 위치에서 다음 샘플 애플리케이션 중 하나를 배포합니다.
- Azure Spring Apps에서 사용자 지정 도메인을 사용합니다.
- Azure Application Gateway를 사용하여 Azure Spring Apps의 애플리케이션을 인터넷에 노출합니다. 자세한 내용은 가상 네트워크에서 엔드투엔드 TLS를 사용하여 애플리케이션 노출을 참조하세요.
- Microsoft Azure Well-Architected Framework를 기반으로 하는 안전한 엔드투엔드 Azure Spring Apps 참조 아키텍처를 확인합니다.