En esta página, se explica cómo implementar el código de backend de tu API y el proxy de servicio extensible (ESP) en Google Kubernetes Engine y Compute Engine.
Si bien los pasos de implementación varían según la plataforma que aloja la API, siempre hay un paso en el que proporcionas al ESP el nombre de servicio y una opción que configura el ESP para que use la configuración más reciente del servicio Cloud Endpoints que se implementó. Con esta información, el ESP puede obtener la configuración de Endpoints de tu API, que permite almacenar en servidores proxy las solicitudes y respuestas para que Cloud Endpoints pueda administrar tus API.
Requisitos previos
Como punto de partida, en esta página se supone que ya:
- Creaste un proyecto de Google Cloud.
- Configuraste Endpoints.
- Implementaste la configuración de Endpoints.
Prepararse para la implementación
Compute Engine
Para que Endpoints administre tu API, debes instalar y configurar el ESP y el código de servidor de backend para tu API. Tienes que instalar Docker en tu instancia de VM de Compute Engine para poder ejecutar la imagen de Docker de ESP que está disponible sin costo en Container Registry.
Antes de implementar:
Antes de poder implementar tu API y ESP en Compute Engine, completa los siguientes pasos:
- Crea, configura y, luego, inicia la instancia de VM.
- Instala la edición empresarial (EE) o la edición de la comunidad (CE) de Docker en la instancia de VM.
- Crea un contenedor de Docker para tu código de servidor de backend.
- Envía el contenedor a Container Registry o a otro registro.
Asegúrate de poder realizar las siguientes acciones sin problemas:
- Conectarte a la instancia de VM.
- Ejecutar la imagen de Docker para iniciar tu servidor de Backend en la instancia de VM. Consulta la referencia de ejecución de Docker.
- Enviar solicitudes a tu API.
GKE
Cuando creas un clúster en la consola de Google Cloud, los alcances de OAuth que se otorgan a la cuenta de servicio del clúster incluyen, de forma predeterminada, los siguientes alcances que requiere Endpoints:
- Control de servicios: habilitado
- Service Management: Solo lectura
Cuando crees un clúster con el comando de gcloud container clusters create
o mediante un archivo de configuración de terceros, asegúrate de especificar los alcances siguientes:
"https://www.googleapis.com/auth/servicecontrol"
"https://www.googleapis.com/auth/service.management.readonly"
Para obtener más información, consulta ¿Qué son los niveles de acceso?
Antes de implementar:
Si agregas una pequeña sección a tu archivo de manifiesto de implementación, puedes ejecutar la imagen de Docker de ESP en los clústeres de tu contenedor junto con la aplicación en contenedores. Completa los siguientes pasos antes de implementar tu API con ESP en GKE:
Implementa la aplicación en contenedores en los clústeres del contenedor. Como se describe en la Documentación de GKE, los pasos generales son los siguientes:
- Empaqueta tu aplicación en una imagen de Docker.
- Sube la imagen a un registro.
- Crea un clúster de contenedor.
- Implementa tu aplicación en el clúster.
- Expone tu aplicación a Internet.
Asegúrate de poder realizar las siguientes acciones sin problemas:
- Iniciar el servidor de tu API.
- Enviar solicitudes a tu API.
Cómo implementar tu API y ESP
Compute Engine
Para implementar tu API con el ESP en Compute Engine con Docker, haz lo siguiente:
Conéctate a tu instancia de VM. Reemplaza
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 de tu código de servidor de 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
- Reemplaza
YOUR_API_CONTAINER_NAME
por el nombre de tu contenedor. - Reemplaza
YOUR_PROJECT_ID
por el ID del proyecto de Google Cloud que usaste cuando enviaste la imagen. - Reemplaza
YOUR_IMAGE
por el nombre de tu imagen.
- Reemplaza
Obtén el nombre de servicio de tu API. Este es el nombre que especificaste en el campo
name
del archivo YAML de configuración de servicio.Ejecuta una instancia de la imagen ESP de 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
- Reemplaza
SERVICE_NAME
por el nombre de tu servicio. - Reemplaza
YOUR_API_CONTAINER_NAME
por el nombre del contenedor de la API.
La opción
--rollout_strategy=managed
configura el ESP para que use la última configuración del servicio implementada. Cuando especificas esta opción, el ESP detecta el cambio y comienza a usarlo automáticamente hasta 5 minutos después de implementar una nueva configuración de servicio. Recomendamos que especifiques esta opción en lugar de un ID de configuración específico para que use el ESP.- Reemplaza
Si necesitas configurar el ESP para que use un ID de configuración específico, haz lo siguiente:
Incluye la opción
--version
y configúrala para un ID de configuración específico.Quita la opción
--rollout_strategy=managed
o configura--rollout_strategy
comofixed
. La opciónfixed
configura el ESP para que use la configuración de servicio que especificaste en--version
.Ejecuta el comando
docker run
de nuevo.
Si especificas --rollout_strategy=managed
y la opción --version
, el ESP comienza con la configuración que especificaste en --version
, pero luego se ejecuta en modo administrado y obtiene la configuración más reciente.
Te recomendamos no mantener el ESP configurado para usar un ID de configuración específico por mucho tiempo, porque si implementas una configuración de servicio actualizada, tendrás que reiniciar el ESP para que use la configuración nueva.
Para quitar el ID de configuración específico, haz lo siguiente:
En las marcas del ESP para
docker run
, quita la opción--version
.Agrega la opción
--rollout_strategy=managed
.Para reiniciar el ESP, ejecuta el comando
docker run
.
Consulta Opciones de inicio del ESP para ver la lista completa de opciones que puedes especificar cuando inicias el ESP.
GKE
Para implementar el ESP en GKE, haz lo siguiente:
Obtén el nombre de servicio de tu API.
Abre tu archivo de manifiesto de la implementación, denominado
deployment.yaml
, y agrega lo siguiente a la sección decontainers
: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
Reemplaza
SERVICE_NAME
por el nombre de 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, haz lo siguiente:
En tu archivo de manifiesto de la implementación, agrega la opción
--version
y configúrala con un ID de configuración específico.Quita
--rollout_strategy=managed
o configura--rollout_strategy
comofixed
. La opciónfixed
configura el ESP para que use la configuración de servicio que especificaste en--version
.Inicia el servicio de Kubernetes:
kubectl create -f deployment.yaml
.
Si especificas --rollout_strategy=managed
y la opción --version
, el ESP comienza con la configuración que especificaste en --version
, pero luego se ejecuta en modo administrado y obtiene la configuración más reciente.
Te recomendamos no mantener el ESP configurado para usar un ID de configuración específico por mucho tiempo, porque si implementas una configuración de servicio actualizada, tendrás que reiniciar el ESP para que use la configuración nueva.
Para quitar el ID de configuración específico, haz lo siguiente:
En el archivo de manifiesto de la implementación, quita la opción
--version
.Agrega
--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 cuando inicias el ESP.
Realice un seguimiento de la actividad de la API
Una vez que hayas implementado el ESP y el backend de tu API, puedes usar herramientas como curl
o Postman para enviar solicitudes a tu API. Si no obtienes una respuesta correcta, consulta Solucionar errores en las respuestas
Luego de enviar algunas solicitudes, puedes hacer lo siguiente:
Para ver los grafos de actividad de la API, dirígete a Endpoints > Servicios. La solicitud puede tardar unos minutos en reflejarse en los gráficos.
Consulta los registros de solicitudes de tu API en la página de Cloud Logging.