Déployer le backend de l'API

Cette page explique comment déployer le code du backend de l'API et Extensible Service Proxy (ESP) vers Google Kubernetes Engine et Compute Engine.

Même si les étapes de déploiement varient en fonction de la plate-forme qui héberge l'API, vous devez toujours indiquer à ESP le nom de service et une option lui permettant d'utiliser la dernière configuration de service Cloud Endpoints déployée. À l'aide de ces informations, ESP peut obtenir la configuration Endpoints de l'API et servir de proxy pour les requêtes et les réponses, afin que Cloud Endpoints puisse gérer l'API.

Prérequis

Pour commencer, cette page suppose que vous avez :

Préparer le déploiement

Compute Engine

Pour que Cloud Endpoints gère l'API, vous devez installer et configurer ESP, ainsi que le code du serveur backend pour l'API. Vous devez installer Docker sur votre instance de VM Compute Engine pour pouvoir exécuter l'image ESP Docker, disponible gratuitement dans Google Container Registry.

Avant le déploiement

Pour pouvoir déployer l'API et ESP sur Compute Engine, procédez comme suit :

  1. Créez, configurez et démarrez votre instance de VM.
  2. Installez Docker Enterprise Edition (EE) ou Docker Community Edition (CE) sur votre instance de VM.
  3. Créez un conteneur Docker pour le code du serveur backend.
  4. Transférez le conteneur dans Google Container Registry ou dans un autre registre.
  5. Assurez-vous que vous pouvez :

GKE

Lorsque vous créez un cluster dans la console Google Cloud, les champs d'application OAuth accordés au compte de service du cluster incluent par défaut les champs d'application requis par Endpoints :

  • Service Control : activé
  • Service Management : lecture seule

Lorsque vous créez un cluster à l'aide de la commande gcloud container clusters create ou d'un fichier de configuration tiers, veillez à spécifier les champs d'application suivants :

  • "https://www.googleapis.com/auth/servicecontrol"
  • "https://www.googleapis.com/auth/service.management.readonly"

Pour plus d'informations, consultez la section Que sont les champs d'application d'accès ?

Avant le déploiement

En ajoutant une petite section au fichier manifeste de déploiement, vous pouvez exécuter l'image ESP Docker sur les clusters de conteneurs avec votre application conteneurisée. Pour pouvoir déployer votre API et ESP sur GKE, effectuez les actions suivantes :

  1. Déployez votre application conteneurisée sur les clusters de conteneurs. Les étapes générales décrites dans la documentation de GKE sont les suivantes :

    1. Empaquetez l'application dans une image Docker.
    2. Importez l'image dans un registre.
    3. Créez un cluster de conteneurs.
    4. Déployez votre application sur le cluster.
    5. Exposez votre application sur Internet.
  2. Assurez-vous que vous pouvez :

    • Démarrer le serveur de l'API.
    • Envoyer des requêtes à l'API.

Déployer l'API et ESP

Compute Engine

Pour déployer l'API et ESP sur Compute Engine avec Docker, procédez comme suit :

  1. Connectez-vous à l'instance de VM. Remplacez INSTANCE_NAME par le nom de l'instance de VM :

    gcloud compute ssh INSTANCE_NAME
    
  2. Créez votre propre réseau de conteneurs appelé esp_net :

    sudo docker network create --driver bridge esp_net
    
  3. Exécutez une instance de l'image du code de serveur backend et connectez-la au réseau de conteneurs esp_net :

    sudo docker run \
        --detach \
        --name=YOUR_API_CONTAINER_NAME \
        --net=esp_net \
        gcr.io/YOUR_PROJECT_ID/YOUR_IMAGE:1
    
    • Remplacez YOUR_API_CONTAINER_NAME par le nom du conteneur.
    • Remplacez YOUR_PROJECT_ID par l'ID du projet Google Cloud que vous avez utilisé lors du stockage de l'image.
    • Remplacez YOUR_IMAGE par le nom de l'image.
  4. Obtenez le nom de service de l'API. Il s'agit du nom que vous avez spécifié dans le champ name du fichier YAML de configuration de service.

  5. Exécutez une instance de l'image ESP Docker :

    sudo docker run \
        --detach \
        --name=esp \
        --publish=80:9000 \
        --net=esp_net \
        gcr.io/endpoints-release/endpoints-runtime:1 \
        --service=SERVICE_NAME \
        --rollout_strategy=managed \
        --http2_port=9000 \
        --backend=grpc://YOUR_API_CONTAINER_NAME:8000
    
    • Remplacez SERVICE_NAME par le nom du service.
    • Remplacez YOUR_API_CONTAINER_NAME par le nom du conteneur de l'API.

    L'option --rollout_strategy=managed configure ESP pour qu'il utilise la dernière configuration de service déployée. Si cette option est spécifiée, jusqu'à 5 minutes après le déploiement d'une nouvelle configuration de service, ESP détecte la modification et commence à l'utiliser automatiquement. Nous vous recommandons de spécifier cette option plutôt qu'un ID de configuration spécifique à utiliser par ESP.

