Desplegar el backend de la API

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:

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:

  1. Crea, configura e inicia tu instancia de VM.
  2. Instala Docker Enterprise Edition (EE) o Docker Community Edition (CE) en tu instancia de VM.
  3. Crea un contenedor Docker para el código de tu servidor backend.
  4. Envía el contenedor a Artifact Registry u otro registro.
  5. Asegúrate de que puedes hacer lo siguiente:

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:

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

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

  1. Conéctate a tu instancia de VM. Sustituye 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 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.
  4. 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.

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

Si necesitas configurar el ESP para que use un ID de configuración específico, sigue estos pasos:

  1. Incluya la opción --version y asígnale un ID de configuración específico.

  2. Quita la opción --rollout_strategy=managed o asigna el valor fixed a --rollout_strategy. La opción fixed configura ESP para que use la configuración de servicio que has especificado en --version.

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

  1. En las marcas de ESP de docker run, elimina la opción --version.

  2. Añade la opción --rollout_strategy=managed.

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

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

  2. Abre el archivo de manifiesto de la implementación (deployment.yaml) y añade lo siguiente a la sección 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
    

    Sustituye SERVICE_NAME por el nombre del 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, sigue estos pasos:

  1. En el archivo de manifiesto de implementación, añade la opción --version y asigna un ID de configuración específico.

  2. Elimina --rollout_strategy=managed o asigna el valor fixed a --rollout_strategy. La opción fixed configura ESP para que use la configuración del servicio que has especificado en --version.

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

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

  2. Añade --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 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:

Siguientes pasos