Modelo de implementación de API Gateway

Acerca de los componentes de la API

Una API definida en API Gateway consta de dos componentes principales:

  1. Configuración de la API: La configuración de la API que se crea cuando subes una definición de la API. Debes crear la definición de la API como una especificación de OpenAPI. Si tu API administra servicios de gRPC en Cloud Run, puedes definir tu API con una configuración y definición de servicio de gRPC.

    Cada vez que subes una definición de API, API Gateway crea una configuración de API nueva. Es decir, puedes crear una configuración de API, pero no puedes modificarla más adelante. Si luego editas la definición de la API en la especificación de OpenAPI o la definición del servicio de gRPC y, más tarde, subes la definición de la API editada, creas una configuración de API nueva.

  2. Puerta de enlace: Un proxy escalable de alto rendimiento basado en Envoy que aloja la configuración de la API implementada. Implementar una configuración de API en una puerta de enlace crea una URL externa que tus clientes de API usan para acceder a la API.

En la siguiente imagen, se muestran estos componentes:

En la definición de la API en el panel de API Gateway, se muestran tres componentes de configuración de API y tres componentes de la puerta de enlace.

Acerca de la implementación de una configuración de API en una puerta de enlace

Implementa una configuración de API en una puerta de enlace para que los clientes de su API puedan acceder a ella:

En tres API de muestra, se implementa una configuración de API en una puerta de enlace, lo que hace que las API sean accesibles para los clientes de la API.

Una puerta de enlace:

  • Se implementa en una región de GCP específica. Una región es una región geográfica específica en GCP en la que puedes implementar recursos.

  • Debe alojar una configuración de API. No se puede crear una puerta de enlace vacía, es decir, una sin una configuración de API. Sin embargo, después de crear una puerta de enlace, puedes actualizarla para reemplazar una configuración de la API por otra.

  • Solo puede alojar una sola configuración de API. No puedes implementar varias configuraciones de API en la misma puerta de enlace.

Luego, administras cada puerta de enlace implementada por separado. Para cada puerta de enlace, puedes hacer lo siguiente:

  • Inicia, detén o borra la puerta de enlace
  • Visualiza registros y métricas
  • Visualiza información de seguimiento

Elige una región de GCP

Cada puerta de enlace se implementa en una región geográfica específica en GCP. API Gateway admite las siguientes regiones de GCP para la implementación:

  • asia-northeast1
  • australia-southeast1
  • europe-west1
  • europe-west2
  • us-east1
  • us-east4
  • us-central1
  • us-west2
  • us-west3
  • us-west4

La compatibilidad con las puertas de enlace de API Gateway que se crearon antes en asia-east1 finalizará el 1 de noviembre de 2022. Debes revisar las puertas de enlace que se están ejecutando en asia-east1 y borrarlas o volver a crearlas en una ubicación nueva según sea necesario.

Define el extremo de la configuración de la API implementada

Cuando implementas una configuración de API en una puerta de enlace, API Gateway crea una URL única para la puerta de enlace en el dominio gateway.dev. Los clientes de la API usan una URL con el siguiente formato para acceder a la configuración de la API implementada:

https://GATEWAY_ID-HASH.REGION_CODE.gateway.dev

donde:GATEWAY_ID es el nombre de la puerta de enlace, HASH es el código hash único generado cuando se implementó la API y REGION_CODE es el código de la región de GCP en la que implementaste la puerta de enlace.

Por ejemplo:

my-gateway-a12bcd345e67f89g0h.uc.gateway.dev

Configura una cuenta de servicio para implementar archivos de configuración de API

Una configuración de API implementada en una puerta de enlace se ejecuta con los permisos asociados con las funciones otorgadas a la cuenta de servicio que se usa para crear la configuración de API. Por lo general, debes definir una cuenta de servicio independiente para crear configuraciones de API. Esa cuenta de servicio se asigna solo a las funciones necesarias para acceder al servicio de backend. De esta manera, puedes limitar los permisos asociados con la configuración de la API.

Además de las funciones necesarias para acceder al servicio de backend, se requiere que la cuenta de servicio tenga los siguientes permisos:

  • El permiso iam.serviceAccounts.actAs. Este permiso se incluye en la función de usuario de cuenta de servicio.

  • Los permisos necesarios para acceder a tu servicio de backend. Por ejemplo, si tu backend se implementa como una función de Cloud Functions, la cuenta de servicio debe asignarse al menos a la función de Invocador de Cloud Functions. Para un backend de Cloud Run, la función es invocador de Cloud Run. Cuando limitas los permisos asociados con la configuración de la API, puedes proteger mejor tus sistemas de backend.

Consulta Configurar tu entorno de desarrollo para obtener más información.

Acerca de la escala a cero

API Gateway es un servicio de escala a cero. Esto significa que cuando no hay tráfico, se borran todas las instancias de puerta de enlace. Cuando el tráfico aumenta, se crean instancias nuevas según se necesiten para manejar la carga. GCP controla de forma automática la escala a cero; no es necesario que lo configures o lo administres.

Usa un balanceador de cargas

