자습서: .NET Aspire Database를 사용하여 SQL Server 프로젝트를 배포하여 Azure
이 자습서에서는 ASP.NET Core Database를 사용하여 SQL Server 앱을 Azure에 배포하기 위해 구성하는 방법을 알아봅니다. .NET Aspire은 SQL Server에서 서로 다른 데이터베이스 서비스를 제공하는 여러 Azure 통합 구성을 제공합니다. 다음과 같은 방법을 배워보세요.
- ASP.NET Core .NET Aspire 통합을 사용하도록 구성된 기본 SQL Server 앱 만들기
- Azure SQL Database를 프로비전하도록 앱 구성
- 컨테이너화된 SQL Server 데이터베이스를 프로비전하도록 앱 구성
메모
이 문서에서는 .NET Aspire 구성을 활용하여 SQL Server에서 Azure 리소스를 프로비전하고 배포하는 데 특히 중점을 둡니다. 전체 Azure Container Apps 배포 프로세스에 대해 자세히 알아보려면 .NET Aspire 자습서를 참조하세요.
필수 구성 요소
.NET .NET Aspire작업하려면 다음을 로컬에 설치해야 합니다.
- .NET 8.0 또는 .NET 9.0
- OCI 규격 컨테이너 런타임(예:
- Docker 데스크톱 또는 Podman. 자세한 내용은 컨테이너 런타임을 참조하십시오.
- IDE(통합 개발자 환경) 또는 코드 편집기(예:
- Visual Studio 2022 버전 17.9 이상(선택 사항)
-
Visual Studio Code(선택 사항)
- C# Dev Kit: 확장(선택 사항)
- JetBrains Rider에 .NET.NET Aspire 플러그인(선택 사항)
자세한 내용은 .NET.NET Aspire 설정 및 도구및 .NET.NET Aspire SDK참조하세요.
샘플 솔루션 만들기
- Visual Studio맨 위에서 파일>새>프로젝트이동합니다.
- 대화 상자 창에서 Aspire 검색하고 .NET.NET Aspire - 시작 애플리케이션선택합니다. 다음 선택합니다.
-
새 프로젝트를 구성하는 화면에서 다음을 수행합니다.
- 프로젝트 이름을 AspireSQL에 입력합니다.
- 값을 rest 기본값으로 두고, 다음 를 선택합니다.
-
추가 정보 화면에서 다음을 수행합니다.
- .NET 9.0 선택되어 있는지 확인하고 만들기선택합니다.
Visual Studio은 새 ASP.NET Core 솔루션을 만들어 .NET Aspire를 사용하도록 구조화합니다. 솔루션은 다음 프로젝트로 구성됩니다.
- AspireSQL.Web: 서비스 기본값에 따라 달라지는 Blazor 프로젝트입니다.
- AspireSQL.ApiService: 서비스 기본값에 의존하는 API 프로젝트입니다.
- AspireSQL.AppHost: 앱의 다양한 프로젝트와 서비스를 연결하고 구성하도록 설계된 오케스트레이터 프로젝트입니다. 오케스트레이터는 시작 프로젝트로 설정해야 합니다.
- AspireSQL.ServiceDefaults: 솔루션의 프로젝트에서 다시 사용할 수 있는 구성을 보유하는 공유 클래스 라이브러리입니다.
SQL Server 배포용 앱 구성
.NET Aspire는 SQL Server에서 Azure 배포를 간소화하기 위한 두 가지 기본 제공 구성 옵션을 제공합니다.
- SQL Server을 사용하여 컨테이너화된 Azure Container Apps 데이터베이스를 설정하기
- Azure SQL Database 인스턴스를 설정하다
앱에 .NET.NET Aspire 통합 추가
원하는 호스팅 서비스에 대한 .NET 프로젝트에 적절한 .NET Aspire 통합을 추가합니다.
📦 Aspire.Hosting.Azure.Sql NuGet 패키지를 AspireSQL.AppHost 프로젝트에 추가합니다.
dotnet add package Aspire.Hosting.Azure.Sql
AppHost 프로젝트 구성
원하는 SQL 데이터베이스 서비스에 대한 AspireSQL.AppHost 프로젝트를 구성합니다.
Program.cs 프로젝트의 파일 내용을 다음 코드로 바꿉니다.
var builder = DistributedApplication.CreateBuilder(args);
var apiService = builder.AddProject<Projects.AspireSql_ApiService>("apiservice");
// Provisions an Azure SQL Database when published
var sqlServer = builder.AddAzureSqlServer("sqlserver")
.AddDatabase("sqldb");
builder.AddProject<Projects.AspireSql_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(apiService)
.WaitFor(apiService);
builder.Build().Run();
위의 코드는 앱에 SQL Server 컨테이너 리소스를 추가하고 sqldata
데이터베이스에 대한 연결을 구성합니다.
PublishAsAzureSqlDatabase
메서드는 배포 프로세스 중에 Azure Developer CLI 또는 Visual Studio 같은 도구가 Azure SQL Database 리소스를 만들도록 합니다.
앱 배포
Azure Developer CLI(azd
)와 같은 도구는 .NET AspireSQL Server 통합 구성을 지원하여 배포를 간소화합니다.
azd
는 이러한 설정을 소모하고 적절히 구성된 리소스를 제공합니다.
템플릿 초기화
새 터미널 창을 열고
cd
솔루션의 .NET 프로젝트 디렉터리로 .NET Aspire 이동합니다.azd init
명령을 실행하여 로컬 디렉터리 구조를 검사하고 앱 유형을 결정하는azd
사용하여 프로젝트를 초기화합니다.azd init
azd init
명령에 대한 자세한 내용은 azd init참조하세요.두 개의 앱 초기화 옵션을 제공하는 메시지가 표시되면, 현재 디렉터리에서 코드를
azd
사용하여 선택합니다.? How do you want to initialize your app? [Use arrows to move, type to filter] > Use code in the current directory Select a template
디렉터리를 검사한 후
azd
올바른 .NET.NET AspireAppHost 프로젝트를 찾았는지 확인하라는 메시지를 표시합니다. 확인을 선택하고 앱 옵션을 계속 초기화합니다.Detected services: .NET (Aspire) Detected in: D:\source\repos\AspireSample\AspireSample.AppHost\AspireSample.AppHost.csproj azd will generate the files necessary to host your app on Azure using Azure Container Apps. ? Select an option [Use arrows to move, type to filter] > Confirm and continue initializing my app Cancel and exit
Azure에서 프로비전된 리소스의 이름을 지정하는 데 사용되고,
dev
및prod
같은 다양한 환경을 관리하는 데 사용되는 환경 이름을 입력합니다.Generating files to run your app on Azure: (✓) Done: Generating ./azure.yaml (✓) Done: Generating ./next-steps.md SUCCESS: Your app is ready for the cloud! You can provision and deploy your app to Azure by running the azd up command in this directory. For more information on configuring your app, see ./next-steps.md
azd
여러 파일을 생성하고 작업 디렉터리에 배치합니다. 이러한 파일은 다음과 같습니다.
- .yaml
: 앱의 서비스를 설명하고, appHost 프로젝트 같은 서비스를 리소스에 매핑합니다. -
.azure/config.json:
azd
에게 현재 활성 환경이 무엇인지 알려주는 구성 파일입니다. - .azure/aspireazddev/.env: 환경별 재정의를 포함하고 있습니다.
템플릿 배포
azd
템플릿이 초기화되면 프로비저닝 및 배포 프로세스를 AppHost 프로젝트 디렉터리에서 단일 명령으로 실행하여 azd up사용할 수 있습니다.azd up
사용 가능한 옵션 목록에서 배포하려는 구독을 선택합니다.
Select an Azure Subscription to use: [Use arrows to move, type to filter] 1. SampleSubscription01 (xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx) 2. SamepleSubscription02 (xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx)
사용 가능한 옵션 목록에서 사용할 원하는 Azure 위치를 선택합니다.
Select an Azure location to use: [Use arrows to move, type to filter] 42. (US) Central US (centralus) 43. (US) East US (eastus) > 44. (US) East US 2 (eastus2) 46. (US) North Central US (northcentralus) 47. (US) South Central US (southcentralus)
선택한 후 azd
프로비전 및 배포 프로세스를 실행합니다.
By default, a service can only be reached from inside the Azure Container Apps environment it is running in. Selecting a service here will also allow it to be reached from the Internet.
? Select which services to expose to the Internet webfrontend
? Select an Azure Subscription to use: 1. <YOUR SUBSCRIPTION>
? Select an Azure location to use: 1. <YOUR LOCATION>
Packaging services (azd package)
Provisioning Azure resources (azd provision)
Provisioning Azure resources can take some time.
Subscription: <YOUR SUBSCRIPTION>
Location: <YOUR LOCATION>
You can view detailed progress in the Azure Portal:
<LINK TO DEPLOYMENT>
(✓) Done: Resource group: <YOUR RESOURCE GROUP>
(✓) Done: Container Registry: <ID>
(✓) Done: Log Analytics workspace: <ID>
(✓) Done: Container Apps Environment: <ID>
SUCCESS: Your application was provisioned in Azure in 1 minute 13 seconds.
You can view the resources created under the resource group <YOUR RESOURCE GROUP> in Azure Portal:
<LINK TO RESOURCE GROUP OVERVIEW>
Deploying services (azd deploy)
(✓) Done: Deploying service apiservice
- Endpoint: <YOUR UNIQUE apiservice APP>.azurecontainerapps.io/
(✓) Done: Deploying service webfrontend
- Endpoint: <YOUR UNIQUE webfrontend APP>.azurecontainerapps.io/
Aspire Dashboard: <LINK TO DEPLOYED .NET ASPIRE DASHBOARD>
SUCCESS: Your up workflow to provision and deploy to Azure completed in 3 minutes 50 seconds.
azd up
명령은 리소스를 한 번의 단계로 프로비전하고 배포하는 개별 azd
명령을 포장하는 역할을 합니다.
-
azd package
: 앱 프로젝트 및 해당 종속성이 컨테이너로 패키지됩니다. -
azd provision
: 앱에 필요한 Azure 리소스가 프로비전됩니다. -
azd deploy
: 프로젝트는 컨테이너 형태로 Azure 컨테이너 레지스트리 인스턴스로 푸시된 후, 코드가 호스팅될 Azure Container Apps의 새로운 수정 버전을 만드는 데 사용됩니다.
azd up
단계가 완료되면 Azure앱을 사용할 수 있으며 Azure 포털을 열어 리소스를 탐색할 수 있습니다.
azd
배포된 앱에 직접 액세스하기 위한 URL도 출력합니다.
배포 프로세스는 제공하신 AppHost 구성에 따라
리소스 정리
만든 Azure 리소스가 더 이상 필요하지 않은 경우 다음 Azure CLI 명령을 실행하여 리소스 그룹을 삭제합니다. 리소스 그룹을 삭제하면 리소스 그룹에 포함된 리소스도 삭제됩니다.
az group delete --name <your-resource-group-name>
자세한 내용은 리소스를 정리하는 Azure를 참조하세요.
참고 항목
.NET Aspire