다음을 통해 공유


azd up 워크플로 탐색

Azure 개발자 CLI(azd)를 사용하면 단일 명령을 사용하여 Azure에서 애플리케이션 리소스를 프로비전하고 배포할 수 있습니다 azd up. 이 가이드에서는 이 워크플로 명령의 여러 단계가 템플릿의 azd up 구조 azd 와 어떻게 연관되는지에 대한 자세한 분석 정보를 제공합니다.

템플릿을 사용하여 따라하기

앞의 섹션에서는 템플릿의 예제를 hello-azd 사용하여 다양한 azd 개념과 패턴을 보여 줍니다. 로컬 컴퓨터에서 템플릿을 초기화하여 수행할 수 있습니다.

azd init -t hello-azd

시작 및 템플릿에 대한 자세한 내용은 azd 문서를 참조하세요.hello-azd

필수 개념

azd 템플릿으로 작업할 때 azd up 명령을 사용하여 Azure에서 앱 리소스를 프로비전하고 배포할 수 있습니다. 템플릿 폴더에 열려 있는 터미널 창에서 명령을 실행합니다.

azd up

azd up 는 앱을 개발할 때 명령을 반복적으로 실행할 수 있도록 설계되었으며 새 변경 내용이 증분 방식으로 배포됩니다. 이 명령은 기본적으로 세 가지 특정 단계를 래핑하는 강력한 워크플로를 시작합니다.

  1. 패키징: 배포를 위한 애플리케이션 코드 및 종속성을 준비합니다.
  2. 프로비전: 코드로서의 인프라 파일을 사용하여 앱에 필요한 필요한 Azure 리소스를 만들고 구성합니다.
  3. 배포: 프로비전된 Azure 리소스에 패키지된 애플리케이션을 배포합니다.

각 명령을 사용하여 이 단계들을 별도로 실행할 수 있지만 azd up 프로세스를 단순화하는 편리한 래퍼를 제공합니다. 각 단계는 원활하고 자동화된 배포 프로세스를 보장하는 데 중요한 역할을 합니다. 템플릿 azd up 파일의 구성을 통해 azure.yaml 워크플로 단계에 영향을 미칠 수 있습니다. 다음 섹션에서는 각 단계를 자세히 살펴봅니다.

패키징 단계

패키징 단계는 워크플로의 첫 번째 단계입니다 azd up . 이 단계에서는 다음을 수행합니다.

  • 앱 코드는 배포를 위해 준비됩니다. 템플릿 앱이 빌드되는 프로그래밍 언어에 따라 패키징에는 앱 빌드 또는 컴파일, 종속성 번들화 또는 Docker 이미지와 같은 배포 아티팩트 만들기가 포함될 수 있습니다.
  • 템플릿 구조에는 일반적으로 애플리케이션 코드가 들어 있는 azd 폴더가 포함되어 있습니다. 빌드 스크립트 또는 구성 파일(예: Dockerfile)은 애플리케이션을 패키지하는 방법에 영향을 줄 수 있습니다.
  • azure.yaml 파일에는 자신의 앱 코드 위치와 사용하는 언어를 azd 에게 알려주는 구성 매핑이 포함되어 있으므로 azd 가 이를 적절하게 패키지할 수 있습니다.
  • 이 단계에서는 다음 단계로 이동하기 전에 애플리케이션이 배포 가능한 상태인지 확인합니다.

azd up 명령을 사용하여 azd package 외부에서 패키징 프로세스를 독립적으로 실행할 수 있습니다.

azd package

패키징 구성 예제

azd 는 다양한 언어로 빌드된 앱을 다양한 방법으로 패키지할 수 있습니다. 예를 들어, 앱에서 컨테이너화된 접근 방식을 사용하는 경우, azd 템플릿에 Dockerfile이 앱의 src 디렉터리에 포함될 수 있습니다. 패키징 단계에서는 이 파일을 기반으로 앱에 대한 Docker 이미지를 빌드합니다. 이러한 구성은 파일을 통해 azure.yaml 관리됩니다.

예를 들어, hello-azd 시작 템플릿의 프로젝트 구조와 구성을 다음과 같이 고려할 수 있습니다.

azd up의 패키징 단계를 보여 주는 스크린샷

이전 이미지에서 파일은 다음과 같습니다 azure.yaml .

  • 디렉터리의 코드를 src C# 앱으로 정의합니다.
  • 앱의 컨테이너 이미지를 빌드하는 데 사용할 Dockerfile의 위치를 지정합니다.

실행 azd up (또는 azd package)할 때 Azure 개발자 CLI는 이 구성 조합을 사용하여 디렉터리의 앱 코드를 src .NET 컨테이너 이미지로 빌드하고 패키지합니다. Dockerfile이 구성 azd 되지 않은 경우 표준 .NET 게시 프로세스를 사용하여 .NET 앱을 패키지할 수도 있습니다.

프로비저닝 단계

