Freigeben über


Tutorial: Konfigurieren eines Sidecar-Containers für benutzerdefinierte Container in Azure App Service

In diesem Tutorial fügen Sie einen OpenTelemetry-Collector als Sidecar-Container einer benutzerdefinierten Linux-Container-App in Azure App Service hinzu. Weitere Informationen zu Bring-your-own-Code-Linux-Apps finden Sie im Tutorial: Konfigurieren eines Sidecar-Containers für eine Linux-App in Azure App Service.

In Azure App Service können Sie bis zu neun Sidecar-Container für jede benutzerdefinierte App mit Sidecar-Containern hinzufügen. Mit Sidecar-Containern können Sie zusätzliche Dienste und Features für Ihre Containeranwendung bereitstellen, ohne sie eng mit Ihrem Hauptanwendungscontainer zu koppeln. Sie können beispielsweise Überwachungs-, Protokollierungs-, Konfigurations- und Netzwerkdienste als Sidecar-Container hinzufügen. Ein OpenTelemetry-Collector-Sidecar ist ein solches Überwachungsbeispiel.

Weitere Informationen zu Sidecar-Containern in App Service finden Sie unter:

Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.

1. Einrichten der erforderlichen Ressourcen

Zuerst erstellen Sie die Ressourcen, die im Tutorial verwendet werden. Sie werden für dieses bestimmte Szenario verwendet und sind im Allgemeinen nicht für Sidecar-Container erforderlich.

  1. Führen Sie in Azure Cloud Shell die folgenden Befehle aus:

    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. Wenn Sie dazu aufgefordert werden, geben Sie das Abonnement und die Region Ihrer Wahl an. Zum Beispiel:

    • Abonnement: Ihr Abonnement.
    • Region: (Europa) „Europa, Westen“

    Wenn die Bereitstellung abgeschlossen ist, sollte die folgende Ausgabe angezeigt werden:

     APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=...
    
     Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/.../resourceGroups/...
     
  3. Öffnen Sie den Ressourcengruppenlink auf einer Browserregisterkarte. Sie müssen diese Verbindungszeichenfolge später verwenden.

    Hinweis

    azd provision verwendet die enthaltenen Vorlagen, um die folgenden Azure-Ressourcen zu erstellen:

2. Erstellen einer Sidecar-fähigen App

  1. Wählen Sie auf der Verwaltungsseite der Ressourcengruppen die Option Erstellen aus.

  2. Suchen Sie nach Web-App, und wählen Sie dann den Pfeil nach unten neben Erstellen und anschließend Web-App aus.

    Screenshot: Azure Marketplace-Seite, auf der nach der Web-App gesucht und auf die Schaltfläche zum Erstellen der Web-App geklickt wird

  3. Konfigurieren Sie den Bereich Grundlagen wie folgt:

    • Name: Ein eindeutiger Name
    • Veröffentlichen: Container
    • Betriebssystem: Linux
    • Region: Dieselbe Region, die Sie auch für azd provision ausgewählt haben
    • Linux-Plan: Ein neuer App Service-Plan

    Screenshot: Assistent zum Erstellen von Web-Apps mit hervorgehobenen Einstellungen für eine benutzerdefinierte Linux-Container-App

  4. Wählen Sie Container aus. Konfigurieren Sie den Bereich Container wie folgt:

    • Sidecar-Unterstützung: Aktiviert
    • Imagequelle: Azure Container Registry
    • Registrierung: Die von azd provision erstellte Registrierung
    • Image: nginx
    • Tag: latest
    • Port: 80

    Screenshot: Assistent zum Erstellen von Web-Apps mit hervorgehobenen Einstellungen für das Containerimage und die Sidecar-Unterstützung

    Hinweis

    Diese Einstellungen werden in Sidecar-fähigen Apps unterschiedlich konfiguriert. Weitere Informationen finden Sie unter Unterschiede bei Sidecar-fähigen Apps.

  5. Klicken Sie auf Überprüfen + erstellen und dann auf Erstellen.

  6. Wählen Sie nach Abschluss der Bereitstellung die Option Zu Ressource wechseln aus.

  7. Navigieren Sie auf einer neuen Browserregisterkarte zu https://<app-name>.azurewebsites.net, und sehen Sie sich die Nginx-Standardseite an.

3. Hinzufügen eines Sidecar-Containers

