다음을 통해 공유


빠른 시작: Azure Resource Manager 또는 Bicep 템플릿을 사용하여 Azure Container Apps에 Dapr 애플리케이션 배포

Dapr(Distributed Application Runtime)은 개발자가 복원력 있고 신뢰할 수 있는 마이크로 서비스를 빌드하는 데 도움이 됩니다. 이 빠른 시작에서는 Azure Blob Storage 상태 저장소에 저장된 메시지를 생성하고 사용하는 두 개의 컨테이너 앱과 함께 Dapr 사이드카를 실행할 수 있습니다. Azure Resource Manager 또는 Bicep 템플릿을 사용하여 다음을 수행합니다.

Azure Container Apps의 Dapr Hello World 마이크로서비스에 대한 아키텍처 다이어그램

이 빠른 시작은 오픈 소스 Dapr 헬로 월드 빠른 시작에서 배포하는 애플리케이션을 미러링합니다.

필수 조건

  • 활성 구독이 있는 Azure 계정이 필요합니다. 계정이 아직 없는 경우 체험 계정을 만들 수 있습니다.
  • GitHub 계정. 아직 없는 경우 체험해 보세요.

설정

CLI에서 Azure에 로그인하려면 다음 명령을 실행하고 프롬프트에 따라 인증 프로세스를 완료합니다.

az login

최신 버전의 CLI를 실행하고 있는지 확인하려면 업그레이드 명령을 실행합니다.

az upgrade

그런 다음 CLI용 Azure Container Apps 확장을 설치하거나 업데이트합니다.

Azure CLI에서 az containerapp 명령을 실행하거나 Azure PowerShell의 Az.App 모듈에서 cmdlet을 실행할 때 누락된 매개 변수에 대한 오류가 발생하는 경우 최신 버전의 Azure Container Apps 확장이 설치되어 있어야 합니다.

az extension add --name containerapp --upgrade

참고 항목

2024년 5월부터 Azure CLI 확장 기능은 기본적으로 미리 보기 기능을 사용하도록 설정하지 않습니다. Container Apps 미리 보기 기능에 액세스하려면 --allow-preview true를 사용하여 Container Apps 확장을 설치합니다.

az extension add --name containerapp --upgrade --allow-preview true

이제 현재 확장 또는 모듈이 설치되었으므로 Microsoft.AppMicrosoft.OperationalInsights 네임스페이스를 등록합니다.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

환경 변수 설정

다음 환경 변수를 설정합니다. 값을 <PLACEHOLDERS> 다음 값으로 바꿉다.

RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"

Azure 리소스 그룹 만들기

컨테이너 앱 배포와 관련된 서비스를 구성하는 리소스 그룹을 만듭니다.

az group create \
  --name $RESOURCE_GROUP \
  --location "$LOCATION"

GitHub 리포지토리 준비

솔루션을 배포하는 데 사용되는 ARM 및 Bicep 템플릿이 있는 리포지토리로 이동합니다.

리포지토리 맨 위에 있는 포크 단추를 선택하여 리포지토리를 계정에 포크합니다.

이제 포크를 복제하여 로컬로 작업할 수 있습니다.

다음 git 명령을 사용하여 포크된 리포지토리를 acadapr-templates 디렉터리에 복제합니다.

git clone https://github.com/$GITHUB_USERNAME/Tutorial-Deploy-Dapr-Microservices-ACA.git acadapr-templates

배포

acadapr-templates 디렉터리로 이동하여 다음 명령을 실행합니다.

az deployment group create \
  --resource-group "$RESOURCE_GROUP" \
  --template-file ./azuredeploy.json \
  --parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"

경고(BCP081)가 표시될 수 있습니다. 이 경고는 애플리케이션의 성공적인 배포에 영향을 주지 않습니다.

az deployment group create \
  --resource-group "$RESOURCE_GROUP" \
  --template-file ./azuredeploy.bicep \
  --parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"

