Condividi tramite


Esercitazione: Configurare un contenitore sidecar per un contenitore personalizzato nel servizio app Azure

In questa esercitazione si aggiunge un agente di raccolta OpenTelemetry come contenitore sidecar a un'app contenitore personalizzata Linux nel servizio app Azure. Per le app Linux bring-your-own-code, vedere Esercitazione: Configurare un contenitore sidecar per un'app Linux nel servizio app Azure.

Se non si ha un account Azure, creare un account gratuito prima di iniziare.

Che cos'è un contenitore sidecar?

In app Azure Service è possibile aggiungere fino a nove contenitori sidecar per ogni app Linux. I contenitori sidecar consentono di distribuire servizi e funzionalità aggiuntivi nelle app Linux senza renderli strettamente associati al contenitore principale (predefinito o personalizzato). Ad esempio, è possibile aggiungere servizi di monitoraggio, registrazione, configurazione e rete come contenitori sidecar. Un sidecar dell'agente di raccolta OpenTelemetry è un esempio di monitoraggio di questo tipo.

I contenitori sidecar vengono eseguiti insieme al contenitore principale dell'applicazione nello stesso piano di servizio app.

1. Configurare le risorse necessarie

Prima di tutto si creano le risorse usate dall'esercitazione. Vengono usate per questo particolare scenario e non sono necessarie per i contenitori sidecar in generale.

  1. In Azure Cloud Shell, eseguire i comandi seguenti:

    git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs
    cd app-service-sidecar-tutorial-prereqs
    azd env new my-sidecar-env
    azd provision
    
  2. Quando richiesto, specificare la sottoscrizione e l'area desiderata. Ad esempio:

    • Sottoscrizione: la sottoscrizione.
    • Area: (Europa) Europa occidentale.

    Al termine della distribuzione, verrà visualizzato l'output seguente:

     APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=...
    
     Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/.../resourceGroups/...
     
  3. Aprire il collegamento al gruppo di risorse in una scheda del browser. Sarà necessario usare la stringa di connessione in un secondo momento.

    Nota

    azd provision usa i modelli inclusi per creare le risorse di Azure seguenti:

2. Creare un'app abilitata per sidecar

  1. Nella pagina di gestione del gruppo di risorse selezionare Crea.

  2. Cercare app Web, quindi selezionare la freccia giù in Crea e selezionare app Web.

    Screenshot che mostra la pagina di Azure Marketplace con l'app Web in cui viene eseguita la ricerca e la creazione di pulsanti dell'app Web su cui si fa clic.

  3. Configurare il pannello Informazioni di base come indicato di seguito:

    • Nome: nome univoco
    • Pubblica: contenitore
    • Sistema operativo: Linux
    • Area: stessa area di quella scelta con azd provision
    • piano Linux: un nuovo piano di servizio app

    Screenshot che mostra la creazione guidata e le impostazioni dell'app Web per un'app contenitore personalizzata Linux evidenziata.

  4. Selezionare Contenitore. Configurare il pannello Contenitore come indicato di seguito:

    • Supporto sidecar: Abilitato
    • Origine immagine: Registro Azure Container
    • Registro di sistema: registro creato da azd provision
    • Immagine: nginx
    • Tag: latest
    • Porta: 80

    Screenshot che mostra la creazione guidata e le impostazioni dell'app Web per l'immagine del contenitore e il supporto sidecar evidenziato.

    Nota

    Queste impostazioni sono configurate in modo diverso nelle app abilitate per sidecar. Per ulteriori informazioni, vedere Quali sono le differenze per i contenitori personalizzati con sidecar abilitato?.

  5. Selezionare Rivedi e crea e quindi Crea.

  6. Al termine della distribuzione selezionare Vai al gruppo di risorse.

  7. In una nuova scheda del browser passare a https://<app-name>.azurewebsites.net e visualizzare la pagina Nginx predefinita.

3. Aggiungere un contenitore sidecar

In questa sezione si aggiunge un contenitore sidecar all'app contenitore personalizzata.

  1. Nel menu a sinistra della pagina di gestione dell'app selezionare Centro distribuzione.

    Il Centro distribuzione mostra tutti i contenitori nell'app. Al momento, ha solo il contenitore principale.

  2. Selezionare Aggiungi e configurare il nuovo contenitore come indicato di seguito:

    • Nome: agente di raccolta
    • Origine immagine: Registro Azure Container
    • Registro di sistema: registro creato da azd provision
    • Image: agente di raccolta
    • Tag: latest
  3. Selezionare Applica.

    Screenshot che mostra come configurare un contenitore sidecar nel centro distribuzione di un'app Web.

    Nel Centro distribuzione dovrebbero essere visualizzati due contenitori. Il contenitore principale è contrassegnato come Principale e il contenitore sidecar è contrassegnato come Sidecar. Ogni app deve avere un contenitore principale, ma può avere più contenitori sidecar.

4. Configurare le variabili di ambiente

Per lo scenario di esempio, il sidecar dell'agente di raccolta destinazioni è configurato per esportare i dati OpenTelemetry in Monitoraggio di Azure, ma ha bisogno della stringa di connessione come variabile di ambiente (vedere il file di configurazione OpenTelemetry per l'immagine dell'agente di raccolta dati).

È possibile configurare le variabili di ambiente per i contenitori come qualsiasi app del servizio app configurando le impostazioni dell'app. Le impostazioni dell'app sono accessibili a tutti i contenitori nell'app.

  1. Nel menu a sinistra della pagina di gestione dell'app selezionare Variabili di ambiente.

  2. Aggiungere un'impostazione dell'app selezionando Aggiungi e configurandola come segue:

    • Nome: APPLICATIONINSIGHTS_CONNECTION_STRING
    • Valore: stringa di connessione nell'output di azd provision. Se si perde la sessione di Cloud Shell, è anche possibile trovarla nella pagina Panoramica della risorsa Application Insight, in Stringa di connessione.
  3. Selezionare Applica, quindi Applica, quindi Conferma.

    Screenshot che mostra la pagina Configurazione di un'app Web con due impostazioni dell'app aggiunte.

