Упражнение. Настройка, развертывание и запуск приложения в Azure

Завершено

Пришло время запустить приложение в Azure. Необходимо создать приложение службы приложение Azure, настроить его с помощью управляемого удостоверения и конфигурации хранилища и развернуть код.

Создание приложения и плана Службы приложений

Создание приложения Службы приложений состоит из двух этапов: сначала создается план, а затем — приложение.

Имя плана должно быть уникальным только в вашей подписке, поэтому вы можете использовать то же имя: keyvault-exercise-plan Имя приложения должно быть глобально уникальным, однако, поэтому выберите свой собственный.

  1. В службе Azure Cloud Shell выполните следующую команду, чтобы создать план службы приложений.

    az appservice plan create \
        --name keyvault-exercise-plan \
        --sku FREE \
        --location centralus \
        --resource-group "<rgn>[sandbox resource group name]</rgn>"
    
  2. Затем, чтобы создать веб-приложение, использующее созданный план Служба приложений, выполните следующую команду. Обязательно замените <your-unique-app-name> именем своего приложения в параметре --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 конфигурации в параметре приложения вместо файла конфигурации. Выполните эту команду для создания параметров приложения. Обязательно замените <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 конфигурации в параметре приложения вместо файла конфигурации. Вы также установите 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'

Включение управляемого удостоверения

Включение управляемого удостоверения для приложения выполняется одной строкой. Чтобы включить его в приложении, воспользуйтесь следующей командой. Обязательно замените <your-unique-app-name> именем своего приложения в параметре --name.

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

Скопируйте principalId значение из результирующего выходных данных JSON. PrincipalId — это уникальный идентификатор нового удостоверения приложения в идентификаторе Microsoft Entra 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>

Развертывание и оценка приложения

  1. Конфигурация настроена, и вы можете приступать к развертыванию. Следующие команды публикуют сайт в папке pub, запакуйте его в site.zip и разверните ZIP-файл в Служба приложений. Обязательно замените <your-unique-app-name> именем своего приложения в параметре --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>
    
  1. Конфигурация настроена, и вы можете приступать к развертыванию. Следующие команды запаковывят приложение в site.zip и развернет его в Служба приложений. Мы исключим node_modules из ZIP-файла, так как Служба приложений автоматически восстанавливает их при развертывании. Обязательно замените <your-unique-app-name> именем своего приложения в параметре --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. Развертывание может занять минуту или два. После получения результата, указывающего, что развернутый сайт открывается https://<your-unique-app-name>.azurewebsites.net/api/SecretTest в браузере. Приложение занимает некоторое время, чтобы начать работу в первый раз на сервере, но после этого вы увидите значение секрета, reindeer_flotilla.

Приложение готово и развернуто.