Configurar un DNS en el dominio cloud.goog

Una vez implementada la API, los usuarios de tu API deberán acceder a ella mediante un nombre de dominio en vez de una dirección IP. Para hacerlo, tienes las alternativas siguientes:

  • Configura .endpoints.PROJECT_ID.cloud.goog como el nombre de dominio (donde PROJECT_ID es el ID de tu proyecto de Google Cloud).
  • O registra tu propio nombre de dominio, como example.com, que implica lo siguiente:
    • Configurar servidores de nombres DNS (o mediante Cloud DNS).
    • Actualizar direcciones de registro.
    • Crear y guardar registros DNS.

    Si ya tienes una infraestructura DNS, o quieres registrar tu propio nombre de dominio, consulta Cómo entregar una API desde tu nombre de dominio para obtener más información.

En esta página, se describe cómo configurar las API de Cloud Endpoints para usar .endpoints.PROJECT_ID.cloud.goog como nombre de dominio. Los pasos de configuración presentes en esta página se aplican a las API que usan OpenAPI y se ejecuten en Compute Engine, Google Kubernetes Engine o Kubernetes. El nombre de dominio .endpoints.PROJECT_ID.cloud.goog no es compatible con las API que se ejecutan en App Engine. Para las API en App Engine, recomendamos que utilices PROJECT_ID.appspot.com como el nombre del servicio de Endpoints. Cuando implementas la API en App Engine, se crea una entrada DNS con un nombre con el formato PROJECT_ID.appspot.com de forma automática.

Google administra el dominio .cloud.goog, y los clientes de Google Cloud lo comparten. Debido a que los proyectos de Google Cloud garantizan tener un ID del proyecto global único, el nombre de dominio en el formato .endpoints.PROJECT_ID.cloud.goog es único y puede usarse para la API. Configurar el nombre de dominio .endpoints.PROJECT_ID.cloud.goog es opcional. Si lo prefieres, puedes registrar tu propio nombre de dominio.

Requisitos previos

Como punto de partida, en esta página, se supone que ya has creado tu API de Cloud Endpoints y que la has implementado en Compute Engine, Google Kubernetes o Engine Kubernetes. Si necesitas una API para realizar pruebas, puedes usar uno de los instructivos que te guían sobre cómo configurar y, luego, implementar una API de muestra.

Configura un DNS

El siguiente procedimiento describe cómo configurar DNS para las API de Cloud Endpoints que usan .endpoints.[PROJECT_ID].cloud.goog como el nombre del servicio de Endpoints, donde [PROJECT_ID] representa tu ID de proyecto de Google Cloud. Por conveniencia, el procedimiento hace referencia a tu archivo de configuración de OpenAPI como openapi.yaml.

Para configurar DNS, haz lo siguiente:

  1. Abre openapi.yaml y agrega el campo x-google-endpoints al archivo como se muestra en el siguiente fragmento de código:
        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]"

    Por lo general, configuras el campo host y el campo x-google-endpoints.name para que sean iguales. Cuando implementas tu especificación de OpenAPI, el texto especificado en el campo host se usa como el nombre de tu servicio de Endpoints.

  2. Reemplaza [API_NAME] con el nombre de la API (por ejemplo, bookstore o my-cool-api).
  3. Reemplaza [PROJECT_ID] por tu ID del proyecto de Google Cloud.
  4. Reemplaza [IP_ADDRESS] con una dirección IPv4.

    Por ejemplo, si implementas tu servicio API de Endpoints en una instancia de máquina virtual de Compute Engine, puedes utilizar la IP externa de esa máquina virtual. Además, si ejecutas tu código en un grupo de instancias de máquinas virtuales (o pods de GKE) tras un balanceador de cargas, puedes utilizar la dirección IP del balanceador de cargas.

  5. Implementa tu nueva especificación OpenAPI en Service Management mediante el siguiente comando:
    gcloud endpoints services deploy openapi.yaml

Por ejemplo, si se especifica lo siguiente en el archivo 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"

Cuando implementas el openapi.yaml con el comando gcloud anterior, Service Management crea un registro A de DNS, my-cool-api.endpoints.my-project- id.cloud.goog, que da como resultado la dirección IP de destino, 192.0.2.1. Es posible que debas esperar unos minutos para que la nueva configuración de DNS se propague.

¿Qué sigue?