Cada puerta de enlace implementada en una región contiene un balanceador de cargas integrado para administrar las solicitudes del cliente de la API implementada en la puerta de enlace. No es necesario crear un balanceador de cargas independiente para cada puerta de enlace.

Debes crear un balanceador de cargas cuando implementes la misma API en puertas de enlace ubicadas en regiones diferentes. Luego, el balanceador de cargas dirige las solicitudes a la API a las diferentes regiones. Si deseas obtener más información, consulta Implementa una API en varias regiones.

Configura el acceso SSL a una API

API Gateway admite el acceso HTTPS a una API implementada en una puerta de enlace. Debido a que tus API se implementan en el dominio gateway.dev, Google crea y administra el certificado SSL en el balanceador de cargas integrado en la puerta de enlace. No tienes que crear ni subir tu propio certificado.

Configura un servidor de nombres de dominio

De forma predeterminada, los clientes de API realizan solicitudes a un dominio gateway.dev para acceder a una API implementada, como se muestra antes.

Los nombres de dominio personalizados son para API Gateway cuando se usan junto con el balanceo de cargas HTTP(S) para API GatewayVISTA PREVIA. Para personalizar el nombre de dominio, crea un balanceador de cargas a fin de usar tu nombre de dominio personalizado y, luego, dirige las solicitudes al dominio gateway.dev de tu API implementada. Para obtener más información, consulta Usa un dominio personalizado con API Gateway.

Implementa varias configuraciones de API en la misma API

Solo puedes implementar una única configuración de API en una puerta de enlace. Sin embargo, puedes implementar varias configuraciones de API en varias puertas de enlace dentro de la misma API.

En esta sección, se describen dos situaciones en las que puedes implementar varias configuraciones de API en varias puertas de enlace dentro de una sola API.

Implementa configuraciones de API en varias puertas de enlace en la misma región

Cuando se compila una API, los desarrolladores de API suelen crear entornos de desarrollo, etapa de pruebas y producción, en los que sucede lo siguiente:

  • Los desarrolladores usan el entorno de desarrollo para crear la API.
  • El entorno de etapa de pruebas se usa para probar la API a fin de preparar un lanzamiento a producción.
  • En el entorno de producción, los clientes de tu API externa pueden acceder a la API.

Para admitir este tipo de entorno de desarrollo, debes definir varias configuraciones de API. Por ejemplo, puedes tener varias configuraciones de API en desarrollo, una de ellas que se está probando actualmente en etapa de pruebas y una que se está implementando en producción.

API Gateway te permite crear varias configuraciones de API dentro de una sola API y, luego, implementar cada configuración de API en una puerta de enlace diferente:

En la API 1, tres configuraciones de API llamadas API Config Dev, API Config Stage y API Config Prod se implementan en tres puertas de enlace respectivas.

En este ejemplo, tienes tres configuraciones de API diferentes: dev, stage y prod. Luego, implementarás cada configuración de API en una puerta de enlace diferente, en la que cada puerta de enlace define su propia URL de extremo única.

Implementa una configuración de API en varias regiones

A menudo, implementas una API en varias regiones de GCP. La implementación en varias regiones ofrece varias ventajas, incluida la menor latencia de solicitud porque las solicitudes se dirigen a una API que se ejecuta en una región cercana al cliente, y una confiabilidad mejorada porque una falla en una región no afecta a las API que se ejecutan en otras regiones.

Para implementar una API en varias regiones, debes implementar una configuración de API en una puerta de enlace en cada región. Cada configuración de API es específica de la región implementada porque debe hacer referencia al servicio de backend en esa región.

En la siguiente imagen, las API 1 y 2 se implementan en una sola región y la API 3 se implementa en varias regiones:

La API 1 y la API 2 se implementan en la Región 1 y la API 3 se implementa en la Región 1, la Región 2 y la Región 3 mediante un balanceador de cargas.

En este ejemplo, cada configuración de API implementada en una puerta de enlace para la API 3 tiene un extremo de URL único, con el siguiente formato:

https://my-gateway1-a12bcd345e67f89g0h.uc.gateway.dev
https://my-gateway2-b12cde345f67g89h0i.en.gateway.dev
https://my-gateway3-c12bde345g67h89i0j.uw.gateway.dev

Luego, configura un balanceador de cargas mediante el balanceo de cargas de HTTP(S) para API Gateway PREVIEW a fin de controlar las solicitudes a la API y reenviar la solicitud a la región adecuada. Si deseas obtener más información, consulta Crea implementaciones multirregionales para API Gateway.

Actualiza una API

Puedes actualizar una API implementada si editas la definición de la API en la especificación de OpenAPI y, luego, subes la especificación. Cuando subes una especificación nueva, se crea una configuración de API nueva.

API Gateway admite un modelo de actualización sin tiempo de inactividad, lo que significa que tu API continúa controlando las solicitudes durante la implementación de la configuración actualizada de la API. Sin embargo, hay un período mientras se implementa la configuración de la API nueva en el que es posible que la versión anterior de la configuración de la API controle algunas solicitudes.

Si implementaste la configuración de API en varias regiones y puertas de enlace, debes volver a implementar la configuración de API actualizada en cada región por separado.

¿Qué sigue?