연습 - Azure에서 앱 구성, 배포 및 실행
이제 Azure에서 앱을 실행해 보겠습니다. Azure App Service 앱을 만들고, 관리 ID 및 자격 증명 모음 구성을 사용하여 앱을 설정한 다음 코드를 배포해야 합니다.
App Service 계획 및 앱 만들기
App Service 앱은 다음 2단계 프로세스로 만들 수 있습니다. 먼저 ‘계획’을 만든 후 ‘앱’을 만듭니다.
요금제 이름은 구독 내에서만 고유하면 되므로 동일한 이름 keyvault-exercise-plan
을(를) 사용할 수 있습니다. 하지만 앱 이름은 전역적으로 고유해야 하므로 고유한 이름을 선택합니다.
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>"
그런 다음, 방금 만든 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
값으로 입력합니다. Get
및 List
액세스를 설정하려면 다음 명령을 실행합니다.
az keyvault set-policy \
--secret-permissions get list \
--name <your-unique-vault-name> \
--object-id <your-managed-identity-principleid>
앱을 배포하고 사용해 보기
모든 구성이 설정되고 배포할 준비가 되었습니다. 다음 명령은 사이트를 pub 폴더에 게시하고 site.zip에 압축한 다음 App Service에 배포합니다.
--name
매개 변수에서<your-unique-app-name>
을(를) 앱의 이름으로 바꿔야 합니다.참고
위치에 여전히 남아 있는 경우에는
cd
를 실행하여 다시 KeyVaultDemoApp 디렉터리로 이동해야 합니다.dotnet publish -o pub zip -j site.zip pub/* az webapp deploy \ --src-path site.zip \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name <your-unique-app-name>
모든 구성이 설정되고 배포할 준비가 되었습니다. 다음 명령은 앱을 site.zip으로 압축하여 App Service에 배포합니다.
node_modules
은(는) 배포 시 App Service에서 자동으로 복원되므로 압축에서 제외합니다.--name
매개 변수에서<your-unique-app-name>
을(를) 앱의 이름으로 바꿔야 합니다.참고 항목
아직
KeyVaultDemoApp
디렉터리에 있지 않은 경우cd
명령을 사용하여 돌아가세요.zip site.zip * -x node_modules/ az webapp deploy \ --src-path site.zip \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name <your-unique-app-name>
- 배포를 완료하는 데 1~2분 정도 걸릴 수 있습니다. 사이트가 배포되었다는 결과가 표시되면 브라우저에서
https://<your-unique-app-name>.azurewebsites.net/api/SecretTest
을(를) 엽니다. 서버에서 앱을 맨 처음 시작할 때 시간이 걸리지만, 시작되고 나면 비밀 값 reindeer_flotilla가 표시됩니다.
앱이 완료되어 배포되었습니다.