Übung: Konfigurieren, Bereitstellen und Ausführen Ihrer App in Azure

Abgeschlossen

Jetzt ist es an der Zeit, die App in Azure auszuführen. Sie müssen eine Azure App Service-App erstellen, sie mit einer verwalteten Identität und der Tresorkonfiguration einrichten und Ihren Code bereitstellen.

Erstellen des App Service-Plans und der -App

Das Erstellen einer App Service-App erfordert zwei Schritte: Erstellen Sie zunächst den Plan und anschließend die App.

Der Name des Plans muss nur innerhalb Ihres Abonnements eindeutig sein. Daher können Sie den Namen keyvault-exercise-plan verwenden. Der App-Name muss jedoch global eindeutig sein. Wählen Sie daher Ihren eigenen aus.

  1. Führen Sie den folgenden Befehl in Azure Cloud Shell aus, um einen App Service-Plan zu erstellen.

    az appservice plan create \
        --name keyvault-exercise-plan \
        --sku FREE \
        --location centralus \
        --resource-group "<rgn>[sandbox resource group name]</rgn>"
    
  2. Führen Sie anschließend den folgenden Befehl aus, um die Web-App zu erstellen, die den erstellten App Service-Plan verwendet: Ersetzen Sie im --name-Parameter <your-unique-app-name> durch den Namen Ihrer App.

    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>
    

Hinzufügen von Konfiguration zur App

Folgen Sie bei der Bereitstellung in Azure der bewährten App Service-Methode, die VaultName-Konfiguration in eine App-Einstellung anstatt in eine Konfigurationsdatei aufzunehmen. Führen Sie diesen Befehl aus, um die App-Einstellung zu erstellen: Stellen Sie sicher, dass Sie sowohl <your-unique-app-name> durch den Namen Ihrer App im --name-Parameter ersetzen, als auch <your-unique-vault-name> durch den Namen Ihres Tresors im --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>'

Folgen Sie bei der Bereitstellung in Azure der bewährten App Service-Methode, die VaultName-Konfiguration in eine App-Einstellung anstatt in eine Konfigurationsdatei aufzunehmen. Legen Sie außerdem die Einstellung SCM_DO_BUILD_DURING_DEPLOYMENT auf true fest, damit App Service die Pakete der App auf dem Server wiederherstellt und die erforderliche Konfiguration zum Ausführen der App erstellt. Führen Sie diesen Befehl aus, um die App-Einstellungen zu erstellen: Stellen Sie sicher, dass Sie sowohl <your-unique-app-name> durch den Namen Ihrer App im --name-Parameter ersetzen, als auch <your-unique-vault-name> durch den Namen Ihres Tresors im --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'

Aktivieren einer verwalteten Identität

Zum Aktivieren der verwalteten Identität für eine App ist nur eine Codezeile nötig. Führen Sie den folgenden Befehl aus, um sie in Ihrer App zu aktivieren. Ersetzen Sie im --name-Parameter <your-unique-app-name> durch den Namen Ihrer App.

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

Kopieren Sie aus der resultierenden JSON-Ausgabe den principalId-Wert. Bei PrincipalId handelt es sich um die eindeutige ID der neuen Identität der App in Microsoft Entra ID. Diese verwenden Sie im nächsten Schritt.

Gewähren von Zugriff auf den Tresor

Im letzten Schritt vor der Bereitstellung weisen Sie der verwalteten Identität Ihrer App Key Vault-Berechtigungen zu. Stellen Sie sicher, dass Sie beide <your-unique-vault-name> durch den Namen Ihres Tresors im --name-Parameter ersetzen und den principalId-Wert, den Sie im vorherigen Schritt kopiert haben, als Wert für object-id im folgenden Befehl eingeben. Führen Sie diesen Befehl aus, um den Get- und List-Zugriff (Abrufen und Auflisten) einzurichten.

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

Bereitstellen und Testen der App

  1. Die Konfiguration ist festgelegt, und Sie können die App jetzt bereitstellen. Mit den folgenden Befehlen wird die Website im Ordner pub veröffentlicht, in site.zip gepackt und die .zip-Datei in App Service bereitgestellt. Ersetzen Sie im --name-Parameter <your-unique-app-name> durch den Namen Ihrer App.

    Hinweis

    Sie müssen mit cd wieder in das Verzeichnis „KeyVaultDemoApp“ wechseln, sofern noch nicht geschehen.

    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. Die Konfiguration ist festgelegt, und Sie können die App jetzt bereitstellen. Mit den folgenden Befehlen wird Ihre App in site.zip gepackt und in App Service bereitgestellt. Schließen Sie node_modules aus der ZIP-Datei aus, da App Service diese Module automatisch bei der Bereitstellung wiederherstellt. Ersetzen Sie im --name-Parameter <your-unique-app-name> durch den Namen Ihrer App.

    Hinweis

    Sie müssen mit cd wieder in das Verzeichnis „KeyVaultDemoApp“ wechseln, sofern noch nicht geschehen.

    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. Die Bereitstellung dauert unter Umständen ein bis zwei Minuten. Wenn anzeigt wird, dass die Website bereitgestellt wurde, öffnen Sie https://<your-unique-app-name>.azurewebsites.net/api/SecretTest in einem Browser. Die App benötigt für den ersten Start auf dem Server etwas Zeit, sollte dann aber den Geheimniswert reindeer_flotilla anzeigen.

Ihre App ist fertig und wurde bereitgestellt.