Como configurar o DNS no domínio cloud.goog

Depois que a API for implantada, os usuários da API precisarão acessá-la por meio de um nome de domínio e não de um endereço IP. Você pode:

  • Configure .endpoints.PROJECT_ID.cloud.goog como o nome do domínio (em que PROJECT_ID é o ID do projeto do Google Cloud).
  • Ou registre seu próprio nome de domínio, como example.com, o que exige:
    • a configuração de servidores de nome de DNS (ou o uso do Cloud DNS);
    • a atualização de endereços de registro;
    • a criação e manutenção de registros de DNS.

    Se você já tiver uma infraestrutura de DNS ou quiser registrar seu próprio nome de domínio, consulte Como disponibilizar uma API a partir do nome do domínio para mais informações.

Esta página descreve como configurar as APIs Cloud Endpoints para usar .endpoints.PROJECT_ID.cloud.goog como nome de domínio. As etapas de configuração nesta página são aplicáveis às APIs que usam a OpenAPI em execução no Compute Engine, Kubernetes Engine ou Kubernetes. O nome de domínio .endpoints.PROJECT_ID.cloud.goog não é compatível com APIs em execução no App Engine. Para APIs no Google App Engine, recomendamos que você use PROJECT_ID.appspot.com como o nome do serviço do Endpoints. Quando você implanta a API no App Engine, uma entrada DNS com um nome no formato PROJECT_ID.appspot.com é criada automaticamente.

O domínio .cloud.goog é gerenciado pelo Google e compartilhado pelos clientes do Google Cloud. Como os projetos do Google Cloud têm a garantia de IDs exclusivos no mundo todo, um nome de domínio no formato .endpoints.PROJECT_ID.cloud.goog é exclusivo e pode ser usado como o nome de domínio da sua API. A configuração do nome de domínio .endpoints.PROJECT_ID.cloud.goog é opcional. Se preferir, é possível registrar seu próprio nome de domínio.

Pré-requisitos

Como ponto de partida, presumimos que você já criou sua API do Cloud Endpoints e a implantou no Compute Engine, no Google Kubernetes Engine ou no Kubernetes. Se precisar de uma API para testes, use um dos tutoriais que orientam sobre a configuração e implantação de uma API de amostra.

Como configurar DNS

O procedimento a seguir descreve como configurar o DNS para APIs Cloud Endpoints que usam .endpoints.[PROJECT_ID].cloud.goog como o nome do serviço do Endpoints em que [PROJECT_ID] representa o código do projeto do Google Cloud. Por conveniência, o procedimento se refere ao seu arquivo de configuração OpenAPI como openapi.yaml.

Para configurar o DNS:

  1. Abra openapi.yaml e adicione o campo x-google-endpoints ao arquivo, conforme mostrado no snippet a seguir:
        swagger: "2.0"
        host: "[API_NAME].endpoints.[PROJECT_ID].cloud.goog"
        x-google-endpoints:
        - name: "[API_NAME].endpoints.[PROJECT_ID].cloud.goog"
          target: "[IP_ADDRESS]"
    

    Normalmente, você configura o campo host e o campo x-google-endpoints.name para que sejam os mesmos. Quando você implanta a especificação da OpenAPI, o texto especificado no campo host é usado como nome do serviço do Endpoints.

  2. Substitua [API_NAME] pelo nome de sua API (por exemplo, bookstore ou my-cool-api).
  3. Substitua o [PROJECT_ID] pelo ID do projeto do Google Cloud.
  4. Substitua [IP_ADDRESS] por um endereço IPv4.

    Por exemplo, se você implanta seu serviço da API Endpoints em uma instância de máquina virtual do Compute Engine, é possível usar o IP externo dessa máquina virtual. Como alternativa, se você executa seu código em um grupo de instâncias de máquina virtual (ou pods do GKE) por trás de um balanceador de carga, é possível usar o endereço IP do balanceador de carga.

  5. Implante a nova especificação OpenAPI no Service Management usando o comando:
    gcloud endpoints services deploy openapi.yaml
    

Por exemplo, se o seguinte for especificado em um arquivo openapi.yaml:

    swagger: "2.0"
    host: "my-cool-api.endpoints.my-project-id.cloud.goog"
    x-google-endpoints:
    - name: "my-cool-api.endpoints.my-project-id.cloud.goog"
      target: "192.0.2.1"

Quando você implanta o openapi.yaml usando o comando gcloud anterior, o Service Management cria um registro A de DNS, my-cool-api.endpoints.my-project- id.cloud.goog, que resolve para o endereço IP de destino, 192.0.2.1. Talvez seja necessário esperar alguns minutos até que a nova configuração de DNS se propague.

A seguir