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 :

    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 commandes az containerapp, l’extension est installée dynamiquement quand vous exécutez votre première commande az 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 :

  1. Connectez-vous au portail Azure et accédez à votre instance de Gestion des API.
  2. Dans le menu de gauche, sous Déploiement et infrastructure, sélectionnez Passerelles.
  3. Sélectionnez la ressource de passerelle que vous avez approvisionnée, puis sélectionnez Déploiement.
  4. 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 ressources myResourceGroup. Dans cet exemple, l’application conteneur est créée à l’aide de l’image mcr.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 sur true afin que la passerelle auto-hébergée utilise l’en-tête X-Forwarded-Proto pour déterminer le protocole d’origine de la requête.

Confirmer que l’application conteneur est en cours d’exécution

  1. Connectez-vous au portail Azure et accédez à votre application conteneur.

  2. Dans la page Vue d’ensemble de l’application conteneur, vérifiez que l’État est En cours d’exécution.

  3. Envoyez une demande de test au point de terminaison d’état sur /status-012345678990abcdef. Par exemple, utilisez une commande curl 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

  1. Connectez-vous au portail Azure et accédez à votre instance de Gestion des API.

  2. Dans le menu de gauche, sous Déploiement et infrastructure, sélectionnez Passerelles.

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

    Capture d’écran de l’état de la passerelle dans le portail.

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.

Diagramme de l’exemple de scénario avec une passerelle auto-hébergée.

  1. Déployer une application conteneur hébergeant une API dans le même environnement que la passerelle auto-hébergée
  2. Ajouter l’API à votre instance Gestion des API
  3. 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 :

  1. Téléchargez le code source Python sur votre ordinateur local. Vous pouvez également télécharger le code source dans un autre langage.

  2. Extrayez le code source dans un dossier local et passez au dossier containerapps-albumapi-python-main/src.

  3. 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 .
    
  4. 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.

  1. Connectez-vous au portail Azure et accédez à votre application conteneur.
  2. Dans le menu de gauche, sélectionnez Entrée.
  3. Définissez Entrée sur Activée.
  4. Dans Trafic d’entrée, sélectionnez Limité à l’environnement Container Apps.
  5. 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

  1. Dans le portail, accédez à l’instance Gestion des API où vous avez configuré la passerelle auto-hébergée.
  2. Dans le menu de gauche, cliquez sur API>+Ajouter une API.
  3. Sélectionnez HTTP, puis Complet. Entrez les paramètres suivants :
    1. Nom d’affichage : entrez un nom descriptif. Exemple : Albums API.
    2. 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.
    3. Modèle d’URL : sélectionnez HTTP(S).
    4. Suffixe de l’URL de l’API : entrez le suffixe de votre choix. Exemple : albumapi.
    5. Passerelles : sélectionnez la passerelle auto-hébergée que vous avez approvisionnée. Exemple : my-gateway.
  4. Configurez d’autres paramètres d’API en fonction de votre scénario. Sélectionnez Créer.

Ajouter une opération d’API

  1. Dans le menu de gauche, sélectionnez API>Albums API.
  2. Sélectionnez + Ajouter une opération.
  3. Entrez les paramètres de l’opération :
    1. Nom d’affichage : entrez un nom descriptif pour l’opération. Exemple : Get albums.
    2. URL : sélectionnez Obtenir, puis entrez /albums pour le point de terminaison.
    3. 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.