Modelo de despliegue 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 al subir una definición de API. La definición de la API se crea como una especificación de OpenAPI. Si tu API gestiona servicios gRPC en Cloud Run, puedes definirla con una definición y una configuración de servicio gRPC.

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

  2. Pasarela: un proxy escalable de alto rendimiento basado en Envoy que aloja la configuración de la API implementada. Al desplegar una configuración de API en una pasarela, se crea la URL externa que usan los clientes de la API para acceder a ella.

En la siguiente imagen se muestran estos componentes:

La definición de API del panel de API Gateway muestra tres componentes de configuración de API y tres componentes de pasarela.

Información sobre el despliegue de una configuración de API en una pasarela

Para que tus clientes de API puedan acceder a tu API, debes desplegar una configuración de API en una pasarela:

En tres APIs de ejemplo, se despliega una configuración de API en una pasarela, lo que permite que los clientes de la API accedan a las APIs.

Una pasarela:

  • Se implementa en una Google Cloud región específica. Una región es una zona geográfica específica en la que puedes desplegar recursos. Google Cloud

  • Debe alojar una configuración de API. No puedes crear una pasarela vacía, es decir, una sin configuración de API. Sin embargo, una vez creada la pasarela, puedes actualizarla para sustituir una configuración de API por otra.

  • Solo puede alojar una configuración de API. No puedes desplegar varias configuraciones de API en la misma pasarela.

Después, gestiona cada pasarela implementada por separado. En cada pasarela, puede hacer lo siguiente:

  • Iniciar, detener o eliminar la pasarela
  • Ver registros y métricas
  • Ver información de trazas

Elegir una Google Cloud región

Cada pasarela se implementa en una región geográfica específica en Google Cloud. API Gateway admite las siguientes Google Cloud regiones de implementación:

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

Definir el endpoint de la configuración de API implementada

Cuando despliegas una configuración de API en una pasarela, API Gateway crea una URL única para la pasarela en el dominio gateway.dev. Tus clientes de la API usarán 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 pasarela, HASH es el código hash único generado al desplegar la API y REGION_CODE es el código de la ubicación de Cloud en la que has desplegado la pasarela.

Por ejemplo:

my-gateway-a12bcd345e67f89g0h.uc.gateway.dev

Configurar una cuenta de servicio para desplegar configuraciones de API

Una configuración de API desplegada en una pasarela se ejecuta con los permisos asociados a los roles concedidos a la cuenta de servicio usada para crear la configuración de API. Por lo tanto, normalmente se define una cuenta de servicio independiente para crear configuraciones de API. A continuación, esa cuenta de servicio se asigna únicamente a los roles necesarios para acceder al servicio de backend. De esta forma, puedes limitar los permisos asociados a la configuración de la API.

Además de los roles necesarios para acceder al servicio backend, la cuenta de servicio debe tener los siguientes permisos:

  • El permiso iam.serviceAccounts.actAs. Este permiso está incluido en el rol 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, la cuenta de servicio debe tener asignado al menos el rol Invocador de Cloud Functions. En el caso de un backend de Cloud Run, el rol es Invocador de Cloud Run. Si limitas los permisos asociados a la configuración de la API, puedes proteger mejor tus sistemas backend.

Consulta más información sobre cómo configurar tu entorno de desarrollo.

Información sobre el escalado a cero

API Gateway es un servicio de escalado a cero. Esto significa que, cuando no hay tráfico, se eliminan todas las instancias de la pasarela. Cuando el tráfico aumenta, se crean nuevas instancias bajo demanda para gestionar la carga. Google Cloudcontrola automáticamente la función de escalado a cero, por lo que no es necesario que la configure ni la gestione.

Usar un balanceador de carga

Cada pasarela implementada en una región contiene un balanceador de carga integrado para gestionar las solicitudes de los clientes a la API implementada en la pasarela. No es necesario crear un balanceador de carga independiente para cada pasarela.

Sin embargo, sí que tienes que crear un balanceador de carga cuando despliegues la misma API en pasarelas ubicadas en diferentes regiones. A continuación, el balanceador de carga dirige las solicitudes de API a las diferentes regiones. Consulta más información sobre cómo desplegar una API en varias regiones.

