Partager via


Tutoriel : Configurer un conteneur sidecar pour un conteneur personnalisé dans Azure App Service

Dans ce tutoriel, vous ajoutez le collecteur OpenTelemetry comme conteneur sidecar à une application conteneur personnalisée Linux dans Azure App Service. Pour les applications Linux « apportez votre propre code », consultez Tutoriel : Configurer un conteneur sidecar pour une application Linux dans Azure App Service.

Si vous ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.

Qu’est-ce qu’un conteneur « sidecar » ?

Dans Azure App Service, vous pouvez ajouter jusqu’à neuf conteneurs side-car pour chaque application Linux. Les conteneurs sidecar vous permettent de déployer des services et fonctionnalités supplémentaires sur vos applications Linux sans les rendre étroitement couplés au conteneur principal (intégré ou personnalisé). Par exemple, vous pouvez ajouter des services de surveillance, de journalisation, de configuration et de mise en réseau en tant que conteneurs sidecar. Un sidecar collecteur OpenTelemetry serait par exemple utilisé pour la surveillance.

Les conteneurs sidecar s’exécutent en même temps que le conteneur d’application principal dans le même plan App Service.

1. Configuration des ressources nécessaires

Vous commencez par créer les ressources utilisées par le tutoriel. Elles sont utilisées pour ce scénario spécifique et ne sont pas nécessaires pour les conteneurs sidecar en général.

  1. Dans Azure Cloud Shell, exécutez les commandes suivantes :

    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. Quand vous y êtes invité, fournissez l’abonnement et la région de votre choix. Par exemple :

    • Abonnement : votre abonnement.
    • Région : (Europe) Europe Ouest.

    Une fois le déploiement terminé, la sortie suivante doit s’afficher :

     APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=...
    
     Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/.../resourceGroups/...
     
  3. Ouvrez le lien du groupe de ressources dans un onglet de navigateur. Vous devrez utiliser la chaîne de connexion ultérieurement.

    Remarque

    azd provision utilise les modèles inclus pour créer les ressources Azure suivantes :

2. Création d’une application compatible avec sidecar

  1. Dans la page de gestion du groupe de ressources, sélectionnez Créer.

  2. Recherchez l’application web, sélectionnez la flèche vers le bas dans Créer, puis Application web.

    Capture d’écran montrant la page Place de marché Azure avec l’application web recherchée et créer des boutons d’application web cliqués.

  3. Configurez le panneau De base comme suit :

    • Nom : nom unique
    • Publier : Conteneur
    • Système d’exploitation : Linux
    • Région : même région que celle que vous avez choisie pour azd provision
    • Plan Linux : un nouveau plan App Service

    Capture d’écran montrant l’Assistant Création d’application web et les paramètres d’une application conteneur personnalisée Linux mis en surbrillance.

  4. Sélectionnez Conteneur. Configurez le panneau Conteneur comme suit :

    • Prise en charge de sidecar : Activée
    • Source d’image : Azure Container Registry
    • Registre : Registre créé par azd provision
    • Image : nginx
    • Balise : la plus récente
    • Port : 80

    Capture d’écran montrant l’Assistant Création d’application web et les paramètres de l’image conteneur et la prise en charge de sidecar mis en surbrillance.

    Remarque

    Ces paramètres sont configurés d’une autre manière dans les applications compatibles avec sidecar. Pour plus d’informations, consultez Quelles sont les différences entre les conteneurs personnalisés avec sidecar ?.

  5. Sélectionnez Vérifier + créer, puis sélectionnez Créer.

  6. Une fois le déploiement terminé, sélectionnez Accéder à la ressource.

  7. Dans un nouvel onglet de navigateur, accédez à https://<app-name>.azurewebsites.net, puis consultez la page Nginx par défaut.

3. Ajout d’un conteneur sidecar

Dans cette section, vous ajouterez un conteneur sidecar à votre application conteneur personnalisée.

  1. Dans la page de gestion de l’application, dans le menu de gauche, sélectionnez Centre de déploiement.

    Le Centre de déploiement affiche tous les conteneurs de l’application. À l’heure actuelle, il ne contient que le conteneur principal.

  2. Sélectionnez Ajouter et configurez le nouveau conteneur comme suit :

    • Nom : otel-collector
    • Source d’image : Azure Container Registry
    • Registre : Registre créé par azd provision
    • Image : otel-collector
    • Balise : la plus récente
  3. Sélectionnez Appliquer.

    Capture d’écran montrant comment configurer un conteneur sidecar dans le Centre de déploiement d’une application web.

    Le Centre de déploiement doit maintenant contenir deux conteneurs. Le conteneur principal est marqué Main (Principal), et le conteneur sidecar est marqué Sidecar. Chaque application doit avoir un conteneur principal, mais peut avoir plusieurs conteneurs sidecar.

4. Configuration des variables d’environnement

Pour l’exemple de scénario, le sidecar otel-collector est configuré pour exporter les données OpenTelemetry vers Azure Monitor, mais il a besoin de la chaîne de connexion comme variable d’environnement (consultez le fichier de configuration OpenTelemetry pour l’image otel-collector).

Vous configurez des variables d’environnement pour les conteneurs comme n’importe quelle application App Service, en configurant les paramètres d’application. La totalité des conteneurs de l’application peuvent accéder aux paramètres d’application.

  1. Dans la page de gestion de l’application, dans le menu de gauche, sélectionnez Variables d’environnement.

  2. Ajoutez un paramètre d’application en sélectionnant Ajouter et configurez-le de la façon suivante :

    • Nom : APPLICATIONINSIGHTS_CONNECTION_STRING
    • Valeur : chaîne de connexion dans la sortie de azd provision. Si vous avez perdu la session Cloud Shell, vous pouvez également la trouver dans la page Vue d’ensemble de la ressource Application Insight, sous Chaîne de connexion.
  3. Sélectionnez Appliquer, puis Appliquer, puis Confirmer.

    Capture d’écran montrant la page Configuration d’une application web avec deux paramètres d’application ajoutés.

