Configurar o DNS no domínio cloud.goog

Depois de a API ser implementada, os utilizadores da API têm de aceder à mesma através de um nome de domínio e não de um endereço IP. Pode:

  • Configure .endpoints.PROJECT_ID.cloud.goog como o nome do domínio (onde PROJECT_ID é o ID do seu projeto Google Cloud).
  • Em alternativa, registe o seu próprio nome de domínio, como example.com, o que implica:
    • Configurar servidores de nomes DNS (ou usar o Cloud DNS).
    • Atualizar as moradas do registo.
    • Criar e manter registos DNS.

    Se já tiver uma infraestrutura de DNS ou quiser registar o seu próprio nome de domínio, consulte o artigo Publicar uma API a partir do seu nome de domínio para mais informações.

Esta página descreve como configurar as APIs Cloud Endpoints para usar .endpoints.PROJECT_ID.cloud.goog como o nome do domínio. Os passos de configuração nesta página aplicam-se a APIs que usam o OpenAPI em execução no Compute Engine, no Google Kubernetes Engine ou no Kubernetes. O nome do domínio .endpoints.PROJECT_ID.cloud.goog não é suportado para APIs executadas no App Engine. Para APIs no App Engine, recomendamos que use PROJECT_ID.appspot.com como o nome do serviço Endpoints. Quando implementa a API no App Engine, é criada automaticamente uma entrada DNS com um nome no formato PROJECT_ID.appspot.com.

O domínio .cloud.goog é gerido pela Google e partilhado por Google Cloudclientes. Uma vez que Google Cloud os projetos têm a garantia de ter um ID do projeto globalmente único, um nome de domínio no formato .endpoints.PROJECT_ID.cloud.goog é único e pode ser usado como o nome de domínio da sua API. A configuração do nome do domínio .endpoints.PROJECT_ID.cloud.goog é opcional. Se preferir, pode registar o seu próprio nome de domínio.

Pré-requisitos

Como ponto de partida, esta página pressupõe que já criou a sua API Cloud Endpoints e a implementou no Compute Engine, no Google Kubernetes Engine ou no Kubernetes. Se precisar de uma API para testes, pode usar um dos tutoriais que explicam passo a passo como configurar e implementar uma API de exemplo.

Configurar o DNS

O procedimento seguinte descreve como configurar o DNS para APIs Cloud Endpoints que usam .endpoints.[PROJECT_ID].cloud.goog como o nome do serviço Endpoints, onde [PROJECT_ID] representa o ID do seu projeto Google Cloud. Por uma questão de conveniência, o procedimento refere-se ao seu ficheiro de configuração do OpenAPI como openapi.yaml.

Para configurar o DNS:

  1. Abra openapi.yaml e adicione o campo x-google-endpoints ao ficheiro, conforme mostrado no seguinte fragmento:
        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, configura o campo host e o campo x-google-endpoints.name para serem iguais. Quando implementa a especificação OpenAPI, o texto especificado no campo host é usado como o nome do serviço Endpoints.

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

    Por exemplo, se implementar o serviço da API Endpoints numa instância de máquina virtual do Compute Engine, pode usar o IP externo dessa máquina virtual. Em alternativa, se executar o código num grupo de instâncias de máquinas virtuais (ou pods do GKE) atrás de um equilibrador de carga, pode usar o endereço IP do equilibrador de carga.

  5. Implemente a nova especificação OpenAPI na gestão de serviços através do seguinte comando:
    gcloud endpoints services deploy openapi.yaml

Por exemplo, se o seguinte for especificado num ficheiro 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 implementa o openapi.yaml através do comando gcloud anterior, o Service Management cria um registo A de DNS, my-cool-api.endpoints.my-project-id.cloud.goog, que é resolvido para o endereço IP de destino, 192.0.2.1. Pode ter de aguardar alguns minutos para que a nova configuração de DNS seja propagada.

O que se segue?