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 :
- Créez, configurez et démarrez votre instance de VM.
- Installez Docker Enterprise Edition (EE) ou Docker Community Edition (CE) sur votre instance de VM.
- Créez un conteneur Docker pour le code du serveur backend.
- Transférez le conteneur dans Google Container Registry ou dans un autre registre.
Assurez-vous que vous pouvez :
- vous connecter à l'instance de VM ;
- exécuter l'image Docker pour démarrer le serveur backend sur l'instance de VM. Consultez la page Docker run reference ;
- envoyer des requêtes à l'API.
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 :
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 :
- Empaquetez l'application dans une image Docker.
- Importez l'image dans un registre.
- Créez un cluster de conteneurs.
- Déployez votre application sur le cluster.
- Exposez votre application sur Internet.
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 :
Connectez-vous à l'instance de VM. Remplacez
INSTANCE_NAME
par le nom de l'instance de VM :gcloud compute ssh INSTANCE_NAME
Créez votre propre réseau de conteneurs appelé
esp_net
:sudo docker network create --driver bridge esp_net
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.
- Remplacez
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.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.- Remplacez
Pour indiquer à ESP d'utiliser un ID de configuration spécifique, procédez comme suit :
Incluez l'option
--version
et définissez-la sur un ID de configuration spécifique.Supprimez l'option
--rollout_strategy=managed
ou définissez--rollout_strategy
surfixed
. L'optionfixed
indique à ESP d'utiliser la configuration de service que vous avez spécifiée dans--version
.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 :
Dans les options ESP pour
docker run
, supprimez l'option--version
.Ajoutez l'option
--rollout_strategy=managed
.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 :
Obtenez le nom de service de l'API.
Ouvrez le fichier manifeste de déploiement (appelé
deployment.yaml
), puis ajoutez les éléments suivants à la sectioncontainers
: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.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 :
Dans le fichier manifeste de déploiement, ajoutez l'option
--version
et définissez-la sur un ID de configuration spécifique.Supprimez l'option
--rollout_strategy=managed
ou définissez--rollout_strategy
surfixed
. L'optionfixed
indique à ESP d'utiliser la configuration de service que vous avez spécifiée dans--version
.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 :
Dans le fichier manifeste de déploiement, supprimez l'option
--version
.Ajoutez
--rollout_strategy=managed
.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 :
Pour afficher les graphiques d'activité de l'API, accédez à Endpoints > Services. Il peut s'écouler quelques instants avant que la demande ne soit reflétée dans les graphiques.
Consulter les journaux de requêtes de votre API sur la page Cloud Logging.
Étape suivante
- Résoudre les problèmes liés à Cloud Endpoints sur Compute Engine
- Dépannage de Cloud Endpoints dans GKE