Remarque

Certains paramètres d’application ne s’appliquent pas aux applications compatibles avec sidecar. Pour plus d’informations, consultez Quelles sont les différences entre les conteneurs personnalisés avec sidecar ?

5. Vérification dans Application Insights

Le sidecar otel-collector doit maintenant exporter des données vers Application Insights.

  1. De retour dans l’onglet de navigateur pour https://<app-name>.azurewebsites.net, actualisez la page quelques fois pour générer certaines requêtes web.

  2. Revenez à la page de présentation du groupe de ressources, puis sélectionnez la ressource Application Insights. Désormais, des données doivent apparaître dans les graphiques par défaut.

    Capture d’écran de la page Application Insights montrant les données présentes dans les graphiques par défaut.

Remarque

Dans ce scénario de surveillance très courant, Application Insights n’est qu’une des cibles OpenTelemetry que vous pouvez utiliser, telles que Jaeger, Prometheus et Zipkin.

Nettoyer les ressources

Lorsque vous n’avez plus besoin de l’environnement, vous pouvez supprimer le groupe de ressources, App Service et toutes les ressources associées. Exécutez simplement cette commande dans Cloud Shell, dans le référentiel cloné :

azd down

Questions fréquentes

Quelles sont les différences pour les conteneurs personnalisés avec sidecar ?

Les applications compatibles avec sidecar ne se configurent pas de la même manière que les applications non compatibles avec sidecar.

Non compatible avec sidecar

  • Le nom et les types de conteneur sont configurés directement avec LinuxFxVersion=DOCKER|<image-details> (voir az webapp config set --linux-fx-version).
  • Le conteneur principal est configuré avec les paramètres d’application, tels que :
    • DOCKER_REGISTRY_SERVER_URL
    • DOCKER_REGISTRY_SERVER_USERNAME
    • DOCKER_REGISTRY_SERVER_PASSWORD
    • WEBSITES_PORT

Compatible avec sidecar

  • Une application compatible avec sidecar est désignée par LinuxFxVersion=sitecontainers (consultez az webapp config set --linux-fx-version).
  • Le conteneur principal est configuré avec une ressource sitecontainers . Ces paramètres ne s’appliquent pas aux applications compatibles avec sidecar
    • DOCKER_REGISTRY_SERVER_URL
    • DOCKER_REGISTRY_SERVER_USERNAME
    • DOCKER_REGISTRY_SERVER_PASSWORD
    • WEBSITES_PORT

Comment les conteneurs sidecar gèrent-ils la communication interne ?

Les conteneurs sidecar partagent le même hôte de réseau que le conteneur principal, de sorte que le conteneur principal (et les autres conteneurs sidecar) peuvent accéder à n'importe quel port du sidecar avec localhost:<port>. L'exemple startup.sh utilise localhost:4318 pour accéder au port 4318 sur le sidecar otel-collector.

Dans la boîte de dialogue Modifier le conteneur, la zone Port n’est actuellement pas utilisée par App Service. Vous pouvez l’utiliser dans le cadre des métadonnées du sidecar, par exemple pour indiquer le port sur lequel le sidecar écoute.

Un conteneur side-car peut-il recevoir des requêtes Internet ?

Non. App Service route les requêtes Internet uniquement vers le conteneur principal. Pour les applications Linux basées sur du code, le conteneur Linux intégré est le conteneur principal et tout conteneur sidecar (sitecontainers) doit être ajouté avec IsMain=false. Pour les conteneurs personnalisés, tous mais l’un des sitescontainers doit avoir IsMain=false.

Pour plus d’informations sur la configuration de IsMain, consultez Microsoft.Web sites/sitecontainers.

Comment utiliser les montages de volume ?

La fonctionnalité montage de volume vous permet de partager des fichiers et répertoires non persistants entre des conteneurs au sein de votre application web.

Capture d’écran illustrant la configuration d’un montage de volume pour un conteneur sidecar.

Sous-chemin d’accès du volume : Il s’agit d’un chemin d’accès de répertoire logique créé automatiquement et qui n’est pas référencé dans le conteneur. Les conteneurs configurés avec le même chemin d’accès de volume peuvent partager des fichiers et des répertoires entre eux.

Chemin de montage de conteneur : Cela correspond à un chemin d’accès de répertoire que vous référencez dans le conteneur. Le chemin de montage du conteneur est associé au sous-chemin du volume.

Par exemple, supposons que les montages de volume suivants soient configurés :

Nom du sidecar Sous-chemin d’accès du volume Chemin de montage du conteneur Lecture seule
Conteneur1 /directory1/directory2 /container1Vol Faux
Container2 /directory1/directory2 /container2Vol Vrai
Conteneur3 /directory1/directory2/directory3 /container3Vol Faux
Conteneur4 /directory4 /container1Vol Faux

En fonction de ces paramètres, les conditions suivantes s’appliquent :

  • Si Container1 crée /container1Vol/myfile.txt, Container2 peut lire le fichier via /container2Vol/myfile.txt.
  • Si Container1 crée /container1Vol/directory3/myfile.txt, Container2 peut lire le fichier via /container2Vol/directory3/myfile.txt, et Container3 peut lire et écrire dans le fichier via /container3Vol/myfile.txt.
  • Container4 ne partage pas de montage de volume avec les autres conteneurs.

Remarque

Pour les applications Linux basées sur du code, le conteneur Linux intégré ne peut pas utiliser de montages de volumes.

Plus de ressources