Nota

Alcune impostazioni dell'app non si applicano alle app abilitate per sidecar. Per ulteriori informazioni, vedere Quali sono le differenze per i contenitori personalizzati con supporto sidecar?

5. Verificare in Application Insights

Il sidecar dell'agente di raccolta eseguirà ora l'esportazione dei dati in Application Insights.

  1. Tornare alla scheda del browser per https://<app-name>.azurewebsites.net, aggiornare la pagina alcune volte per generare alcune richieste Web.

  2. Tornare alla pagina di panoramica del gruppo di risorse e quindi selezionare la risorsa di Application Insights. Verranno ora visualizzati alcuni dati nei grafici predefiniti.

    Screenshot della pagina di Application Insights che mostra i dati nei grafici predefiniti.

Nota

In questo scenario di monitoraggio molto comune, Application Insights è solo una delle destinazioni OpenTelemetry che è possibile usare, ad esempio Jaeger, Prometheus e Zipkin.

Pulire le risorse

Quando l'ambiente non è più necessario, è possibile eliminare il gruppo di risorse, il servizio app e tutte le risorse correlate. È sufficiente eseguire questo comando in Cloud Shell, nel repository clonato:

azd down

Domande frequenti

Quali sono le differenze per i contenitori personalizzati che supportano la funzione sidecar?

Le app abilitate per sidecar vengono configurate in modo diverso rispetto alle app che non sono abilitate per sidecar.

Non abilitato per sidecar

  • Il nome e i tipi di container sono configurati direttamente con LinuxFxVersion=DOCKER|<image-details> (vedere az webapp config set --linux-fx-version).
  • Il contenitore principale è configurato con le impostazioni dell'app, ad esempio:
    • DOCKER_REGISTRY_SERVER_URL
    • DOCKER_REGISTRY_SERVER_USERNAME
    • DOCKER_REGISTRY_SERVER_PASSWORD
    • WEBSITES_PORT

Sidecar abilitato

  • Un'app con supporto sidecar è designata da LinuxFxVersion=sitecontainers (vedere az webapp config set --linux-fx-version).
  • Il contenitore principale è configurato con una risorsa sitecontainers . Queste impostazioni non si applicano alle app che supportano la funzionalità sidecar.
    • DOCKER_REGISTRY_SERVER_URL
    • DOCKER_REGISTRY_SERVER_USERNAME
    • DOCKER_REGISTRY_SERVER_PASSWORD
    • WEBSITES_PORT

In che modo i contenitori sidecar gestiscono la comunicazione interna?

I contenitori sidecar condividono lo stesso host di rete del contenitore principale, quindi il contenitore principale (e altri contenitori sidecar) può raggiungere qualsiasi porta sul sidecar con localhost:<port>. L'esempio startup.sh usa localhost:4318 per accedere alla porta 4318 sul sidecar dell'agente di raccolta dati.

Nella finestra di dialogo Modifica contenitore la casella Porta non è attualmente usata da servizio app. È possibile usarlo come parte dei metadati sidecar, ad esempio per indicare la porta su cui è in ascolto il sidecar.

Un contenitore sidecar può ricevere richieste Internet?

No Il servizio app instrada le richieste Internet solo al contenitore principale. Per le app Linux basate su codice, il contenitore Linux predefinito è il contenitore principale e qualsiasi contenitore sidecar (sitecontainers) deve essere aggiunto con IsMain=false. Per i contenitori personalizzati, tutti tranne uno dei contenitori del sito dovrebbe avere IsMain=false.

Per altre informazioni sulla configurazione di IsMain, vedere Siti Microsoft.Web/sitecontainers.

Come si usano i montaggi di volumi?

La funzionalità Montaggi di volume consente di condividere file e directory non persistenti tra container all'interno della web app.

Screenshot che mostra una configurazione di montaggio volume per un container di tipo sidecar.

Percorso secondario del volume: Si tratta di un percorso di directory logica creato automaticamente e non viene fatto riferimento all'interno del contenitore. I contenitori configurati con lo stesso percorso secondario del volume possono condividere file e directory tra loro.

Percorso di montaggio del contenitore: Corrisponde a un percorso di directory a cui si fa riferimento all'interno del contenitore. Il percorso di montaggio del contenitore è mappato al percorso secondario del volume.

Si supponga, ad esempio, che siano configurati i montaggi di volume seguenti:

Nome sidecar Percorso del sottovolume Percorso di montaggio del contenitore Sola lettura
Contenitore1 /directory1/directory2 /container1Vol Falso
Contenitore2 /directory1/directory2 /container2Vol Vero
Contenitore3 /directory1/directory2/directory3 /container3Vol Falso
Contenitore4 /directory4 /container1Vol Falso

In base a queste impostazioni, si applicano le condizioni seguenti:

  • Se Container1 crea /container1Vol/myfile.txt, Container2 può leggere il file tramite /container2Vol/myfile.txt.
  • Se Container1 crea /container1Vol/directory3/myfile.txt, Container2 può leggere il file tramite /container2Vol/directory3/myfile.txte Container3 può leggere e scrivere nel file tramite /container3Vol/myfile.txt.
  • Container4 non condivide un volume montato con nessuno degli altri contenitori.

Nota

Per le app Linux basate su codice, il contenitore Linux integrato non può usare i montaggi di volumi.

Altre risorse