In diesem Abschnitt fügen Sie Ihrer benutzerdefinierten Container-App einen Sidecar-Container hinzu.

  1. Wählen Sie auf der Verwaltungsseite der App im linken Menü Bereitstellungscenter aus.

    Im Bereitstellungscenter werden alle Container in der App angezeigt. Derzeit enthält sie nur den Hauptcontainer.

  2. Wählen Sie Hinzufügen aus, und konfigurieren Sie den neuen Container wie folgt:

    • Name: otel-collector
    • Imagequelle: Azure Container Registry
    • Registrierung: Die von azd provision erstellte Registrierung
    • Image: otel-collector
    • Tag: latest
  3. Wählen Sie Übernehmen.

    Screenshot: Konfigurieren eines Sidecar-Containers im Bereitstellungscenter einer Web-App

    Nun sollten zwei Container im Bereitstellungscenter angezeigt werden. Der Hauptcontainer ist durch Main und der Sidecar-Container durch Sidecar gekennzeichnet. Jede App muss über einen Hauptcontainer verfügen, kann jedoch mehrere Sidecar-Container umfassen.

4. Konfigurieren von Umgebungsvariablen

Für das Beispielszenario ist das Sidecar „otel-collector“ so konfiguriert, dass die OpenTelemetry-Daten nach Azure Monitor exportiert werden. Allerdings wird die Verbindungszeichenfolge als Umgebungsvariable benötigt wird (siehe die OpenTelemetry-Konfigurationsdatei für das otel-collector-Image).

Sie konfigurieren Umgebungsvariablen für die Container wie für jede App Service-App, indem Sie App-Einstellungen konfigurieren. Die App-Einstellungen sind für alle Container in der App zugänglich.

  1. Wählen Sie auf der Verwaltungsseite der App im linken Menü Umgebungsvariablen aus.

  2. Fügen Sie eine App-Einstellung hinzu, indem Sie Hinzufügen auswählen und sie wie folgt konfigurieren:

    • Name: APPLICATIONINSIGHTS_CONNECTION_STRING
    • Wert: die Verbindungszeichenfolge in der Ausgabe von azd provision. Wenn die Cloud Shell-Sitzung getrennt wird, finden Sie sie auch auf der Seite Übersicht der Application Insight-Ressource unter Verbindungszeichenfolge.
  3. Wählen Sie Übernehmen und dann Anwenden aus, und Bestätigen Sie.

    Screenshot: Konfigurationsseite einer Web-App mit zwei hinzugefügten App-Einstellungen

Hinweis

Bestimmte App-Einstellungen gelten nicht für Sidecar-fähige Apps. Weitere Informationen finden Sie unter Unterschiede bei Sidecar-fähigen Apps.

5. Überprüfen in Application Insights

Das Sidecar „otel-collector“ sollte jetzt Daten nach Application Insights exportieren.

  1. Navigieren Sie zurück zur Browserregisterkarte für https://<app-name>.azurewebsites.net, und aktualisieren Sie die Seite mehrmals, um einige Webanforderungen zu generieren.

  2. Wechseln Sie zurück zur Übersichtsseite der Ressourcengruppe, und wählen Sie dann die Application Insights-Ressource aus. Nun sollten einige Daten in den Standarddiagrammen angezeigt werden.

    Screenshot: Application Insights-Seite mit Daten in den Standarddiagrammen

Hinweis

In diesem sehr gängigen Überwachungsszenario ist Application Insights nur eins der OpenTelemetry-Ziele, die Sie verwenden können, z. B. Jaeger, Prometheus und Zipkin.

Bereinigen von Ressourcen

Wenn Sie die Umgebung nicht mehr benötigen, können Sie die Ressourcengruppe, den App-Dienst und alle zugehörigen Ressourcen löschen. Führen Sie einfach diesen Befehl in Cloud Shell im geklonten Repository aus:

azd down

Wie behandeln Sidecar-Container die interne Kommunikation?

Sidecar-Container teilen den gleichen Netzwerkhost wie der Hauptcontainer, sodass der Hauptcontainer (und andere Sidecar-Container) jeden Port im Sidecar-Container mit localhost:<port> erreichen kann. Genau so sendet der Nginx-Container Daten an das Sidecar (siehe die OpenTelemetry-Modulkonfiguration für das Nginx-Beispielimage).

Im Dialogfeld Container bearbeiten wird das Feld Port derzeit nicht von App Service verwendet. Sie können es als Teil der Sidecar-Metadaten verwenden, z. B. um anzugeben, an welchem Port der Sidecar-Container lauscht.

Unterschiede bei Sidecar-fähigen Apps

Sie konfigurieren Sidecar-fähige Apps anders als Apps, die nicht Sidecar-fähig sind. Insbesondere konfigurieren Sie den Hauptcontainer und Sidecars nicht mit App-Einstellungen, sondern direkt in den Ressourceneigenschaften. Die folgenden App-Einstellungen gelten nicht für Sidecar-fähige Apps:

  • Registrierungsauthentifizierungseinstellungen: DOCKER_REGISTRY_SERVER_URL, DOCKER_REGISTRY_SERVER_USERNAME und DOCKER_REGISTRY_SERVER_PASSWORD
  • Containerport: WEBSITES_PORT

Weitere Ressourcen