Como disponibilizar uma API do nome de domínio

Esta página mostra como exibir uma API a partir de um domínio personalizado que você tem, por exemplo, example.com.

Uma alternativa para o uso do seu próprio nome de domínio é usar um gerenciado pelo Google. Para saber mais informações, consulte Como usar um domínio gerenciado pelo Google.

Antes de começar

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

Siga as instruções da guia apropriada.

Compute Engine

A maneira recomendada para disponibilizar uma API a partir de instâncias do Compute Engine é usar um balanceador de carga em um grupo de instâncias. É preciso reservar um endereço IP externo para o nome de domínio e usá-lo para o balanceador de carga.

Para disponibilizar uma API a partir de um nome de domínio:

  1. Reserve no mínimo um endereço IP externo estático no seu projeto:

    Acessar a página "Endereços IP externos"

    1. Atribua o nome que quiser ao endereço IP reservado.
    2. Em Tipo, clique em Global.
    3. Em Anexado a, clique em Nenhum. O endereço IP será anexado posteriormente a um balanceador de carga
  2. Acesse sua conta do provedor de domínio e edite as configurações do domínio. Crie um registro A que contenha o nome da API (por exemplo, myapi.example.com) com o endereço IP externo no respectivo campo de dados
  3. Crie um grupo de instâncias que inclua as instâncias que executam sua API e o Extensible Service Proxy (ESP:

    Acessar a página "Criar um novo grupo de instâncias"

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

    Acessar a 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 de back-end
    2. Atribua o nome e a descrição que quiser para essa configuração de serviços de back-end.
    3. No campo Protocolo, selecione o protocolo que quer acessar por meio do balanceador de carga, HTTP ou HTTPS.
    4. Na lista de Grupos de instâncias, selecione seu grupo de instâncias.
    5. No campo Números de portas, insira 8080.
    6. Clique em Verificação de integridade para configurar as verificações de integridade:
      • Digite um nome para a configuração da verificação de integridade.
      • Atribua a porta 8080.
      • Para aceitar os valores padrão restantes, clique em Salvar.
    7. Por enquanto, aceite os padrões para o restante da configuração. Você poderá fazer as alterações necessárias posteriormente, como adicionar portas.
    8. Não é necessário definir nada em Regras de host e de caminho, você pode encaminhar tudo para sua API de back-end usando os filtros padrão Todos sem correspondência. Isso significa que todo o tráfego para o balanceador de carga será direcionado para a API na porta 8080 (a porta padrão), conforme definido nas etapas anteriores.
    9. Clique em Configuração de front-end.
      Configuração de front-end
      • No campo Protocolo, selecione o protocolo que quer acessar por meio do balanceador de carga, HTTP ou HTTPS.
      • Na lista IP, clique no endereço IP externo que você criou anteriormente.
      • Para o protocolo HTTPS, é necessário usar SSL. Na lista Certificado, clique no certificado desejado.
      • Opcionalmente, se você quiser oferecer suporte a outro protocolo, clique em Adicionar IP e porta de 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: uma marca de seleção será exibida ao lado de cada componente da configuração. A falta da marca de seleção significa que você não concluiu a configuração.
    11. Depois que as alterações se propagarem no DNS, as solicitações serão enviadas para a API por meio do balanceador de carga.

GKE

Para exibir uma API em um domínio para o Google Kubernetes Engine (GKE), exponha o ESP como um serviço usando o endereço IP externo retornado para as configurações de DNS do domínio. O GKE faz o balanceamento de carga automaticamente para você.

Para expor a API como um serviço:

  1. Configure um serviço do Kubernetes para os back-ends da API, caso ainda não tenha um. Crie um arquivo de configuração de serviço, service.yaml, de conteúdo semelhante a este:
                apiVersion: v1
                kind: Service
                metadata:
                  name: echo
                spec:
                  ports:
                  - port: 80
                    targetPort: 8081
                    protocol: TCP
                  selector:
                    app: echo-app
                  type: LoadBalancer
                  
    • Altere o rótulo selector para corresponder aos rótulos de back-end. Neste exemplo, app: echo-app.
    • Certifique-se de que targetPort corresponde à porta usada pelo ESP, configurada nos back-ends da API. O ESP usa a porta 8081 por padrão.
  2. Implante o serviço do Kubernetes:
                kubectl apply -f service.yaml
                
  3. Veja o endereço IP externo atribuído ao serviço exposto:
                kubectl get services
                
    A saída mostra 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 temporário para estático.

    Acessar a página "Endereços IP externos"

    1. Selecione seu endereço IP externo na lista.
    2. Na lista Tipo, clique em Estático.
  5. Acesse sua conta do provedor de domínio e edite as configurações do domínio. Crie um registro A que contenha o nome da API (por exemplo, myapi.example.com) com o endereço IP externo no respectivo campo de dados.

A seguir