En esta página se explica cómo desplegar el código de backend de tu API y el Extensible Service Proxy (ESP) en Google Kubernetes Engine y Compute Engine.
Aunque los pasos de despliegue varían en función de la plataforma que aloje tu API, siempre hay un paso en el que proporcionas a ESP el nombre del servicio y una opción que configura ESP para que use la configuración de servicio de Cloud Endpoints desplegada más reciente. Con esta información, ESP puede obtener la configuración de los endpoints de tu API, lo que le permite proxyizar solicitudes y respuestas para que Cloud Endpoints pueda gestionar tu API.
Requisitos previos
Para empezar, en esta página se presupone que tienes lo siguiente:
- Se ha creado un Google Cloud proyecto.
- Has configurado Endpoints.
- Desplegar la configuración de Endpoints.
Preparación para la implementación
Compute Engine
Para que Endpoints gestione tu API, debes instalar y configurar ESP, así como el código del servidor backend de tu API. Debes instalar Docker en tu instancia de VM de Compute Engine para poder ejecutar la imagen Docker de ESP, que está disponible de forma gratuita en Container Registry.
Antes de implementar:
Antes de desplegar tu API y ESP en Compute Engine, completa los siguientes pasos:
- Crea, configura e inicia tu instancia de VM.
- Instala Docker Enterprise Edition (EE) o Docker Community Edition (CE) en tu instancia de VM.
- Crea un contenedor Docker para el código de tu servidor backend.
- Envía el contenedor a Artifact Registry u otro registro.
Asegúrate de que puedes hacer lo siguiente:
- Conéctate a la instancia de VM.
- Ejecuta la imagen de Docker para iniciar el servidor backend en la instancia de VM. Consulta la referencia de Docker run.
- Envía solicitudes a tu API.
GKE
Cuando creas un clúster en la Google Cloud consola, de forma predeterminada, los permisos de OAuth que se conceden a la cuenta de servicio del clúster incluyen los permisos que requiere Endpoints:
- Control de servicios: habilitado
- Gestión de servicios: solo lectura
Cuando crees un clúster con el comando
gcloud container clusters create
o con un archivo de configuración de terceros, asegúrate de especificar los siguientes ámbitos:
"https://www.googleapis.com/auth/servicecontrol"
"https://www.googleapis.com/auth/service.management.readonly"
Para obtener más información, consulta ¿Qué son los ámbitos de acceso?
Antes de implementar:
Si añades una pequeña sección al archivo de manifiesto de implementación, puedes ejecutar la imagen de Docker de ESP en tus clústeres de contenedores junto con tu aplicación en contenedores. Antes de desplegar tu API con ESP en GKE, completa los siguientes pasos:
Despliega tu aplicación en contenedores en los clústeres de contenedores. Los pasos generales que se describen en la documentación de GKE son los siguientes:
- Empaqueta tu aplicación en una imagen de Docker.
- Sube la imagen a un registro.
- Crea un clúster de contenedores.
- Despliega la aplicación en el clúster.
- Expón tu aplicación a Internet.
Asegúrate de que puedes hacer lo siguiente:
- Inicia el servidor de tu API.
- Envía solicitudes a tu API.
Desplegar una API y ESP
Compute Engine
Para desplegar tu API con ESP en Compute Engine con Docker, sigue estos pasos:
Conéctate a tu instancia de VM. Sustituye
INSTANCE_NAME
por el nombre de tu instancia de VM:gcloud compute ssh INSTANCE_NAME
Crea tu propia red de contenedores llamada
esp_net
:sudo docker network create --driver bridge esp_net
Ejecuta una instancia de la imagen del código de tu servidor backend y conéctala a la red de contenedores
esp_net
:sudo docker run \ --detach \ --name=YOUR_API_CONTAINER_NAME \ --net=esp_net \ gcr.io/YOUR_PROJECT_ID/YOUR_IMAGE:1
- Sustituye
YOUR_API_CONTAINER_NAME
por el nombre de tu contenedor. - Sustituye
YOUR_PROJECT_ID
por elGoogle Cloud ID de proyectoYOUR_PROJECT_ID
que has usado al enviar la imagen. - Sustituye
YOUR_IMAGE
por el nombre de tu imagen.
- Sustituye
Obtén el nombre del servicio de tu API. Es el nombre que has especificado en el campo
name
de tu archivo YAML de configuración de servicio.Ejecuta una instancia de la imagen Docker de ESP:
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
- Sustituye
SERVICE_NAME
por el nombre de tu servicio. - Sustituye
YOUR_API_CONTAINER_NAME
por el nombre del contenedor de tu API.
La opción
--rollout_strategy=managed
configura ESP para que use la última configuración de servicio implementada. Si especifica esta opción, el ESP detectará el cambio y empezará a usarlo automáticamente en un plazo de 5 minutos después de que implemente una nueva configuración de servicio. Te recomendamos que especifiques esta opción en lugar de un ID de configuración específico para que lo use ESP.- Sustituye
Si necesitas configurar el ESP para que use un ID de configuración específico, sigue estos pasos:
Incluya la opción
--version
y asígnale un ID de configuración específico.Quita la opción
--rollout_strategy=managed
o asigna el valorfixed
a--rollout_strategy
. La opciónfixed
configura ESP para que use la configuración de servicio que has especificado en--version
.Vuelve a ejecutar el comando
docker run
.
Si especifica tanto --rollout_strategy=managed
como la opción --version
, el proveedor de servicios de correo electrónico empezará con la configuración que haya especificado en --version
, pero después se ejecutará en modo gestionado y obtendrá la configuración más reciente.
Le recomendamos que no mantenga configurado ESP para que use un ID de configuración específico durante demasiado tiempo, ya que, si implementa una configuración de servicio actualizada, tendrá que reiniciar ESP para usar la nueva configuración.
Para eliminar el ID de configuración específico, sigue estos pasos:
En las marcas de ESP de
docker run
, elimina la opción--version
.Añade la opción
--rollout_strategy=managed
.Para reiniciar ESP, ejecuta el comando
docker run
.
Consulta las opciones de inicio del ESP para ver la lista completa de opciones que puedes especificar al iniciar el ESP.
GKE
Para desplegar ESP en GKE, haz lo siguiente:
Obtén el nombre del servicio de tu API.
Abre el archivo de manifiesto de la implementación (
deployment.yaml
) y añade lo siguiente a la seccióncontainers
: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
Sustituye
SERVICE_NAME
por el nombre del servicio de tu API.Inicia el servicio de Kubernetes con el comando
kubectl create
:kubectl create -f deployment.yaml
Si necesitas configurar el ESP para que use un ID de configuración específico, sigue estos pasos:
En el archivo de manifiesto de implementación, añade la opción
--version
y asigna un ID de configuración específico.Elimina
--rollout_strategy=managed
o asigna el valorfixed
a--rollout_strategy
. La opciónfixed
configura ESP para que use la configuración del servicio que has especificado en--version
.Inicia el servicio de Kubernetes:
kubectl create -f deployment.yaml
Si especifica tanto --rollout_strategy=managed
como la opción --version
, el ESP empieza con la configuración que haya especificado en --version
, pero luego se ejecuta en modo gestionado y obtiene la configuración más reciente.
Te recomendamos que no mantengas configurado el ESP para que use un ID de configuración específico durante demasiado tiempo, ya que, si implementas una configuración de servicio actualizada, tendrás que reiniciar el ESP para usar la nueva configuración.
Para eliminar el ID de configuración específico, sigue estos pasos:
En el archivo de manifiesto de implementación, elimina la opción
--version
.Añade
--rollout_strategy=managed
.Inicia el servicio de Kubernetes:
kubectl create -f deployment.yaml
Consulta las opciones de inicio del ESP para ver la lista completa de opciones que puedes especificar al iniciar el ESP.
Monitorizar la actividad de la API
Después de implementar ESP y tu backend de API, puedes usar herramientas como curl
o Postman para enviar solicitudes a tu API. Si no recibes una respuesta correcta, consulta el artículo Solucionar problemas de errores de respuesta.
Después de enviar algunas solicitudes, puedes hacer lo siguiente:
Para ver los gráficos de actividad de tu API, ve a Endpoints > Services (Puntos finales > Servicios). La solicitud puede tardar unos instantes en reflejarse en los gráficos.
Consulta los registros de solicitudes de tu API en la página Cloud Logging.