Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S'APPLIQUE À : Développeur | Premium
Cet article décrit les étapes à suivre pour déployer le composant de passerelle auto-hébergé de Gestion des API Azure sur Azure Container Apps.
Déployez une passerelle auto-hébergée sur une application conteneur pour accéder aux API hébergées dans le même environnement Azure Container Apps.
Prerequisites
Suivez le guide de démarrage rapide suivant : Créer une instance Gestion des API Azure.
Pour Azure CLI :
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour obtenir plus d’informations, consultez Démarrage d’Azure Cloud Shell.
Si vous préférez exécuter des commandes de référence CLI localement, installez Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Comment exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour terminer le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour obtenir d’autres options de connexion, consultez S’authentifier auprès d’Azure à l’aide d’Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser et gérer des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
Note
Les exemples de commandes Azure CLI de cet article nécessitent l’extension
containerappAzure CLI. Si vous n’avez pas utiliséaz containerappde commandes, l’extension est installée dynamiquement lorsque vous exécutez votre premièreaz containerappcommande. Apprenez-en davantage sur les extensions Azure CLI.
Provisionner une passerelle dans votre instance Gestion des API Azure
Avant de déployer une passerelle auto-hébergée, provisionnez une ressource de passerelle dans votre instance Gestion des API Azure. Pour connaître les étapes, consultez Provisionner une passerelle auto-hébergée. Dans les exemples de cet article, la passerelle est nommée my-gateway.
Obtenir les paramètres de déploiement de passerelle à partir de Gestion des API
Pour déployer la passerelle, vous avez besoin des valeurs de Jeton et de l'endpoint de configuration de la passerelle. Vous pouvez les trouver dans le portail Azure :
- Connectez-vous au portail Azure et accédez à votre instance Gestion des API Azure.
- Dans le menu de gauche, sous Déploiement + infrastructure, sélectionnez Passerelles auto-hébergées.
- Sélectionnez la ressource de passerelle que vous avez provisionnée, puis sélectionnez Paramètres>Déploiement.
- Copiez les valeurs du Jeton et du point de terminaison de configuration.
Déployer la passerelle auto-hébergée sur une application conteneur
Vous pouvez déployer l’image conteneur de passerelle auto-hébergée sur une application conteneur à l’aide du portail Azure, d’Azure CLI ou d’autres outils. Cet article décrit les étapes à suivre à l’aide d’Azure CLI.
Créer un environnement d’applications conteneur
Tout d’abord, créez un environnement d’applications conteneur à l’aide de la commande az containerapp env create :
#!/bin/bash
az containerapp env create --name my-environment --resource-group myResourceGroup \
--location centralus
Cette commande crée :
- Environnement d’application conteneur nommé
my-environmentque vous utilisez pour regrouper des applications conteneur. - Un espace de travail de Log Analytics
Créer une application conteneur pour la passerelle auto-hébergée
Pour déployer la passerelle auto-hébergée sur une application conteneur dans l’environnement, exécutez la commande az containerapp create .
Commencez par définir des variables pour les valeurs de Jeton et de point de terminaison de Configuration à partir de la ressource de passerelle de gestion des API Azure.
#!/bin/bash
endpoint="<API Management configuration endpoint>"
token="<API Management gateway token>"
Créez l’application conteneur à l’aide de la az containerapp create commande :
#!/bin/bash
az containerapp create --name my-gateway \
--resource-group myResourceGroup --environment 'my-environment' \
--image "mcr.microsoft.com/azure-api-management/gateway:2.9.2" \
--target-port 8080 --ingress external \
--min-replicas 1 --max-replicas 3 \
--env-vars "config.service.endpoint"="$endpoint" "config.service.auth"="$token" "net.server.http.forwarded.proto.enabled"="true"
Cette commande crée :
Application conteneur nommée
my-gatewaydans lemyResourceGroupgroupe de ressources. Dans cet exemple, l’application conteneur utilise l’imagemcr.microsoft.com/azure-api-management/gateway:2.9.2. Pour plus d'informations sur la passerelle auto-hébergée, consultez les images de conteneur.La prise en charge de l’entrée externe à l’application conteneur sur le port 8080.
Un nombre de répliques de l'application conteneur compris entre 1 et 3.
Connexion de la passerelle auto-hébergée à l’instance Gestion des API Azure en transmettant des valeurs de configuration dans des variables d’environnement. Pour plus d’informations, consultez les paramètres de configuration du conteneur de passerelle auto-hébergé.
Note
Azure Container Apps réachemine les requêtes HTTPS vers l'application conteneur de passerelle auto-hébergée sous forme de HTTP. Ici, la
net.server.http.forwarded.proto.enabledvariable d’environnement est définietruepour que la passerelle auto-hébergée utilise l’en-têteX-Forwarded-Protopour déterminer le protocole d’origine de la requête.
Vérifiez que l’application conteneur est en cours d’exécution
Connectez-vous au portail Azure et accédez à votre application conteneur.
Dans la page Vue d’ensemble de l’application conteneur, vérifiez que l’état est en cours d’exécution.
Envoyez une demande de test au point de terminaison d’état sur
/status-012345678990abcdef. Par exemple, utilisez unecurlcommande similaire à la commande suivante.curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdefUne requête réussie retourne une
200 OKréponse.
Conseil / Astuce
À l’aide de l’interface CLI, vous pouvez également exécuter la commande az containerapp show pour vérifier l’état de l’application conteneur.
Vérifiez que la passerelle est saine
Connectez-vous au portail Azure et accédez à votre instance Gestion des API Azure.
Dans le menu de gauche, sous Déploiement + infrastructure, sélectionnez Passerelles auto-hébergées.
Dans la page Vue d’ensemble , vérifiez l’état de votre passerelle. Si la passerelle est saine, elle signale des pulsations de passerelle régulières.
Exemple de scénario
L’exemple suivant montre comment utiliser la passerelle auto-hébergée pour accéder à une API hébergée dans une application conteneur dans le même environnement. Comme illustré dans le diagramme suivant, la passerelle auto-hébergée est accessible à partir d’Internet, tandis que l’API est accessible uniquement dans l’environnement des applications conteneur.
- Déployez une application conteneur hébergeant une API dans le même environnement que la passerelle auto-hébergée.
- Ajoutez l’API à votre instance Gestion des API Azure.
- Appelez l’API via la passerelle auto-hébergée.
Déployer une application conteneur hébergeant une API dans le même environnement que la passerelle auto-hébergée
Dans cet exemple, vous déployez un exemple d’API d’album de musique sur une application conteneur. Pour accéder à l’API ultérieurement à l’aide de la passerelle auto-hébergée, déployez l’API dans le même environnement que la passerelle auto-hébergée. Pour obtenir des instructions détaillées et des informations sur les ressources utilisées dans cet exemple, consultez Démarrage rapide : Générer et déployer à partir du code source local vers Azure Container Apps. Les étapes abrégées sont les suivantes :
Téléchargez le code source Python sur votre ordinateur local. Si vous préférez, téléchargez le code source dans une autre langue de votre choix.
Extrayez le code source dans un dossier local et passez au dossier containerapps-albumapi-python-main/src .
Exécutez la commande az containerapp up suivante pour déployer l’API sur une application conteneur dans le même environnement que la passerelle auto-hébergée. Notez la
.fin de la commande, qui spécifie le dossier actif comme source de l’application conteneur.#!/bin/bash az containerapp up --name albums-api \ --resource-group myResourceGroup --location centralus \ --environment my-environment --source .Vérifiez que l’application conteneur est en cours d’exécution et accessible en externe sur le nom de domaine complet retourné dans la sortie de commande. Par défaut, l’API est accessible au point de terminaison
/albums. Exemple :https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums.
Configurer l’API pour l’entrée interne
À présent, mettez à jour l’application conteneur hébergeant l’exemple d’API pour activer l’entrée uniquement dans l’environnement de conteneur. Ce paramètre limite l’accès à l’API uniquement à partir de la passerelle auto-hébergée que vous avez déployée.
- Connectez-vous au portail Azure et accédez à votre application conteneur.
- Dans le menu de gauche, sélectionnez Networking>Ingress.
- Définissez Ingress sur Activé.
- Dans le trafic d’entrée, sélectionnez Limité à l’environnement Container Apps.
- Passez en revue les paramètres restants, puis sélectionnez Enregistrer.
Ajouter l’API à votre instance Gestion des API Azure
Les étapes suivantes montrent comment ajouter une API à votre instance Gestion des API Azure et configurer un back-end d’API. Pour plus d’informations, consultez Ajouter une API à Gestion des API Azure.
Ajouter l’API à votre instance Gestion des API
- Dans le portail Azure, accédez à l’instance Gestion des API où vous avez configuré la passerelle auto-hébergée.
- Dans le menu de gauche, sélectionnez API>API>+ Ajouter une API.
- Sélectionnez HTTP et sélectionnez Full. Entrez les paramètres suivants :
- Nom d'affichage : entrez un nom descriptif approprié. Exemple : API Albums.
-
URL du service web : entrez le nom de domaine complet interne de l’application conteneur hébergeant l’API. Exemple :
http://albums-api.internal.happyvalley-abcd1234.centralus.azurecontainerapps.io. - Schéma d’URL : sélectionnez HTTP(S).
- Suffixe d’URL de l’API : entrez un suffixe de votre choix. Exemple : albumapi.
- Passerelles : sélectionnez la passerelle auto-hébergée que vous avez provisionnée. Exemple : my-gateway.
- Configurez d’autres paramètres d’API en fonction de votre scénario. Cliquez sur Créer.
Ajouter une opération d’API
- Dans le menu de gauche, sélectionnez APIs>API des albums.
- Sélectionnez + Ajouter une opération.
- Entrez les paramètres d’opération :
- Nom d'affichage: Entrez un nom descriptif pour l’opération. Exemple : Obtenir des albums.
-
URL : sélectionnez Obtenir et entrer
/albumspour le point de terminaison. - Cliquez sur Enregistrer.
Appeler l’API via la passerelle auto-hébergée
Appelez l’API à l’aide du nom de domaine complet de la passerelle auto-hébergée s’exécutant dans l’application conteneur. Recherchez le nom de domaine complet dans la page Vue d’ensemble de l’application conteneur dans le portail Azure ou exécutez la commande suivante az containerapp show .
#!/bin/bash
az containerapp show --name my-gateway --resource-group myResourceGroup \
--query "properties.configuration.ingress.fqdn" --output tsv
Par exemple, exécutez la commande suivante curl pour appeler l’API au niveau du /albumapi/albums point de terminaison. Si votre API nécessite une clé d’abonnement, transmettez une clé d’abonnement valide pour votre instance Gestion des API en tant qu’en-tête dans la demande :
curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/albumapi/albums -H "Ocp-Apim-Subscription-Key: <subscription-key>"
Lorsque le test réussit, le backend répond avec un code de réponse HTTP réussi et quelques données.
HTTP/1.1 200 OK
content-length: 751
content-type: application/json
date: Wed, 28 Feb 2024 22:45:09 GMT
[...]
[{"id":1,"title":"You, Me and an App Id","artist":"Daprize","price":10.99,"image_url":"https://aka.ms/albums-daprlogo"},{"id":2,"title":"Seven Revision Army","artist":"The Blue-Green Stripes","price":13.99,"image_url":"https://aka.ms/albums-containerappslogo"},{"id":3,"title":"Scale It Up","artist":"KEDA Club","price":13.99,"image_url":"https://aka.ms/albums-kedalogo"},{"id":4,"title":"Lost in Translation","artist":"MegaDNS","price":12.99,"image_url":"https://aka.ms/albums-envoylogo"},{"id":5,"title":"Lock Down Your Love","artist":"V is for VNET","price":12.99,"image_url":"https://aka.ms/albums-vnetlogo"},{"id":6,"title":"Sweet Container O' Mine","artist":"Guns N Probeses","price":14.99,"image_url":"https://aka.ms/albums-containerappslogo"}]
Conseil / Astuce
Si vous activez la journalisation de votre API vers Application Insights, vous pouvez interroger les journaux pour afficher les demandes et les réponses.
Limites
Les instances de passerelle auto-hébergées s’appuient sur le protocole UDP pour les communications de pulsation et de limite de débit. Étant donné qu’Azure Container Apps ne prend actuellement pas en charge le protocole UDP, ni pour l’entrée ni pour le trafic interne, la rate-limit stratégie ne peut pas synchroniser son compteur entre les instances. Par conséquent, l'utilisation de trois réplicas d’une application conteneur de passerelle auto-hébergée avec une limite X peut générer un trafic trois fois supérieur jusqu’à ce que la limite X soit atteinte.
Azure Container Apps distribue les requêtes de façon linéaire sur chaque réplica disponible et en bon état. Pour implémenter la limitation de débit, vous pouvez diviser la limite souhaitée par le nombre de réplicas que vous souhaitez exécuter et définir la valeur résultante dans la configuration. Cette approche présente ses propres inconvénients, car vous ne pourrez peut-être pas tenir compte des compteurs recalibrés le cas échéant, lorsque vos applications conteneur sont mises à l’échelle.