Implementa el backend de la API

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:

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:

  1. Crea, configura y, luego, inicia la instancia de VM.
  2. Instala la edición empresarial (EE) o la edición de la comunidad (CE) de Docker en la instancia de VM.
  3. Crea un contenedor de Docker para tu código de servidor de backend.
  4. Envía el contenedor a Artifact Registry} o a otro registro.
  5. Asegúrate de poder realizar las siguientes acciones sin problemas:

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:

  1. 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:

    1. Empaqueta tu aplicación en una imagen de Docker.
    2. Sube la imagen a un registro.
    3. Crea un clúster de contenedor.
    4. Implementa tu aplicación en el clúster.
    5. Expone tu aplicación a Internet.
  2. 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:

  1. Conéctate a tu instancia de VM. Reemplaza INSTANCE_NAME por el nombre de tu instancia de VM:

    gcloud compute ssh INSTANCE_NAME
    
  2. Crea tu propia red de contenedores llamada esp_net:

    sudo docker network create --driver bridge esp_net
    
  3. 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.
  4. 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.

  5. 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 configuración del servicio implementado más reciente. 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.

Si necesitas configurar el ESP para que use un ID de configuración específico, haz lo siguiente:

  1. Incluye la opción --version y configúrala para un ID de configuración específico.

  2. Quita la opción --rollout_strategy=managed o configura --rollout_strategy como fixed. La opción fixed configura el ESP para que use la configuración de servicio que especificaste en --version.

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

  1. En las marcas del ESP para docker run, quita la opción --version.

  2. Agrega la opción --rollout_strategy=managed.

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

  1. Obtén el nombre de servicio de tu API.

  2. Abre tu archivo de manifiesto de la implementación, denominado deployment.yaml, y agrega lo siguiente a la sección de 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
    

    Reemplaza SERVICE_NAME por el nombre de servicio de tu API.

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

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

  2. Quita --rollout_strategy=managed o configura --rollout_strategy como fixed. La opción fixed configura el ESP para que use la configuración de servicio que especificaste en --version.

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

  1. En el archivo de manifiesto de la implementación, quita la opción --version.

  2. Agrega --rollout_strategy=managed.

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

¿Qué sigue?