Pour indiquer à ESP d'utiliser un ID de configuration spécifique, procédez comme suit :

  1. Incluez l'option --version et définissez-la sur un ID de configuration spécifique.

  2. Supprimez l'option --rollout_strategy=managed ou définissez --rollout_strategy sur fixed. L'option fixed indique à ESP d'utiliser la configuration de service que vous avez spécifiée dans --version.

  3. Exécutez à nouveau la commande docker run.

Si vous spécifiez à la fois l'option --rollout_strategy=managed et l'option --version, ESP démarre avec la configuration que vous avez spécifiée dans --version, mais il s'exécute ensuite en mode géré et obtient la dernière configuration.

Nous vous recommandons de ne pas conserver trop longtemps la configuration d'ESP utilisant un ID de configuration spécifique, car si vous déployez une configuration de service mise à jour, vous devez redémarrer ESP pour utiliser la nouvelle configuration.

Pour supprimer l'ID de configuration spécifique, procédez comme suit :

  1. Dans les options ESP pour docker run, supprimez l'option --version.

  2. Ajoutez l'option --rollout_strategy=managed.

  3. Pour redémarrer ESP, exécutez la commande docker run.

Consultez la section Options de démarrage ESP pour obtenir la liste complète des options que vous pouvez spécifier au démarrage d'ESP.

GKE

Pour déployer ESP vers GKE, procédez comme suit :

  1. Obtenez le nom de service de l'API.

  2. Ouvrez le fichier manifeste de déploiement (appelé deployment.yaml), puis ajoutez les éléments suivants à la section containers :

          containers:
          - name: esp
            image: gcr.io/endpoints-release/endpoints-runtime:1
            args: [
              "--http2_port=9000",
              "--service=SERVICE_NAME",
              "--rollout_strategy=managed",
              "--backend=grpc://127.0.0.1:8000"
            ]
            ports:
              - containerPort: 9000
    

    Remplacez SERVICE_NAME par le nom de service de l'API.

  3. Démarrez le service Kubernetes à l'aide de la commande kubectl create :

        kubectl create -f deployment.yaml
    

Pour indiquer à ESP d'utiliser un ID de configuration spécifique, procédez comme suit :

  1. Dans le fichier manifeste de déploiement, ajoutez l'option --version et définissez-la sur un ID de configuration spécifique.

  2. Supprimez l'option --rollout_strategy=managed ou définissez --rollout_strategy sur fixed. L'option fixed indique à ESP d'utiliser la configuration de service que vous avez spécifiée dans --version.

  3. Démarrez le service Kubernetes : kubectl create -f deployment.yaml.

Si vous spécifiez à la fois l'option --rollout_strategy=managed et l'option --version, ESP démarre avec la configuration que vous avez spécifiée dans --version, mais il s'exécute ensuite en mode géré et obtient la dernière configuration.

Nous vous recommandons de ne pas conserver trop longtemps la configuration d'ESP utilisant un ID de configuration spécifique, car si vous déployez une configuration de service mise à jour, vous devez redémarrer ESP pour utiliser la nouvelle configuration.

Pour supprimer l'ID de configuration spécifique, procédez comme suit :

  1. Dans le fichier manifeste de déploiement, supprimez l'option --version.

  2. Ajoutez --rollout_strategy=managed.

  3. Démarrez le service Kubernetes : kubectl create -f deployment.yaml.

Consultez la section Options de démarrage ESP pour obtenir la liste complète des options que vous pouvez spécifier au démarrage d'ESP.

Suivre l'activité de l'API

Après avoir déployé ESP et le backend de l'API, vous pouvez utiliser des outils tels que curl ou Postman pour envoyer des requêtes à l'API. Si vous ne recevez pas de réponse positive, consultez la page Résoudre des problèmes concernant les erreurs de réponse.

Après avoir envoyé quelques requêtes, vous pouvez :

Étape suivante