이 명령은 다음을 배포합니다.

  • Hello world Dapr 솔루션을 호스팅하기 위한 Container Apps 환경 및 연결된 Log Analytics 작업 영역입니다.
  • Dapr 분산 추적을 위한 Application Insights 인스턴스입니다.
  • nodeapp 다음을 사용하여 Dapr을 사용하도록 설정하고 구성한 상태에서 실행되는 targetPort: 3000 앱 서버:
    • "appId": "nodeapp"
    • "appPort": 3000
    • Storage 데이터 기여자 역할 할당을 통해 Azure Blob Storage에 액세스할 수 있는 사용자 할당 ID
  • 저장 상태에 사용할 nodeapp 범위가 "type": "state.azure.blobstorage" 지정된 Dapr 구성 요소입니다.
  • Dapr 서비스 호출을 사용하여 서비스를 호출하는 nodeapp Dapr 지원 헤드리스 pythonapp 입니다.
  • Blob Storage에 대한 연결을 설정하기 위해 Dapr 구성 요소에서 사용하는 Node.js 앱에 대한 Microsoft Entra ID 역할 할당입니다.

결과 확인

성공적인 상태 지속성 확인

Azure Storage 계정의 데이터를 확인하여 서비스가 올바르게 작동하는지 확인할 수 있습니다.

  1. 브라우저에서 Azure Portal을 엽니다.

  2. 리소스 그룹에서 새로 만든 스토리지 계정으로 이동합니다.

  3. 왼쪽 메뉴에서 데이터 스토리지>컨테이너를 선택합니다.

  4. 만든 컨테이너를 선택합니다.

  5. 컨테이너에서 order라는 파일을 볼 수 있는지 확인합니다.

  6. 파일 선택.

  7. 편집 탭을 선택합니다.

  8. 새로 고침 단추를 선택하여 업데이트를 관찰합니다.

로그 보기

컨테이너 앱의 로그는 Log Analytics 작업 영역의 ContainerAppConsoleLogs_CL 사용자 지정 테이블에 저장됩니다. Azure Portal 또는 CLI를 통해 로그를 볼 수 있습니다. 처음에는 테이블이 작업 영역에 표시되는 데 약간의 지연이 있을 수 있습니다.

다음 명령을 사용하여 bash 또는 PowerShell에서 로그를 볼 수 있습니다.

LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az containerapp env show --name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP --query properties.appLogsConfiguration.logAnalyticsConfiguration.customerId --out tsv`
az monitor log-analytics query \
  --workspace "$LOG_ANALYTICS_WORKSPACE_CLIENT_ID" \
  --analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'nodeapp' and (Log_s contains 'persisted' or Log_s contains 'order') | project ContainerAppName_s, Log_s, TimeGenerated | take 5" \
  --out table

다음 출력은 명령에서 예상되는 응답 형식을 보여 줍니다.

ContainerAppName_s    Log_s                            TableName      TimeGenerated
--------------------  -------------------------------  -------------  ------------------------
nodeapp               Got a new order! Order ID: 61    PrimaryResult  2021-10-22T21:31:46.184Z
nodeapp               Successfully persisted state.    PrimaryResult  2021-10-22T21:31:46.184Z
nodeapp               Got a new order! Order ID: 62    PrimaryResult  2021-10-22T22:01:57.174Z
nodeapp               Successfully persisted state.    PrimaryResult  2021-10-22T22:01:57.174Z
nodeapp               Got a new order! Order ID: 63    PrimaryResult  2021-10-22T22:45:44.618Z

리소스 정리

pythonapp 구성된 상태 저장소에 nodeapp 유지되는 메시지를 사용하여 지속적으로 호출하므로 지속적인 청구 가능 작업을 방지하려면 이러한 정리 단계를 완료해야 합니다.

이 연습의 일부로 만든 리소스를 삭제하려면 다음 명령을 실행합니다.

az group delete \
  --resource-group $RESOURCE_GROUP

문제가 있나요? Azure Container Apps 리포지토리에서 문제를 열어 GitHub에 알려주세요.

다음 단계