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, comoexample.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 congdcloud 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 usardescribepara comprobar el estado de la operación.
API
Usa la API de Kubernetes en GDC para crear una zona de DNS pública:
Crea y aplica un recurso
ManagedDNSZonepara 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 EOFHaz 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, comoexample.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
visibilitydistingue entre mayúsculas y minúsculas, y debe tener el valor exactoPUBLIC.
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.
Obtén los servidores de nombres del
ManagedDNSZoneque has creado. Para este paso, debes usarkubectl.kubectl --kubeconfig GLOBAL_API_SERVER get manageddnszones DNS_ZONE_NAME -n PROJECT_NAMESPACE -oyamlHaz 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 congdcloud 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.comActualiza 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.comans.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 GDCgdc1.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, comoexample.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 congdcloud 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 usardescribepara comprobar el estado de la operación.
API
Usa la API de Kubernetes para crear una zona DNS privada:
Crea y aplica un recurso
ManagedDNSZonepara 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 EOFHaz 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, comoexample.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
visibilitydistingue entre mayúsculas y minúsculas, y debe tener el valor exactoPRIVATE.