Modelo de implementação do API Gateway

Acerca dos componentes da API

Uma API definida no API Gateway é composta por dois componentes principais:

  1. Configuração da API: a configuração da API criada quando carrega uma definição da API. Cria a definição da API como uma especificação OpenAPI. Se a sua API gerir serviços gRPC no Cloud Run, pode definir a API com uma definição e uma configuração de serviço gRPC.

    Sempre que carrega uma definição de API, o API Gateway cria uma nova configuração da API. Ou seja, pode criar uma configuração da API, mas não a pode modificar posteriormente. Se editar posteriormente a definição da API na especificação OpenAPI ou na definição do serviço gRPC e, em seguida, carregar a definição da API editada, cria uma nova configuração da API.

  2. Gateway: um proxy escalável de alto desempenho baseado no Envoy que aloja a configuração da API implementada. A implementação de uma configuração da API num gateway cria o URL externo que os clientes da API usam para aceder à API.

A imagem seguinte mostra estes componentes:

A definição da API no painel do API Gateway mostra três componentes de configuração da API e três componentes de gateway.

Acerca da implementação de uma configuração de API num gateway

Implementa uma configuração da API num gateway para tornar a sua API acessível aos clientes da API:

Em três APIs de exemplo, é implementada uma configuração de API num gateway, o que torna as APIs acessíveis aos clientes da API.

Um gateway:

  • É implementado numa Google Cloud região específica. Uma região é uma região geográfica específica onde pode implementar recursos. Google Cloud

  • Tem de alojar uma configuração de API. Não pode criar um gateway vazio, ou seja, um gateway sem uma configuração da API. No entanto, depois de criar um gateway, pode atualizá-lo para substituir uma configuração da API por outra.

  • Só pode alojar uma única configuração da API. Não pode implementar várias configurações de API no mesmo gateway.

Em seguida, gere cada gateway implementado separadamente. Para cada gateway, pode:

  • Iniciar/parar/eliminar o gateway
  • Veja registos e métricas
  • Veja informações de rastreio

Escolher uma Google Cloud região

Cada gateway é implementado numa região geográfica específica no Google Cloud. O API Gateway suporta as seguintes Google Cloud regiões para implementação:

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

Definir o ponto final da configuração da API implementada

Quando implementa uma configuração da API num gateway, o API Gateway cria um URL único para o gateway no domínio gateway.dev. Os seus clientes API usam, em seguida, um URL no seguinte formato para aceder à configuração da API implementada:

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

em que GATEWAY_ID é o nome do gateway, HASH é o código hash exclusivo gerado quando implementou a API e REGION_CODE é o código da localização na nuvem onde implementou o gateway.

Por exemplo:

my-gateway-a12bcd345e67f89g0h.uc.gateway.dev

Configurar uma conta de serviço para implementar configurações de API

Uma configuração da API implementada num gateway é executada com as autorizações associadas às funções concedidas à conta de serviço usada para criar a configuração da API. Por conseguinte, normalmente, define uma conta de serviço separada para criar configurações da API. Em seguida, essa conta de serviço é atribuída apenas às funções necessárias para aceder ao serviço de back-end. Desta forma, pode limitar as autorizações associadas à configuração da API.

Além das funções necessárias para aceder ao serviço de back-end, é necessário conceder as seguintes autorizações à conta de serviço:

  • A autorização iam.serviceAccounts.actAs. Esta autorização está incluída na função Utilizador da conta de serviço.

  • As autorizações necessárias para aceder ao seu serviço de back-end. Por exemplo, se o seu back-end for implementado como uma função do Google Cloud, a conta de serviço deve, pelo menos, ser atribuída à função de invocador de funções do Google Cloud. Para um back-end do Cloud Run, a função é Cloud Run Invoker. Ao limitar as autorizações associadas à configuração da API, pode proteger melhor os seus sistemas de back-end.

Para mais informações, consulte o artigo Configurar o ambiente de desenvolvimento.

Acerca da escalabilidade para zero

O API Gateway é um serviço de dimensionamento para zero. Isto significa que, quando não existe tráfego, todas as instâncias de gateway são eliminadas. Quando o tráfego aumenta, são criadas novas instâncias a pedido para processar a carga. A redução para zero é controlada automaticamente pelo Google Cloud. Não tem de a configurar nem gerir.

Usar um balanceador de carga

Cada gateway implementado numa região contém um equilibrador de carga integrado para gerir os pedidos de clientes à API implementada no gateway. Não tem de criar um equilibrador de carga separado para cada gateway.

