Ćwiczenie — konfigurowanie, wdrażanie i uruchamianie aplikacji na platformie Azure

Ukończone

Teraz nadszedł czas na uruchomienie aplikacji na platformie Azure. Musisz utworzyć aplikację usługi aplikacja systemu Azure Service, skonfigurować ją przy użyciu tożsamości zarządzanej i konfiguracji magazynu oraz wdrożyć kod.

Tworzenie planu i aplikacji usługi App Service

Tworzenie aplikacji usługi App Service jest procesem dwuetapowym: najpierw należy utworzyć plan, a następnie aplikację.

Nazwa planu musi być unikatowa tylko w ramach subskrypcji, więc możesz użyć tej samej nazwy: keyvault-exercise-plan. Nazwa aplikacji musi być jednak globalnie unikatowa, więc wybierz własną.

  1. W usłudze Azure Cloud Shell uruchom następujące polecenie, aby utworzyć plan usługi App Service.

    az appservice plan create \
        --name keyvault-exercise-plan \
        --sku FREE \
        --location centralus \
        --resource-group "<rgn>[sandbox resource group name]</rgn>"
    
  2. Następnie, aby utworzyć aplikację internetową korzystającą z utworzonego planu usługi App Service, uruchom następujące polecenie. Pamiętaj, aby zastąpić <your-unique-app-name> ciąg nazwą aplikacji w parametrze --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>
    

Dodawanie konfiguracji do aplikacji

Aby wdrożyć na platformie Azure, postępuj zgodnie z najlepszymi rozwiązaniami usługi App Service dotyczącymi umieszczania VaultName konfiguracji w ustawieniu aplikacji zamiast pliku konfiguracji. Aby utworzyć ustawienie aplikacji, uruchom to polecenie. Pamiętaj, aby zastąpić zarówno <your-unique-app-name> nazwą aplikacji w parametrze --name , jak i <your-unique-vault-name> nazwą magazynu w parametrze --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>'

Aby wdrożyć na platformie Azure, postępuj zgodnie z najlepszymi rozwiązaniami usługi App Service dotyczącymi umieszczania VaultName konfiguracji w ustawieniu aplikacji zamiast pliku konfiguracji. Należy również ustawić SCM_DO_BUILD_DURING_DEPLOYMENT ustawienie na true tak, aby usługa App Service przywracała pakiety aplikacji na serwerze i tworzy niezbędną konfigurację do uruchomienia aplikacji. Aby utworzyć ustawienia aplikacji, uruchom to polecenie. Pamiętaj, aby zastąpić zarówno <your-unique-app-name> nazwą aplikacji w parametrze --name , jak i <your-unique-vault-name> nazwą magazynu w parametrze --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'

Włączanie tożsamości zarządzanej

Włączanie tożsamości zarządzanej w aplikacji jest jednym elementem liniowym. Aby ją włączyć w aplikacji, uruchom następujące polecenie. Pamiętaj, aby zastąpić <your-unique-app-name> ciąg nazwą aplikacji w parametrze --name .

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

Z wynikowych danych wyjściowych JSON skopiuj principalId wartość. PrincipalId jest unikatowym identyfikatorem nowej tożsamości aplikacji w usłudze Microsoft Entra ID i użyjesz jej w następnym kroku.

Udzielanie dostępu do magazynu

Ostatnim krokiem przed wdrożeniem jest przypisanie uprawnień usługi Key Vault do tożsamości zarządzanej aplikacji. Pamiętaj, aby zastąpić obie <your-unique-vault-name> nazwą magazynu w parametrze --name , a następnie wprowadź principalId wartość skopiowaną z poprzedniego kroku jako wartość w object-id poniższym poleceniu. Aby ustanowić Get i List uzyskać dostęp, uruchom to polecenie.

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

Wdrażanie aplikacji i jej wypróbowywanie

  1. Wszystkie konfiguracje są ustawione i wszystko jest gotowe do wdrożenia. Następujące polecenia publikują witrynę w folderze pub , spakuj ją w pliku site.zip i wdróż plik zip w usłudze App Service. Pamiętaj, aby zastąpić <your-unique-app-name> ciąg nazwą aplikacji w parametrze --name .

    Uwaga

    Jeśli jeszcze nie znajdujesz się w katalogu KeyVaultDemoApp, musisz do niego wrócić za pomocą polecenia cd.

    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. Konfiguracja została ustawiona i wszystko jest gotowe do wdrażania. Następujące polecenia spakują aplikację do pliku site.zip i wdróżą ją w usłudze App Service. Wykluczamy node_modules z pliku zip, ponieważ usługa App Service przywraca je automatycznie podczas wdrażania. Pamiętaj, aby zastąpić <your-unique-app-name> ciąg nazwą aplikacji w parametrze --name .

    Uwaga

    Jeśli jeszcze nie znajdujesz się w katalogu KeyVaultDemoApp, musisz do niego wrócić za pomocą polecenia cd.

    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. Ukończenie wdrożenia może potrwać minutę lub dwie. Po otrzymaniu wyniku wskazującego, że witryna została wdrożona, otwórz w https://<your-unique-app-name>.azurewebsites.net/api/SecretTest przeglądarce. Uruchomienie aplikacji po raz pierwszy na serwerze trwa chwilę, ale po jej wykonaniu powinna zostać wyświetlona wartość wpisu tajnego reindeer_flotilla.

Twoja aplikacja jest gotowa i wdrożona.