Oefening: uw app configureren, implementeren en uitvoeren in Azure

Voltooid

Het is nu tijd om uw app in Azure uit te voeren. U moet een Azure-app Service-app maken, deze instellen met een beheerde identiteit en uw kluisconfiguratie en uw code implementeren.

Het App Service-plan en de App Service-app maken

Het maken van een App Service-app bestaat uit twee stappen: u maakt eerst het plan en vervolgens de app.

De abonnementsnaam hoeft alleen uniek te zijn binnen uw abonnement, zodat u dezelfde naam kunt gebruiken: keyvault-exercise-plan. De naam van de app moet echter wereldwijd uniek zijn, dus kies uw eigen naam.

  1. Voer in Azure Cloud Shell de volgende opdracht uit om een App Service-plan te maken.

    az appservice plan create \
        --name keyvault-exercise-plan \
        --sku FREE \
        --location centralus \
        --resource-group "<rgn>[sandbox resource group name]</rgn>"
    
  2. Voer vervolgens de volgende opdracht uit om de web-app te maken die gebruikmaakt van het App Service-plan dat u hebt gemaakt. Zorg ervoor dat u de naam van uw app in de --name parameter vervangt<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>
    

Configuratie toevoegen aan de app

Als u wilt implementeren in Azure, volgt u de best practice van App Service om de VaultName configuratie in een app-instelling te plaatsen in plaats van een configuratiebestand. Voer de volgende opdracht uit om de app-instelling te maken. Zorg ervoor dat u beide <your-unique-app-name> vervangt door de naam van uw app in de --name parameter en <your-unique-vault-name> door de naam van uw kluis in de --settings parameter.

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

Als u wilt implementeren in Azure, volgt u de best practice van App Service om de VaultName configuratie in een app-instelling te plaatsen in plaats van een configuratiebestand. U stelt de SCM_DO_BUILD_DURING_DEPLOYMENT instelling true ook zo in dat App Service de pakketten van uw app op de server herstelt en de benodigde configuratie maakt om de app uit te voeren. Voer de volgende opdracht uit om de app-instellingen te maken. Zorg ervoor dat u beide <your-unique-app-name> vervangt door de naam van uw app in de --name parameter en <your-unique-vault-name> door de naam van uw kluis in de --settings parameter.

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'

Beheerde identiteit inschakelen

Het inschakelen van een beheerde identiteit in een app is een één-liner. Voer de volgende opdracht uit om deze in te schakelen in uw app. Zorg ervoor dat u de naam van uw app in de --name parameter vervangt<your-unique-app-name>.

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

Kopieer principalId de waarde vanuit de resulterende JSON-uitvoer. PrincipalId is de unieke id van de nieuwe identiteit van de app in Microsoft Entra ID en u gaat deze in de volgende stap gebruiken.

Toegang verlenen tot de kluis

De laatste stap voor het implementeren bestaat uit het toewijzen van Key Vault-machtigingen aan de beheerde identiteit van uw app. Zorg ervoor dat u beide <your-unique-vault-name> vervangt door de naam van uw kluis in de --name parameter en voer de principalId waarde in die u uit de vorige stap hebt gekopieerd als de waarde voor object-id in de volgende opdracht. Voer deze opdracht uit om deze opdracht tot stand te brengen Get en List te openen.

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

De app implementeren en proberen

  1. Al uw configuratie is ingesteld en u bent klaar om te implementeren. Met de volgende opdrachten publiceert u de site naar de pubmap , zipt u deze in site.zip en implementeert u de zip in App Service. Zorg ervoor dat u de naam van uw app in de --name parameter vervangt<your-unique-app-name>.

    Notitie

    U moet cd naar de map KeyVaultDemoApp als u daar niet meer bent.

    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. De configuratie is voltooid en u bent klaar om de app te implementeren. Met de volgende opdrachten wordt uw app in site.zip gezipt en geïmplementeerd in App Service. We sluiten het zip-bestand uit node_modules omdat App Service deze automatisch herstelt wanneer u implementeert. Zorg ervoor dat u de naam van uw app in de --name parameter vervangt<your-unique-app-name>.

    Notitie

    U moet cd naar de map KeyVaultDemoApp als u daar niet meer bent.

    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. Het kan een paar minuten duren voordat de implementatie is voltooid. Nadat u een resultaat hebt dat aangeeft dat de site is geïmplementeerd, opent https://<your-unique-app-name>.azurewebsites.net/api/SecretTest u deze in een browser. Het duurt even voordat de app voor het eerst op de server wordt opgestart, maar nadat deze is uitgevoerd, ziet u de geheime waarde, reindeer_flotilla.

Uw app is voltooid en geïmplementeerd.