Publicar uma API a partir do seu nome de domínio

Esta página mostra como publicar uma API a partir de um domínio personalizado que lhe pertence, por exemplo, example.com.

Em alternativa à utilização do seu próprio nome de domínio, pode utilizar um nome de domínio gerido pela Google. Consulte o artigo Usar um domínio gerido pela Google para mais informações.

Antes de começar

Configure o projeto da API para usar o seu nome de domínio

Siga as instruções no separador adequado.

Compute Engine

A forma recomendada de publicar uma API a partir de instâncias do Compute Engine é usar um equilibrador de carga num grupo de instâncias. Tem de reservar um endereço IP externo para o nome do domínio e usar esse endereço IP externo para o balanceador de carga.

Para publicar a API a partir de um nome de domínio:

  1. Reserve, pelo menos, um endereço IP externo estático no seu projeto:

    Aceda à página Endereços IP externos

    1. Atribua qualquer nome que quiser ao endereço IP reservado
    2. Em Tipo, clique em Global.
    3. Em Anexado a, clique em Nenhum. Associa o endereço IP a um balanceador de carga mais tarde.
  2. Visite a conta do fornecedor de domínio e edite as definições do domínio. Tem de criar um registo A que contenha o nome da sua API, por exemplo, myapi.example.com com o endereço IP externo no respetivo campo de dados
  3. Crie um grupo de instâncias que inclua as instâncias que executam a sua API e o Proxy de serviço extensível (ESP:

    Aceda à página Criar um novo grupo de instâncias

    1. Atribua o nome que quiser ao grupo e adicione uma descrição.
    2. Na lista Zona, clique na zona usada pela sua instância da API.
    3. Na lista Definição da instância, clique em Selecionar instâncias existentes
    4. No campo Instâncias de VM, adicione a instância de VM que executa a API.
    5. Clique em Criar.
  4. Crie e configure um balanceador de carga HTTP(S):

    Aceda à página Criar um novo balanceador de carga HTTP(S)

    1. Clique em Definir um serviço de back-end > Criar ou selecionar um serviço de back-end.
      Configuração do back-end
    2. Atribua o nome e a descrição que quiser a esta configuração do serviço de back-end.
    3. No campo Protocolo, selecione o protocolo que quer suportar através do equilibrador de carga, HTTP ou HTTPS.
    4. Na lista Grupo de instâncias, clique no seu grupo de instâncias.
    5. No campo Portar números, introduza 8080.
    6. Clique em Verificação de funcionamento para configurar as verificações de funcionamento:
      • Introduza um nome para a configuração da verificação de estado.
      • Atribua a porta 8080.
      • Para aceitar os restantes valores predefinidos, clique em Guardar.
    7. Por agora, aceite as predefinições para o resto da configuração. Pode fazer alterações mais tarde, conforme necessário, como portas adicionais.
    8. Não tem de definir nada nas Regras de anfitrião e caminho. Pode encaminhar tudo para a sua API de back-end através dos filtros Qualquer sem correspondência predefinidos. Isto significa que todo o tráfego para o equilibrador de carga é direcionado para a API na porta 8080 (a porta predefinida), conforme definido nos passos anteriores.
    9. Clique em Configuração do front-end.
      Configuração da interface
      • No campo Protocolo, selecione o protocolo que quer suportar através do equilibrador de carga, HTTP ou HTTPS.
      • Na lista IP, clique no endereço IP externo que criou anteriormente.
      • Para o protocolo HTTPS, tem de usar o SSL. Na lista Certificado, clique no certificado pretendido.
      • Opcionalmente, se quiser suportar outro protocolo, clique em Adicionar IP e porta do front-end, especifique o protocolo, o mesmo endereço IP externo e uma porta diferente.
    10. Para criar o balanceador de carga totalmente configurado, clique em Criar. Se o botão Criar não estiver ativado, verifique os componentes que acabou de configurar: deve aparecer uma marca de verificação junto a cada um dos componentes de configuração. Uma marca de verificação em falta significa que não concluiu a configuração.
    11. Depois de as alterações de DNS serem propagadas, os pedidos são enviados para a sua API através do balanceador de carga.

GKE

Para publicar uma API num domínio para o Google Kubernetes Engine (GKE), tem de expôr o ESP como um serviço através do endereço IP externo devolvido para as definições de DNS do seu domínio. Tenha em atenção que o GKE faz automaticamente o equilíbrio de carga por si.

Para expor a sua API como um serviço:

  1. Se ainda não tiver um, configure um serviço Kubernetes para os seus back-ends de API. Crie um ficheiro de configuração do serviço, service.yaml, com conteúdo semelhante ao seguinte:
                apiVersion: v1
                kind: Service
                metadata:
                  name: echo
                spec:
                  ports:
                  - port: 80
                    targetPort: 8081
                    protocol: TCP
                  selector:
                    app: echo-app
                  type: LoadBalancer
                  
    • Altere a etiqueta selector para corresponder às etiquetas de back-end (app: echo-app neste exemplo)
    • Certifique-se de que o targetPort corresponde à porta usada pelo ESP configurado nos seus back-ends de API. O ESP usa a porta 8081 por predefinição.
  2. Implemente o serviço do Kubernetes:
                kubectl apply -f service.yaml
                
  3. Veja o endereço IP externo atribuído ao seu serviço exposto:
                kubectl get services
                
    O resultado apresenta um endereço EXTERNAL-IP semelhante ao seguinte:
                NAME         CLUSTER-IP     EXTERNAL-IP      PORT(S)    AGE
                hello-node   10.X.XXX.202   10X.XXX.XX.123   8080/TCP   1m
          
  4. Altere o IP externo gerado de efémero para estático.

    Aceda à página Endereços IP externos

    1. Selecione o seu endereço IP externo na lista.
    2. Na lista Tipo, clique em Estático.
  5. Visite a conta do fornecedor de domínio e edite as definições do domínio. Tem de criar um registo A que contenha o nome da sua API, por exemplo, myapi.example.com, com o endereço IP externo no respetivo campo de dados.

O que se segue?