Crear zonas DNS

En este documento se explica cómo configurar la resolución de DNS para un dominio nuevo en Google Distributed Cloud (GDC) aislado mediante zonas DNS. Usa una zona DNS para agrupar un conjunto de registros DNS y controlar si esos registros se pueden ver fuera de tu nube privada virtual (VPC) en GDC.

Este documento está dirigido a los administradores de plataformas y operadores de aplicaciones responsables de gestionar la resolución de DNS de su organización.

Puedes crear zonas de DNS públicas o privadas en tu entorno de GDC para que se ajusten a los requisitos de visibilidad y acceso de tus servicios:

  • En el caso de los servicios que requieren visibilidad y acceso a la red externa: configura una zona DNS pública para permitir que los usuarios y los sistemas que no estén en tu red accedan a tu servicio. Si tienes un sitio web, una API pública o cualquier servicio que deba ser accesible desde fuera de tu entorno de Google Cloud, necesitas una zona DNS pública para asignar tu nombre de dominio a las direcciones IP correspondientes.
  • Para los servicios que requieren un acceso seguro y restringido a sistemas internos: configura una zona DNS privada para ocultar tu nombre de dominio interno y restringir el acceso a tus servicios internos. Si tienes una aplicación, una base de datos o un microservicio internos que necesitan comunicarse con otros servicios internos usando solo protocolos seguros y direcciones IP privadas, necesitas una zona DNS privada para asignar tu nombre de dominio a las direcciones IP correspondientes. Una zona DNS privada asegura que estos servicios puedan encontrarse entre sí usando nombres de dominio internos sin exponer su existencia ni sus direcciones IP a la red externa. De esta forma, se mejora la seguridad y se simplifica la red interna.

Para obtener más información sobre la diferencia entre las zonas DNS públicas y privadas, consulta Tipos de zonas de Cloud DNS.

Antes de empezar

Para configurar zonas DNS en GDC y añadir registros, debes tener lo siguiente:

  • Un proyecto. Para obtener más información, consulta el artículo Crear un proyecto.
  • Los roles de identidad y acceso necesarios. Para gestionar las zonas DNS de tu proyecto, pide al administrador de gestión de identidades y accesos de proyectos que te conceda el rol Administrador de proyectos de DNS gestionado (managed-dns-project-admin).
  • Para usar la CLI de gdcloud, asegúrate de que la tienes instalada. Para obtener más información, consulta Instalar la CLI de gdcloud.
  • Si usas kubectl, un archivo kubeconfig para el servidor de la API global. Si aún no has generado este archivo, consulta la sección Iniciar sesión. Para obtener más información, consulta Servidores de APIs globales y de zona.

Crear una zona DNS pública

Después de crear una zona DNS pública, debe configurar la resolución de DNS de su red para que reenvíe las solicitudes a los servidores de nombres correspondientes.

Crear la zona

Puedes crear una zona DNS pública con la CLI gdcloud o la API de Kubernetes.

gdcloud

Para crear una zona DNS pública, usa el comando gdcloud dns managed-zones create:

gdcloud dns managed-zones create DNS_ZONE_NAME \
    --dns-name=DOMAIN_NAME \
    --visibility=PUBLIC \
    --description="DESCRIPTION" \
    [--project=PROJECT_NAMESPACE] \
    [--async]

Haz los cambios siguientes:

  • DNS_ZONE_NAME: el nombre de tu zona DNS.
  • DOMAIN_NAME: el nombre de dominio de tu zona DNS pública, como example.com.
  • DESCRIPTION: una descripción de tu zona DNS. Por ejemplo, Public DNS zone for example.com. Este campo es opcional.
  • PROJECT_NAMESPACE: el espacio de nombres de tu proyecto. Esta marca es opcional si has definido un proyecto predeterminado de forma global con gdcloud config set project.
  • --async: especifica este valor si quieres que el comando se devuelva inmediatamente en lugar de esperar a que se complete la operación. Puedes usar describe para comprobar el estado de la operación.

API

Usa la API de Kubernetes en GDC para crear una zona de DNS pública:

  1. Crea y aplica un recurso ManagedDNSZone para crear una zona DNS accesible desde fuera de GDC:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ManagedDNSZone
    metadata:
      name: DNS_ZONE_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      dnsName: DOMAIN_NAME
      description: DESCRIPTION
      visibility: PUBLIC
    EOF
    

    Haz los cambios siguientes:

    • GLOBAL_API_SERVER: la ruta de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de APIs globales y zonales. Si aún no has generado un archivo kubeconfig para el servidor de la API, consulta Iniciar sesión para obtener más información.
    • DNS_ZONE_NAME: el nombre de tu zona DNS.
    • PROJECT_NAMESPACE: el espacio de nombres de tu proyecto.
    • DOMAIN_NAME: el nombre de dominio de tu zona DNS pública, como example.com.
    • DESCRIPTION: una descripción de tu zona DNS. Por ejemplo, Public DNS zone for example.com. Este campo es opcional.

    Ten en cuenta que visibility distingue entre mayúsculas y minúsculas, y debe tener el valor exacto PUBLIC.