Tem de criar um balanceador de carga quando implementa a mesma API em gateways localizados em regiões diferentes. Em seguida, o balanceador de carga direciona os pedidos de API para as diferentes regiões. Para mais informações, consulte o artigo Implementar uma API em várias regiões.

Configurar o acesso SSL a uma API

O gateway da API suporta o acesso HTTPS a uma API implementada num gateway. Uma vez que as suas APIs estão implementadas no domínio gateway.dev, a Google cria e gere o certificado SSL no balanceador de carga integrado com o gateway. Não tem de criar nem carregar o seu próprio certificado.

Configurar um servidor de nomes de domínio

Por predefinição, os clientes API fazem pedidos a um domínio gateway.dev para aceder a uma API implementada, conforme mostrado acima.

Os nomes de domínio personalizados destinam-se ao API Gateway quando usados em conjunto com o balanceamento de carga HTTP(S) para o API GatewayPRÉ-VISUALIZAÇÃO. Para personalizar o nome do domínio, crie um equilibrador de carga para usar o seu nome do domínio personalizado e, em seguida, encaminhe os pedidos para o domínio gateway.dev da API implementada. Para mais informações, consulte o artigo Use um domínio personalizado com o API Gateway.

Implementar várias configurações de API na mesma API

Só pode implementar uma única configuração da API num gateway. No entanto, pode implementar várias configurações de API em várias gateways na mesma API.

Esta secção descreve dois cenários em que pode implementar várias configurações de API em várias gateways numa única API.

Implementar configurações de API em várias gateways na mesma região

Ao criar uma API, os programadores de APIs criam frequentemente ambientes de desenvolvimento, preparação e produção, onde:

  • O ambiente de desenvolvimento é usado pelos programadores para criar a API.
  • O ambiente de preparação é usado para testar a API em preparação para um lançamento em produção.
  • O ambiente de produção é onde os seus clientes da API externa têm permissão para aceder à API.

Para suportar este tipo de ambiente de desenvolvimento, define várias configurações da API. Por exemplo, pode ter várias configurações de API em desenvolvimento, uma configuração de API a ser testada na preparação e uma configuração de API implementada na produção. O API Gateway permite-lhe criar várias configurações de API numa única API e, em seguida, implementar cada configuração de API num gateway diferente:

Na API 1, três configurações de API denominadas API Config Dev, API Config Stage e API Config Prod são implementadas em três gateways respetivos.

Neste exemplo, tem três configurações de API diferentes: dev, stage e prod. Em seguida, implementa cada configuração de API num gateway diferente, em que cada gateway define o seu próprio URL do ponto final exclusivo.

Implementar uma configuração de API em várias regiões

Muitas vezes, implementa uma API em várias Google Cloud regiões. A implementação em várias regiões oferece várias vantagens, incluindo a redução da latência dos pedidos, uma vez que os pedidos são direcionados para uma API executada numa região geograficamente próxima do cliente, e uma fiabilidade melhorada, uma vez que uma falha numa região não afeta as APIs executadas noutras regiões.

Para implementar uma API em várias regiões, implementa uma configuração da API num gateway em cada região. Cada configuração da API é específica da região implementada porque tem de fazer referência ao serviço de back-end nessa região.

Na imagem seguinte, as APIs 1 e 2 estão implementadas numa única região e a API 3 está implementada em várias regiões:

A API 1 e a API 2 são implementadas na região 1, e a API 3 é implementada na região 1, na região 2 e na região 3 através de um equilibrador de carga.

Neste exemplo, cada configuração da API implementada num gateway para a API 3 tem um ponto final de URL exclusivo, no formato:

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

Em seguida, configura um balanceador de carga através do balanceamento de carga de HTTP(S) para o API GatewayPRÉ-VISUALIZAÇÃO para processar pedidos à API e encaminhar o pedido para a região adequada. Para mais informações, consulte o artigo Criar implementações em várias regiões para o API Gateway.

Atualizar uma API

Pode atualizar uma API implementada editando a definição da API na especificação OpenAPI e, em seguida, carregando a especificação. O carregamento de uma nova especificação cria uma nova configuração da API.

O API Gateway suporta um modelo de atualização sem tempo de inatividade, o que significa que a sua API continua a processar pedidos durante a implementação da configuração da API atualizada. No entanto, existe um período durante a implementação da nova configuração da API em que alguns pedidos podem continuar a ser processados pela versão anterior da configuração da API.

Se implementou a configuração da API em várias regiões e gateways, tem de reimplementar a configuração da API atualizada em cada região separadamente.

O que se segue?