Déployer une passerelle auto-hébergée de la Gestion des API Azure sur Azure Container Apps
S’APPLIQUE À : Développeur | Premium
Cet article explique comment déployer la passerelle auto-hébergée, composant de la 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.
Prérequis
Suivez ce guide de démarrage rapide : Créer une instance du service Gestion des API Azure.
Pour Azure CLI :
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface 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 Guide pratique pour 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 finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec 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 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.
Remarque
Les exemples de commandes Azure CLI fournis dans cet article nécessitent l’extension Azure CLI
containerapp
. Si vous n’avez pas utilisé de commandesaz containerapp
, l’extension est installée dynamiquement quand vous exécutez votre première commandeaz containerapp
. Apprenez-en davantage sur les extensions Azure CLI.
Approvisionner une passerelle dans votre instance Gestion des API
Avant de déployer une passerelle auto-hébergée, approvisionnez une ressource de passerelle dans votre instance Gestion des API Azure. Pour obtenir les étapes à suivre, consultez Approvisionner 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 la passerelle à partir de la Gestion des API
Pour déployer la passerelle, vous avez besoin des valeurs Jeton et Point de terminaison de configuration de la passerelle. Celles-ci se trouvent dans le portail Azure :
- Connectez-vous au portail Azure et accédez à votre instance de Gestion des API.
- Dans le menu de gauche, sous Déploiement et infrastructure, sélectionnez Passerelles.
- Sélectionnez la ressource de passerelle que vous avez approvisionnée, puis sélectionnez Déploiement.
- Copiez les valeurs Jeton et 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 la passerelle auto-hébergée sur une application conteneur en utilisant le portail Azure, l’interface Azure CLI ou d’autres outils. Cet article décrit les étapes à suivre avec Azure CLI.
Créer un environnement d’applications conteneur
Pour commencer, 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 :
- Un environnement d’applications conteneur nommé
my-environment
vous permettant de regrouper des applications conteneur. - Un espace de travail 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 containersapp create.
Commencez par définir des variables pour les valeurs Jeton et Point de terminaison de configuration à partir de la ressource de passerelle Gestion des API.
#!/bin/bash
endpoint="<API Management configuration endpoint>"
token="<API Management gateway token>"
Créez l’application conteneur à l’aide de la commande az containerapp create
:
#!/bin/bash
az containerapp create --name my-gateway \
--resource-group myResourceGroup --environment 'my-environment' \
--image "mcr.microsoft.com/azure-api-management/gateway:2.5.0" \
--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 :
Une application conteneur nommée
my-gateway
dans le groupe de ressourcesmyResourceGroup
. Dans cet exemple, l’application conteneur est créée à l’aide de l’imagemcr.microsoft.com/azure-api-management/gateway:2.5.0
. Apprenez-en davantage sur les images conteneur de passerelle auto-hébergée.La prise en charge de l’entrée externe à l’application conteneur sur le port 8080.
Au moins 1 réplica de l’application conteneur, mais pas plus de 3.
Une connexion de la passerelle auto-hébergée à l’instance Gestion des API en utilisant les valeurs de configuration passées dans les variables d’environnement. Pour plus de détails, consultez les paramètres de configuration du conteneur de la passerelle auto-hébergée.
Remarque
L’entrée Azure Container Apps transfère les requêtes HTTPS à l’application conteneur de passerelle auto-hébergée au format HTTP. Ici, la variable d’environnement
net.server.http.forwarded.proto.enabled
est définie surtrue
afin que la passerelle auto-hébergée utilise l’en-têteX-Forwarded-Proto
pour déterminer le protocole d’origine de la requête.
Confirmer 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 une commandecurl
similaire à ce qui suit.curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdef
Une requête réussie retourne une réponse
200 OK
.
Conseil
À 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.
Confirmer que la passerelle est saine
Connectez-vous au portail Azure et accédez à votre instance de Gestion des API.
Dans le menu de gauche, sous Déploiement et infrastructure, sélectionnez Passerelles.
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 le montre le diagramme suivant, la passerelle auto-hébergée est accessible à partir d’Internet, tandis que l’API n’est accessible que dans l’environnement des applications conteneur.
- Déployer une application conteneur hébergeant une API dans le même environnement que la passerelle auto-hébergée
- Ajouter l’API à votre instance Gestion des API
- Appeler 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
Par exemple, déployez un exemple d’API d’albums de musique sur une application conteneur. Pour accéder par la suite à l’API à 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 d’une source locale sur Azure Container Apps. Voici un résumé des étapes :
Téléchargez le code source Python sur votre ordinateur local. Vous pouvez également télécharger le code source dans un autre langage.
Extrayez le code source dans un dossier local et passez au dossier containerapps-albumapi-python-main/src.
Exécutez la commande az containersapp up suivante pour déployer l’API sur une application conteneur dans le même environnement que la passerelle auto-hébergée. Notez le
.
à la fin de la commande pour spécifier le dossier actuel comme source de l’application conteneur.#!/bin/bash az containerapp up --name albums-api \ --resource-group myResourceGroup --location centralus \ --environment my-environment --source .
Confirmez que l’application conteneur est en cours d’exécution et accessible en externe au niveau du nom de domaine complet retourné dans la sortie de commande. Par défaut, l’API est accessible au niveau du 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 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 Entrée.
- Définissez Entrée sur Activée.
- Dans 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
Voici des exemples d’étapes pour ajouter une API à votre instance Gestion des API et configurer un back-end d’API. Pour plus d’informations, consultez Ajouter une API à la Gestion des API Azure.
Ajouter l’API à votre instance Gestion des API
- Dans le portail, accédez à l’instance Gestion des API où vous avez configuré la passerelle auto-hébergée.
- Dans le menu de gauche, cliquez sur API>+Ajouter une API.
- Sélectionnez HTTP, puis Complet. Entrez les paramètres suivants :
- Nom d’affichage : entrez un nom descriptif. Exemple : Albums API.
- 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
. - Modèle d’URL : sélectionnez HTTP(S).
- Suffixe de l’URL de l’API : entrez le suffixe de votre choix. Exemple : albumapi.
- Passerelles : sélectionnez la passerelle auto-hébergée que vous avez approvisionnée. Exemple : my-gateway.
- Configurez d’autres paramètres d’API en fonction de votre scénario. Sélectionnez Créer.
Ajouter une opération d’API
- Dans le menu de gauche, sélectionnez API>Albums API.
- Sélectionnez + Ajouter une opération.
- Entrez les paramètres de l’opération :
- Nom d’affichage : entrez un nom descriptif pour l’opération. Exemple : Get albums.
- URL : sélectionnez Obtenir, puis entrez
/albums
pour le point de terminaison. - Sélectionnez 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 az containerapp show
suivante.
#!/bin/bash
az containerapp show --name my-gateway --resource-group myResourceGroup \
--query "properties.configuration.ingress.fqdn" --output tsv
Par exemple, exécutez la commande curl
suivante pour appeler l’API au niveau du point de terminaison /albumapi/albums
. Si votre API nécessite une clé d’abonnement, passez une clé d’abonnement valide pour votre instance Gestion des API comme en-tête dans la requête :
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
Si vous avez activé la journalisation de votre API dans Application Insights, vous pouvez interroger les journaux pour voir les requêtes et les réponses.