Configurar el acceso SSL a una API

API Gateway admite el acceso HTTPS a una API implementada en una pasarela. Como tus APIs se implementan en el dominio gateway.dev, Google crea y gestiona el certificado SSL en el balanceador de carga integrado con la pasarela. No tienes que crear ni subir tu propio certificado.

Configurar un servidor de nombres de dominio

De forma predeterminada, los clientes de la API envían solicitudes a un dominio gateway.dev para acceder a una API implementada, tal como se muestra arriba.

Los nombres de dominio personalizados se usan en API Gateway cuando se combinan con el balanceo de carga de HTTP y HTTPS para API Gateway PREVIEW. Para personalizar el nombre de dominio, crea un balanceador de carga que use tu nombre de dominio personalizado y, a continuación, dirige las solicitudes al dominio gateway.dev de la API implementada. Para obtener más información, consulta Usar un dominio personalizado con API Gateway.

Desplegar varias configuraciones de API en la misma API

Solo puedes desplegar una configuración de API en una pasarela. Sin embargo, puedes desplegar varias configuraciones de API en varias pasarelas de la misma API.

En esta sección se describen dos situaciones en las que puedes desplegar varias configuraciones de API en varias pasarelas dentro de una misma API.

Desplegar configuraciones de API en varias pasarelas de la misma región

Al crear una API, los desarrolladores suelen crear entornos de desarrollo, de preproducción y de producción, donde:

  • Los desarrolladores usan el entorno de desarrollo para crear la API.
  • El entorno de staging se usa para probar la API antes de lanzar una versión en producción.
  • El entorno de producción es donde se permite que tus clientes de API externos accedan 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 configuración de API que se esté probando en un entorno de preproducción y otra que se haya implementado en producción. API Gateway te permite crear varias configuraciones de API en una misma API y, después, implementar cada configuración en una pasarela diferente:

En la API 1, se despliegan tres configuraciones de API llamadas "API Config Dev", "API Config Stage" y "API Config Prod" en tres pasarelas respectivas.

En este ejemplo, tienes tres configuraciones de API diferentes: dev, stage y prod. Después, despliegas cada configuración de API en una pasarela diferente, donde cada pasarela define su propia URL de endpoint única.

Desplegar una configuración de API en varias regiones

A menudo, se despliega una API en varias Google Cloud regiones. Implementar en varias regiones ofrece varias ventajas, como una latencia de solicitud reducida, ya que las solicitudes se dirigen a una API que se ejecuta en una región geográficamente cercana al cliente, y una mayor fiabilidad, ya que un fallo en una región no afecta a las APIs que se ejecutan en otras regiones.

Para desplegar una API en varias regiones, debes desplegar una configuración de API en una pasarela de cada región. Cada configuración de API es específica de la región desplegada, ya que tiene que hacer referencia al servicio backend de esa región.

En la siguiente imagen, las APIs 1 y 2 se han desplegado en una sola región, mientras que la API 3 se ha desplegado en varias regiones:

Las APIs 1 y 2 se han implementado en la región 1, y la API 3 se ha implementado en las regiones 1, 2 y 3 mediante un balanceador de carga.

En este ejemplo, cada configuración de API desplegada en una pasarela para la API 3 tiene un endpoint 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  

A continuación, configura un balanceador de carga con el balanceo de carga de HTTP y HTTPS para la API GatewayPREVIEW para gestionar las solicitudes a la API y reenviar la solicitud a la región adecuada. Para obtener más información, consulta Crear implementaciones multirregión para API Gateway.

Actualizar una API

Para actualizar una API desplegada, edita la definición de la API en la especificación de OpenAPI y, a continuación, sube la especificación. Al subir una especificación nueva, se crea una configuración de API.

API Gateway admite un modelo de actualización sin tiempo de inactividad, lo que significa que tu API sigue gestionando solicitudes durante el despliegue de la configuración de API actualizada. Sin embargo, durante el periodo en el que se implementa la nueva configuración de la API, es posible que la versión anterior siga gestionando algunas solicitudes.

Si has desplegado la configuración de la API en varias regiones y pasarelas, tendrás que volver a desplegar la configuración de la API actualizada en cada región por separado.

Siguientes pasos