Configurar la resolución de DNS

En el caso de una zona DNS pública, debes configurar la resolución de DNS de tu red para que reenvíe las solicitudes de DNS de esa zona DNS a los servidores de nombres de GDC que alojan esa zona DNS.

  1. Obtén los servidores de nombres del ManagedDNSZone que has creado. Para este paso, debes usar kubectl.

    kubectl --kubeconfig GLOBAL_API_SERVER get manageddnszones DNS_ZONE_NAME -n PROJECT_NAMESPACE -oyaml
    

    Haz los cambios siguientes:

    • GLOBAL_API_SERVER: la ruta de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de APIs globales y zonales. Si aún no has generado un archivo kubeconfig para el servidor de la API, consulta Iniciar sesión para obtener más información.
    • DNS_ZONE_NAME: el nombre de tu zona DNS.
    • PROJECT_NAMESPACE: el espacio de nombres de tu proyecto. Esta marca es opcional si has definido un proyecto predeterminado de forma global con gdcloud config set project.

    Los servidores de nombres se mostrarán en el resultado del estado:

      apiVersion: networking.global.gdc.goog/v1
      kind: ManagedDNSZone
      metadata:
        name: DNS_ZONE_NAME
        namespace: PROJECT_NAMESPACE
      spec:
        dnsName: example.com
        description: "Public DNS zone for example.com"
        visibility: PUBLIC
      status:
      …
      nameServers:
        - ns.managed-dns-public.gdc1.staging.gpcdemolabs.com
    
  2. Actualiza la resolución de DNS de tu red para que reenvíe las solicitudes de DNS de la nueva zona. En este ejemplo, la resolución de DNS debe actualizarse para reenviar las solicitudes de example.com a ns.managed-dns-public.gdc1.staging.gpcdemolabs.com. Esta configuración presupone que el sistema de resolución ya tiene la configuración necesaria para reenviar correctamente las solicitudes de DNS de la zona DNS de la infraestructura de GDC gdc1.staging.gpcdemolabs.com.

Crear una zona DNS privada

Puedes crear una zona DNS privada mediante la CLI de gdcloud o la API de Kubernetes.

gdcloud

Para crear una zona DNS privada, usa el comando gdcloud dns managed-zones create:

gdcloud dns managed-zones create DNS_ZONE_NAME \
    --dns-name=DOMAIN_NAME \
    --visibility=PRIVATE \
    --description="DESCRIPTION" \
    [--project=PROJECT_NAMESPACE] \
    [--async]

Haz los cambios siguientes:

  • DNS_ZONE_NAME: el nombre de tu zona DNS.
  • DOMAIN_NAME: el nombre de dominio de tu zona DNS privada, como example.com.
  • DESCRIPTION: una descripción de tu zona DNS. Por ejemplo, Private DNS zone for example.com. Este campo es opcional.
  • PROJECT_NAMESPACE: el espacio de nombres de tu proyecto. Esta marca es opcional si has definido un proyecto predeterminado de forma global con gdcloud config set project.
  • --async: especifica este valor si quieres que el comando se devuelva inmediatamente en lugar de esperar a que se complete la operación. Puedes usar describe para comprobar el estado de la operación.

API

Usa la API de Kubernetes para crear una zona DNS privada:

  • Crea y aplica un recurso ManagedDNSZone para crear una zona DNS a la que solo se pueda acceder desde la VPC predeterminada del cliente:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ManagedDNSZone
    metadata:
      name: DNS_ZONE_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      dnsName: DOMAIN_NAME
      description: DESCRIPTION
      visibility: PRIVATE
    EOF
    

    Haz los cambios siguientes:

    • GLOBAL_API_SERVER: la ruta de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de APIs globales y zonales. Si aún no has generado un archivo kubeconfig para el servidor de la API, consulta Iniciar sesión para obtener más información.
    • DNS_ZONE_NAME: el nombre de tu zona DNS.
    • PROJECT_NAMESPACE: el espacio de nombres de tu proyecto.
    • DOMAIN_NAME: el nombre de dominio de tu zona DNS privada, como example.com.
    • DESCRIPTION: una descripción de tu zona DNS. Por ejemplo, Private DNS zone for example.com. Este campo es opcional.

    Ten en cuenta que visibility distingue entre mayúsculas y minúsculas, y debe tener el valor exacto PRIVATE.

Siguientes pasos