자습서: .NET Aspire 및 Azure Developer CLI 작업을 사용하여 GitHub 프로젝트 배포
Azure Developer CLI(azd
)를 사용하면 필요한 인증 및 환경 설정을 자동으로 구성하여 .NET Aspire Actions를 사용하여 GitHub 프로젝트를 배포할 수 있습니다. 이 문서에서는 .NET Aspire에서 Azure Container Apps 프로젝트를 만들고 배포하는 과정을 azd
및 GitHub 작업을 사용하여 안내합니다. 다음 개념을 알아봅니다.
-
azd
프로젝트 및 .NET Aspire Actions에서 GitHub 통합이 작동하는 방식 살펴보기 -
GitHub를 사용하여 .NET Aspire 프로젝트에 대한
azd
리포지토리를 생성하고 구성하기 - GitHub 솔루션에 .NET Aspire Actions 워크플로 파일 추가
- GitHub Actions 워크플로 실행 및 Azure 배포 모니터링 및 탐색
필수 구성 요소
.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참조하세요.
- Azure DevOps 조직 만들거나 기존 조직 선택
-
Azure DevOps PAT(Personal Access Token) 만들고 나중에 사용할 수 있도록 저장합니다. 다음 권한으로 토큰을 구성합니다.
- 에이전트 풀(읽기, 관리)
- 빌드(읽기 및 실행)
- 코드(전체)
- 프로젝트 및 팀(읽기, 쓰기 및 관리)
- 릴리스(읽기, 쓰기, 실행 및 관리)
- 서비스 연결(읽기, 쿼리 및 관리)
또한 Azure Developer CLI을(를) 로컬 기기에 설치해야 합니다 (, 버전 1.5.1 이상). 일반적인 설치 옵션은 다음과 같습니다.
.NET .NET Aspire 솔루션 만들기
이 문서는 시작점으로 .NET 템플릿에서 .NET Aspire 솔루션을 만들었다고 가정합니다. 자세한 내용은 빠른 시작: 첫 번째 .NET.NET Aspire 앱빌드를 참조하세요.
템플릿 초기화
새 터미널 창을 열고
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: 환경별 재정의를 포함합니다.
GitHub 작업 워크플로 파일 추가
azd
몇 가지 필수 템플릿 파일을 생성했지만 프로젝트에는 CI/CD를 사용한 프로비저닝 및 배포를 지원하기 위한 GitHub Actions 워크플로 파일이 여전히 필요합니다.
프로젝트의 루트에 빈 .github 폴더를 생성하십시오.
azd
기본적으로 이 디렉터리를 사용하여 GitHub Actions 워크플로 파일을 검색합니다.팁
macOS 사용자인데 폴더 이름의 앞에 "
.
"이 오는 폴더를 만드는 데 어려움을 겪고 있는 경우, 터미널을 사용하여 폴더를 만들 수 있습니다. 터미널을 열고 프로젝트의 루트로 이동합니다. 다음 명령을 실행하여 폴더를 만듭니다.mkdir .github
새 .github 폴더 내부에 워크플로라는 다른 폴더를 만듭니다(.github/workflows).
azure새 폴더에 새 Actions 워크플로 파일을 추가합니다.
azd
시작 템플릿은 프로젝트에 복사할 수 있는 샘플 GitHub 작업 워크플로 파일 제공합니다.GitHub 워크로드를 설치하는 단계를 포함하도록 샘플 .NET Aspire Actions 워크플로를 업데이트합니다. 이렇게 하면 .NET Aspire Actions를 실행하는 작업에 GitHub 도구 및 명령을 사용할 수 있습니다. 완료된 워크플로 파일은 다음과 일치해야 합니다.
on: workflow_dispatch: push: # Run when commits are pushed to mainline branch (main or master) # Set this to the mainline branch you are using branches: - main permissions: id-token: write contents: read jobs: build: runs-on: ubuntu-latest env: AZURE_CLIENT_ID: ${{ vars.AZURE_CLIENT_ID }} AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }} AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }} AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }} AZURE_LOCATION: ${{ vars.AZURE_LOCATION }} steps: - name: Checkout uses: actions/checkout@v4 - name: Install azd uses: Azure/setup-azd@v1.0.0 - name: Install .NET Aspire workload run: dotnet workload install aspire - name: Log in with Azure (Federated Credentials) if: ${{ env.AZURE_CLIENT_ID != '' }} run: | azd auth login ` --client-id "$Env:AZURE_CLIENT_ID" ` --federated-credential-provider "github" ` --tenant-id "$Env:AZURE_TENANT_ID" shell: pwsh - name: Log in with Azure (Client Credentials) if: ${{ env.AZURE_CREDENTIALS != '' }} run: | $info = $Env:AZURE_CREDENTIALS | ConvertFrom-Json -AsHashtable; Write-Host "::add-mask::$($info.clientSecret)" azd auth login ` --client-id "$($info.clientId)" ` --client-secret "$($info.clientSecret)" ` --tenant-id "$($info.tenantId)" shell: pwsh - name: Provision Infrastructure run: azd provision --no-prompt # Required when # env: # AZD_INITIAL_ENVIRONMENT_CONFIG: ${{ secrets.AZD_INITIAL_ENVIRONMENT_CONFIG }} # Required when provisioning and deploying are defined in separate jobs. # - name: Refresh azd env (pulls latest infrastructure provision) # run: azd env refresh # env: # AZURE_LOCATION: ${{ env.AZURE_LOCATION }} - name: Deploy Application run: azd deploy --no-prompt
또한 프로비전 및 배포 단계가 단일 작업으로 결합된 것을 알 수 있습니다. 이러한 단계를 다른 작업으로 구분하려는 경우 워크플로 파일에서 두 개의 별도 작업을 만들어 이 작업을 수행할 수 있습니다. 프로비전 작업이 먼저 실행되고 배포 작업이 뒤따릅니다. 배포 작업은 AZD_INITIAL_ENVIRONMENT_CONFIG
비밀을 포함해야 하며, 이를 통해 환경 구성에 액세스할 수 있습니다. 최신 인프라 프로비저닝에 접근할 수 있도록 하려면 배포 작업의 azd env refresh
단계 주석을 해제해야 합니다.
GitHub 리포지토리 및 파이프라인 만들기
이 Azure Developer CLI은(는) 올바른 구성과 사용 권한으로 CI/CD 파이프라인을 자동으로 생성하여 리소스를 할당하고 Azure에 배포할 수 있도록 합니다.
azd
은(는) 앱에 대한 GitHub 리포지토리가 아직 존재하지 않는 경우, 이를 생성할 수도 있습니다.
azd pipeline config
명령을 실행하여 안전하게 Azure에 연결하도록 하고, 배포 파이프라인을 구성합니다.azd pipeline config
앱 리소스를 프로비전하고 배포할 구독을 선택합니다.
리소스에 사용할 Azure 위치를 선택합니다.
디렉터리에 새 Git 리포지토리를 만들 것인지 묻는 메시지가 표시되면 y 입력하고 Enter누릅니다.
메모
GitHub 리포지토리를 만들려면 먼저 GitHub에 로그인해야 합니다. 사용자의 선호도에 따라 몇 가지 선택지가 있습니다. 로그인하면 현재 디렉터리에 새 리포지토리를 만들라는 메시지가 표시됩니다.
선택하여 새 프라이빗 GitHub 리포지토리를 만들고 git 원격을 구성합니다.
새 GitHub 리포지토리에 원하는 이름을 입력하거나 Enter 키를 눌러 기본 이름을 사용합니다.
azd
는 GitHub에서 새 리포지토리를 만들고 이를 Azure에 인증하는 데 필요한 비밀로 구성합니다.가 로컬 변경 내용을 커밋하고 푸시하라는 메시지를 표시하면, 계속 진행하기 위해
azd
을 입력하여 구성된 파이프라인을 시작하세요.
GitHub 작업 워크플로 및 배포 살펴보기
GitHub이 출력한 링크를 사용하여 새로운
azd
리포지토리로 이동합니다.Actions 탭을 선택하여 리포지토리의 워크플로를 확인합니다. 새 워크플로가 실행 중이거나 이미 완료된 것을 볼 수 있습니다. 실행 로그에서 작업 단계 및 세부 정보를 보려면 워크플로를 선택합니다. 예를 들어 설치 .NET.NET Aspire 워크로드 또는 애플리케이션 배포 같은 단계를 확장하여 완료된 작업의 세부 정보를 볼 수 있습니다.
배포 애플리케이션을 선택하여 해당 단계의 로그를 확장합니다.
apiservice
및webfrontend
의 엔드포인트 URL 두 개가 출력되어야 합니다. 이러한 링크 중 하나를 선택하여 다른 브라우저 탭에서 열고 배포된 애플리케이션을 탐색합니다.
축하합니다! .NET Aspire 및 Azure Developer CLI Actions를 사용하여 GitHub 프로젝트를 성공적으로 배포했습니다.
워크플로 파일 구성
azd
몇 가지 필수 템플릿 파일을 생성했지만 프로젝트에는 CI/CD를 사용한 프로비저닝 및 배포를 지원하기 위한 Azure Pipelines 워크플로 파일이 여전히 필요합니다.
프로젝트의 루트에 빈 .azdo 폴더를 만듭니다.
azd
기본적으로 이 디렉터리를 사용하여 Azure Pipelines 워크플로 파일을 검색합니다.새 .azdo 폴더 내에서 파이프라인이라는 다른 폴더를 만듭니다(.azdo/pipelines).
새 Azure Pipelines 워크플로 파일을 azure-dev.yml폴더에 추가합니다.
azd
시작 템플릿은 프로젝트에 복사할 수 있는 샘플 Azure 파이프라인 워크플로 파일을 제공합니다.Azure 워크로드를 설치하는 단계를 포함하도록 샘플 .NET Aspire Pipelines 워크플로를 업데이트합니다. 완료된 워크플로 파일은 다음과 일치해야 합니다.
trigger:
- main
- master
pool:
vmImage: ubuntu-latest
steps:
- task: Bash@3
displayName: Install azd
inputs:
targetType: 'inline'
script: |
curl -fsSL https://aka.ms/install-azd.sh | bash
# azd delegate auth to az to use service connection with AzureCLI@2
- pwsh: |
azd config set auth.useAzCliAuth "true"
displayName: Configure `azd` to Use AZ CLI Authentication.
- task: Bash@3
displayName: Install .NET Aspire workload
inputs:
targetType: 'inline'
script: |
dotnet workload install aspire
- task: AzureCLI@2
displayName: Provision Infrastructure
inputs:
azureSubscription: azconnection
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
azd provision --no-prompt
env:
AZURE_SUBSCRIPTION_ID: $(AZURE_SUBSCRIPTION_ID)
AZURE_ENV_NAME: $(AZURE_ENV_NAME)
AZURE_LOCATION: $(AZURE_LOCATION)
- task: AzureCLI@2
displayName: Deploy Application
inputs:
azureSubscription: azconnection
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
azd deploy --no-prompt
env:
AZURE_SUBSCRIPTION_ID: $(AZURE_SUBSCRIPTION_ID)
AZURE_ENV_NAME: $(AZURE_ENV_NAME)
AZURE_LOCATION: $(AZURE_LOCATION)
Azure DevOps 리포지토리 및 파이프라인 만들기
중요하다
필수 구성 요소에 설명된 대로 Azure DevOps 조직 만들거나 기존 조직을 선택하여 단계를 완료해야 합니다. 또한 필수 구성 요소에 나열된 권한이 있는 개인 액세스 토큰(PAT) 만들어야 합니다.
이 Azure Developer CLI을 사용하면 올바른 구성 및 사용 권한으로 파이프라인을 자동으로 생성하여 리소스를 프로비전하고 배포할 수 있습니다 Azure에.
azd
은(는) Azure Pipelines 리포지토리가 이미 존재하지 않는 경우, 귀하의 앱에 대한 리포지토리를 생성할 수도 있습니다.
azd pipeline config
명령을 실행하여 배포 파이프라인을 구성하고 Azure에 안전하게 연결합니다.--provider azdo
Pipelines를 사용하려면 기본 Azure Actions 구성 대신 GitHub 옵션을 포함하세요.azd pipeline config --provider azdo
앱 리소스를 프로비전하고 배포할 구독을 선택합니다.
리소스에 사용할 Azure 위치를 선택합니다.
이전에 만든 개인용 액세스 토큰을 붙여넣습니다.
만들거나 선택한 Azure DevOps 조직 이름을 입력합니다.
현재 디렉터리에 새 리포지토리를 만들라는 메시지가 표시되면 y 입력하고 Enter누릅니다.
git 원격을 구성하라는 메시지가 표시되면 새 Azure DevOps 프로젝트만들기를 선택합니다.
새 리포지토리에 대해 선택한 고유한 이름(예:
aspireazd
)을 입력합니다.azd
는 Azure 리포지토리에 새 리포지토리를 생성하고 Azure에 인증하기 위해 필요한 비밀 설정으로 이를 구성합니다.가 로컬 변경 내용을 커밋하고 푸시하라는 메시지를 표시하면, 계속 진행하기 위해
azd
을 입력하여 구성된 파이프라인을 시작하세요.
파이프라인 및 배포된 앱 살펴보기
Azure에서 출력된 상태 링크를 사용하여 새
azd
파이프라인으로 이동합니다.완료된 파이프라인 실행을 선택하여 요약을 봅니다.
보기 맨 아래에 있는 작업 링크를 선택하여 작업 세부 정보로 이동합니다.
작업 세부 정보 페이지에는 모든 개별 단계의 상태가 표시됩니다. 프로비전 인프라을 선택하여,
azd
가 완료한 모든 프로비전 단계를 포함한 해당 단계에 대한 로그를 확인합니다. 로그 아래쪽에서 최종 상태 메시지를 기록하고 프로비전된 Azure 리소스 그룹에 연결합니다.프로비저닝 출력 로그의 맨 아래에 있는 링크를 선택하여 새 Azure 리소스 그룹으로 이동합니다.
메모
Azure Portal에서 검색하여 새 리소스 그룹으로 직접 이동할 수도 있습니다. 귀하가
azd
에 제공한 환경 이름 앞에rg-
접두사가 추가된 것이 리소스 그룹 이름이 됩니다.사이트의 공용 부분을 호스트하는 webfrontend 컨테이너 앱을 선택합니다.
웹 프런트 엔드 세부 정보 페이지에서 애플리케이션 URL 링크를 선택하여 브라우저에서 사이트를 엽니다.
중요하다
브라우저에서 사이트를 볼 때 403 Forbidden
오류가 발생하는 경우, 먼저 인그레스 설정이 올바르게 구성되었는지 확인합니다.
Portal의 Azure 앱 페이지에서, 왼쪽 탐색 메뉴에서 수신로 이동합니다.
수신 트래픽 어디서나 트래픽을 수락하도록 설정되어 있는지 확인하고 변경 내용을 저장합니다.
축하합니다! .NET Aspire 및 Azure Developer CLI Pipelines를 사용하여 Azure 프로젝트를 성공적으로 배포했습니다.
리소스 정리
만든 Azure 리소스가 더 이상 필요하지 않은 경우 다음 Azure CLI 명령을 실행하여 리소스 그룹을 삭제합니다. 리소스 그룹을 삭제하면 리소스 그룹에 포함된 리소스도 삭제됩니다.
az group delete --name <your-resource-group-name>
자세한 내용은
.NET Aspire