Esercizio - Configurare, distribuire ed eseguire l'app in Azure
È ora possibile eseguire l'app in Azure. È necessario creare un'app del Servizio app di Azure, impostarla con un'identità gestita e la configurazione dell'insieme di credenziali e quindi distribuire il codice.
Creare l'app e il piano di servizio app
La creazione di un'app di Servizio app è un processo che si svolge in due passaggi: per prima cosa, creare il piano e poi l'app.
Il nome del piano deve essere univoco solo all'interno della sottoscrizione e di conseguenza è possibile usare lo stesso nome: keyvault-exercise-plan
. Tuttavia, il nome dell'app deve essere univoco a livello globale. Sceglierne quindi uno personalizzato.
In Azure Cloud Shell eseguire il comando seguente per creare un piano di servizio app.
az appservice plan create \ --name keyvault-exercise-plan \ --sku FREE \ --location centralus \ --resource-group "<rgn>[sandbox resource group name]</rgn>"
Quindi, per creare l'app Web che usa il piano di servizio app appena creato, eseguire il comando seguente. Assicurarsi di sostituire
<your-unique-app-name>
con il nome dell'app nel parametro--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>
Aggiungere una configurazione per l'app
Per la distribuzione in Azure seguire la procedura consigliata del Servizio app, ovvero si inserirà la configurazione VaultName
in un'impostazione dell'app, invece che in un file di configurazione. Per creare l'impostazione dell'app, eseguire questo comando. Assicurarsi di sostituire entrambi <your-unique-app-name>
con il nome dell'app nel parametro --name
e <your-unique-vault-name>
con il nome dell'insieme di credenziali nel parametro --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>'
Per la distribuzione in Azure seguire la procedura consigliata del Servizio app, ovvero si inserirà la configurazione VaultName
in un'impostazione dell'app, invece che in un file di configurazione. Si imposta anche SCM_DO_BUILD_DURING_DEPLOYMENT
su true
in modo che il servizio app ripristini i pacchetti dell'app nel server e crei la configurazione necessaria per eseguire l'app. Per creare le impostazioni dell'app, eseguire questo comando. Assicurarsi di sostituire entrambi <your-unique-app-name>
con il nome dell'app nel parametro --name
e <your-unique-vault-name>
con il nome dell'insieme di credenziali nel parametro --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'
Abilitare l'identità gestita
L'abilitazione dell'identità gestita in un'app richiede una singola riga di codice. Per abilitarla nell'app, eseguire il seguente comando. Assicurarsi di sostituire <your-unique-app-name>
con il nome dell'app nel parametro --name
.
az webapp identity assign \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name <your-unique-app-name>
Dall'output JSON risultante copiare il valore principalId
. PrincipalId
è l'ID univoco della nuova identità dell'app in Microsoft Entra ID e verrà usato nel passaggio successivo.
Concedere l'accesso all'insieme di credenziali
L'ultimo passaggio prima della distribuzione consiste nell'assegnare le autorizzazioni di Key Vault all'identità gestita dell'app. Assicurarsi di sostituire entrambi i <your-unique-vault-name>
con il nome dell'insieme di credenziali nel parametro --name
e immettere il valore principalId
copiato dal passaggio precedente come valore per object-id
nel comando seguente. Per stabilire gli accessi Get
e List
, eseguire questo comando.
az keyvault set-policy \
--secret-permissions get list \
--name <your-unique-vault-name> \
--object-id <your-managed-identity-principleid>
Distribuire l'app e provarla
Tutte le configurazioni sono impostate e si può avviare la distribuzione. I comandi seguenti pubblicano il sito nella cartella pub, lo comprimono in site.zip e distribuiscono il file zip in servizio app. Assicurarsi di sostituire
<your-unique-app-name>
con il nome dell'app nel parametro--name
.Nota
Se necessario, eseguire
cd
per tornare alla directory 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>
Tutte le configurazioni sono impostate e i può avviare la distribuzione. I comandi seguenti comprimeranno l'app nel file site.zip e la distribuiranno in Servizio app. L'elemento
node_modules
viene escluso dal file ZIP perché Servizio app lo ripristina automaticamente durante la distribuzione. Assicurarsi di sostituire<your-unique-app-name>
con il nome dell'app nel parametro--name
.Nota
Se non si è già nella directory
KeyVaultDemoApp
, usare il comandocd
per tornarvi.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>
- Il completamento della distribuzione potrebbe richiedere un minuto o due. Dopo aver ottenuto un risultato indicante che il sito è stato distribuito, aprire
https://<your-unique-app-name>.azurewebsites.net/api/SecretTest
in un browser. Il primo avvio dell'app nel server richiede un po' di tempo, ma al termine viene visualizzato il valore del segreto reindeer_flotilla.
L'app è stata completata e distribuita.