연습 - Azure에서 앱 구성, 배포 및 실행

완료됨

이제 Azure에서 앱을 실행해 보겠습니다. Azure App Service 앱을 만들고, 관리 ID 및 자격 증명 모음 구성을 사용하여 앱을 설정한 다음 코드를 배포해야 합니다.

App Service 계획 및 앱 만들기

App Service 앱은 다음 2단계 프로세스로 만들 수 있습니다. 먼저 ‘계획’을 만든 후 ‘앱’을 만듭니다.

요금제 이름은 구독 내에서만 고유하면 되므로 동일한 이름 keyvault-exercise-plan을(를) 사용할 수 있습니다. 하지만 앱 이름은 전역적으로 고유해야 하므로 고유한 이름을 선택합니다.

  1. Azure Cloud Shell에서 App Service 요금제를 만들려면 다음 명령을 실행합니다.

    az appservice plan create \
        --name keyvault-exercise-plan \
        --sku FREE \
        --location centralus \
        --resource-group "<rgn>[sandbox resource group name]</rgn>"
    
  2. 그런 다음, 방금 만든 App Service 요금제를 사용하는 웹앱을 만들기 위해 다음 명령을 실행합니다. --name 매개 변수에서 <your-unique-app-name>을(를) 앱의 이름으로 바꿔야 합니다.

    az webapp create \
        --plan keyvault-exercise-plan \
        --resource-group "<rgn>[sandbox resource group name]</rgn>" \
        --name <your-unique-app-name>
    
    az webapp create \
        --plan keyvault-exercise-plan \
        --runtime "node|16LTS" \
        --resource-group "<rgn>[sandbox resource group name]</rgn>" \
        --name <your-unique-app-name>
    

앱에 구성 추가

Azure에 배포하려면 구성 파일 대신 앱 설정에 VaultName 구성을 배치하는 App Service 모범 사례를 따라야 합니다. 앱 설정을 만들려면 다음 명령을 실행합니다. <your-unique-app-name>을(를) --name 매개 변수에 있는 앱 이름으로 바꾸고, <your-unique-vault-name>을(를) --settings 매개 변수에 있는 자격 증명 모음의 이름으로 바꿔야 합니다.

az webapp config appsettings set \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --name <your-unique-app-name> \
    --settings 'VaultName=<your-unique-vault-name>'

Azure에 배포하려면 구성 파일 대신 앱 설정에 VaultName 구성을 배치하는 App Service 모범 사례를 따라야 합니다. 또한 App Service가 서버에서 앱 패키지를 복원하고 앱을 실행하는 데 필요한 구성을 만들도록 SCM_DO_BUILD_DURING_DEPLOYMENT 설정을 true(으)로 지정합니다. 앱 설정을 만들려면 다음 명령을 실행합니다. <your-unique-app-name>을(를) --name 매개 변수에 있는 앱 이름으로 바꾸고, <your-unique-vault-name>을(를) --settings 매개 변수에 있는 자격 증명 모음의 이름으로 바꿔야 합니다.

az webapp config appsettings set \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --name <your-unique-app-name> \
    --settings 'VaultName=<your-unique-vault-name>' 'SCM_DO_BUILD_DURING_DEPLOYMENT=true'

관리 ID 사용

앱에서 관리 ID를 사용하도록 설정하는 것은 간단한 작업입니다. 앱에서 사용하도록 설정하려면 다음 명령을 실행합니다. --name 매개 변수에서 <your-unique-app-name>을(를) 앱의 이름으로 바꿔야 합니다.

az webapp identity assign \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --name <your-unique-app-name>

결과 JSON 출력에서 principalId 값을 복사합니다. PrincipalId은(는) Microsoft Entra ID의 새로운 앱 ID의 고유 ID이며, 다음 단계에서 사용합니다.

자격 증명 모음에 대한 액세스 권한 부여

배포 전에 마지막으로 수행할 단계는 앱의 관리 ID에 Key Vault 권한을 할당하는 것입니다. <your-unique-vault-name> 모두를 --name 매개 변수의 자격 증명 모음 이름으로 바꾸고, 이전 단계에서 복사한 principalId 값을 다음 명령의 object-id 값으로 입력합니다. GetList 액세스를 설정하려면 다음 명령을 실행합니다.

az keyvault set-policy \
    --secret-permissions get list \
    --name <your-unique-vault-name> \
    --object-id <your-managed-identity-principleid>

앱을 배포하고 사용해 보기

  1. 모든 구성이 설정되고 배포할 준비가 되었습니다. 다음 명령은 사이트를 pub 폴더에 게시하고 site.zip에 압축한 다음 App Service에 배포합니다. --name 매개 변수에서 <your-unique-app-name>을(를) 앱의 이름으로 바꿔야 합니다.

    참고

    위치에 여전히 남아 있는 경우에는 cd를 실행하여 다시 KeyVaultDemoApp 디렉터리로 이동해야 합니다.

    dotnet publish -o pub
    zip -j site.zip pub/*
    
    az webapp deployment source config-zip \
        --src site.zip \
        --resource-group "<rgn>[sandbox resource group name]</rgn>" \
        --name <your-unique-app-name>
    
  1. 모든 구성이 설정되고 배포할 준비가 되었습니다. 다음 명령은 앱을 site.zip으로 압축하여 App Service에 배포합니다. node_modules은(는) 배포 시 App Service에서 자동으로 복원되므로 압축에서 제외합니다. --name 매개 변수에서 <your-unique-app-name>을(를) 앱의 이름으로 바꿔야 합니다.

    참고

    위치에 여전히 남아 있는 경우에는 cd를 실행하여 다시 KeyVaultDemoApp 디렉터리로 이동해야 합니다.

    zip site.zip * -x node_modules/
    
    az webapp deployment source config-zip \
        --src site.zip \
        --resource-group "<rgn>[sandbox resource group name]</rgn>" \
        --name <your-unique-app-name>
    
  1. 배포를 완료하는 데 1~2분 정도 걸릴 수 있습니다. 사이트가 배포되었다는 결과가 표시되면 브라우저에서 https://<your-unique-app-name>.azurewebsites.net/api/SecretTest을(를) 엽니다. 서버에서 앱을 맨 처음 시작할 때 시간이 걸리지만, 시작되고 나면 비밀 값 reindeer_flotilla가 표시됩니다.

앱이 완료되어 배포되었습니다.