Didacticiel : Configurer un conteneur sidecar pour un conteneur personnalisé dans Azure App Service (préversion)

Dans ce didacticiel, vous ajouterez le collecteur OpenTelemetry en tant que conteneur sidecar à une application conteneur personnalisée Linux dans Azure App Service.

Dans Azure App Service, vous pouvez ajouter jusqu’à 4 conteneurs sidecar pour chaque application conteneur personnalisée compatible avec sidecar. Les conteneurs sidecar vous permettent de déployer des services et fonctionnalités supplémentaires sur votre application conteneur sans qu’ils soient étroitement couplés à votre conteneur d’application principal. 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.

Pour plus d’informations sur les sidecars, consultez Modèle Sidecar.

Remarque

Pour la période de préversion, la prise en charge des sidecars doit être activée lors de la création de l’application. Il n’existe actuellement aucun moyen d’activer la prise en charge de sidecar pour une application existante.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

1. Configuration des ressources nécessaires

Tout d’abord, vous créerez les ressources utilisées par le didacticiel (pour plus d’informations, consultez Vue d’ensemble de Cloud Shell). 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 provision
    
  2. Lorsque vous y êtes invité, indiquez le nom de l’environnement, l’abonnement et la région souhaités. Par exemple :

    • Nom de l’environnement : my-sidecar-env
    • 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 Différences pour les applications compatibles 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
    • Port : 4317

    Le port 4317 est le port par défaut utilisé par l’exemple de conteneur pour recevoir des données OpenTelemetry. Il est accessible à partir de n’importe quel autre conteneur dans l’application à l’adresse localhost:4317. Il s’agit exactement de la façon dont le conteneur Nginx envoie des données au sidecar (consultez la configuration du module OpenTelemetry pour l’exemple d’image Nginx).

  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 Configuration.

  2. Ajoutez un paramètre d’application en sélectionnant Nouveau paramètre d’application et configurez-le comme suit :

    • Nom : APPLICATIONINSIGHTS_CONNECTION_STRING
    • Valeur : chaîne de connexion dans la sortie de azd provision
  3. Sélectionnez Enregistrer, puis Continuer.

    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 Différences pour les applications compatibles 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 Vue d’ensemble du groupe de ressources, 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

Différences pour les applications compatibles avec sidecar

Les applications compatibles avec sidecar ne se configurent pas de la même manière que les applications non compatibles avec sidecar. Plus précisément, le conteneur principal et les conteneurs sidecar ne se configurent pas dans les paramètres d’application, mais directement dans les propriétés des ressources. Ces paramètres d’application ne s’appliquent pas aux applications compatibles avec sidecar :

  • Paramètres d’authentification du registre : DOCKER_REGISTRY_SERVER_URL, DOCKER_REGISTRY_SERVER_USERNAME et DOCKER_REGISTRY_SERVER_PASSWORD.
  • Port du conteneur : WEBSITES_PORT

Plus de ressources