프로비저닝 단계에서는 앱에 필요한 Azure 리소스를 만들고 구성합니다. 예를 들어 앱은 앱 자체를 호스트하는 Azure App Service 인스턴스와 업로드된 파일을 보관하는 Azure Storage 계정이 필요할 수 있습니다. 프로비저닝 단계에서는 템플릿에 포함된 IaC(Infrastructure-as-code) 파일을 사용하여 리소스를 정의합니다.

프로비저닝 단계에 대해 이해해야 할 몇 가지 주요 사항은 다음과 같습니다.

  1. azd 는 코드로서의 인프라 작업을 위해 Bicep 및 Terraform을 모두 지원합니다.
  2. 기본적으로 코드로서의 인프라 파일은 폴더에 infra 저장되지만 이 위치를 사용자 지정할 수 있습니다.
  3. azdmain.bicepmain.tf IaC 프로세스의 기본 오케스트레이션 파일 역할을 할 파일을 검색합니다.

azd up의 프로비저닝 단계를 보여 주는 스크린샷

azd up 외부에서 azd provision 명령어를 사용하여 프로비저닝 프로세스를 단독으로 실행할 수도 있습니다.

azd provision

프로비전 구성 예제

폴더 내부의 infra 폴더에는 main.bicep 파일이 있으며, 이는 앱을 위해 azd이(가) 만들어야 할 Azure 리소스를 일반적으로 정의합니다. 시작 템플릿에서 main.bicephello-azd 다음 코드 조각을 고려합니다.

// ...omitted code for other resource configurations

// Create an Azure Cosmos DB account
module cosmos 'app/cosmos.bicep' = {
  name: 'cosmos'
  scope: rg
  params: {
    userPrincipalId: principalId
    managedIdentityId: identity.outputs.principalId
  }
}

// Create a storage account
module storage './core/storage/storage-account.bicep' = {
  name: 'storage'
  scope: rg
  params: {
    name: !empty(storageAccountName) ? storageAccountName : '${abbrs.storageStorageAccounts}${resourceToken}'
    location: location
    tags: tags
    containers: [
      { name: 'attachments' }
    ]
  }
}

// Container apps environment and registry
module containerAppsEnv './core/host/container-apps.bicep' = {
  name: 'container-apps'
  scope: rg
  params: {
    name: 'app'
    containerAppsEnvironmentName: !empty(containerAppsEnvName) ? containerAppsEnvName : '${abbrs.appManagedEnvironments}${resourceToken}'
    containerRegistryName: !empty(containerRegistryName) ? containerRegistryName : '${abbrs.containerRegistryRegistries}${resourceToken}'
    location: location
  }
}

// ...omitted code for other resource configurations

위의 Bicep 코드를 azd 사용하여 다음 리소스를 만듭니다.

  • 앱을 통해 제출된 데이터를 저장하는 Azure Cosmos DB 인스턴스
  • 업로드된 이미지를 저장할 Azure Storage 계정
  • 앱을 호스트하는 Azure Container App

배포 단계

배포 단계는 워크플로의 마지막 단계입니다 azd up . 이 단계에서는 다음을 수행합니다.

  • 패키징 단계에서 만든 앱 아티팩트가 프로비전된 Azure 리소스에 배포됩니다.
  • azd 는 템플릿의 구성 파일(예: azure.yaml)을 사용하여 앱을 배포하는 방법을 결정합니다.
  • 환경 변수 및 연결 문자열은 앱이 프로비전된 리소스와 상호 작용할 수 있도록 구성됩니다.

azd up 외부에서 azd deploy 명령을 사용하여 배포 프로세스를 독립적으로 실행할 수도 있습니다.

azd deploy

배포 구성 예제

파일 내에서 azure.yaml 프로젝트의 어떤 서비스를 Azure 리소스에 배포할지 지정할 수 있습니다. 예를 들어 hello-azd 시작 템플릿의 다음 구성을 고려하십시오.

metadata:
  template: hello-azd-dotnet
name: azd-starter
services:
  aca:
    project: ./src # The location of the service source code
    language: csharp
    host: containerapp # The provisioned resource to deploy the service to
    docker:
      path: ./Dockerfile

앞의 코드는 azd 폴더의 코드에서 패키지된 아티팩트를 프로비전 단계에서 생성된 src에 배포하도록 containerapp에 지시합니다. 여러 서비스를 정의하고 각각을 다른 호스트에 매핑할 수도 있습니다.

결론

워크플로는 azd up 패키징, 프로비전 및 배포 단계를 자동화하여 Azure에 애플리케이션을 배포하는 프로세스를 간소화합니다. 개발자는 템플릿 구조를 준수하여 azd 일관되고 효율적인 배포 프로세스를 보장할 수 있습니다. 간단한 웹앱 또는 복잡한 마이크로 서비스 아키텍처 azd up 를 배포하든 관계없이 이 명령은 코드에서 클라우드로의 과정을 간소화합니다.