En este documento, se explica cómo configurar la resolución de DNS para un dominio nuevo en Google Distributed Cloud (GDC) aislado con el uso de zonas del DNS. Usa una zona del DNS para agrupar un conjunto de registros DNS y controlar si esos registros son visibles fuera de tu nube privada virtual (VPC) en GDC.
El público previsto para este documento son los administradores de plataformas y los operadores de aplicaciones responsables de administrar la resolución de DNS para su organización.
Puedes crear zonas del DNS públicas o privadas en tu entorno de GDC para que coincidan con los requisitos de visibilidad y acceso de tus servicios:
- Para los servicios que requieren visibilidad y acceso a la red externa, configura una zona del DNS pública para permitir que los usuarios y sistemas fuera de tu red accedan a tu servicio. Si tienes un sitio web, una API pública o cualquier servicio al que se deba acceder desde fuera de tu entorno de GDC Cloud, necesitas una zona del DNS pública para asignar tu nombre de dominio a las direcciones IP adecuadas.
- Para los servicios que requieren acceso seguro y restringido a los sistemas internos: Configura una zona del 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 del DNS privada para asignar tu nombre de dominio a las direcciones IP adecuadas. Una zona del DNS privada garantiza que estos servicios puedan encontrarse entre sí usando nombres de dominio internos sin exponer su existencia ni sus direcciones IP a la red externa. Esto mejora la seguridad y simplifica las herramientas de redes internas.
Para obtener más información sobre la diferencia entre las zonas del DNS públicas y privadas, consulta Tipos de zonas para Cloud DNS.
Antes de comenzar
Para configurar zonas del DNS en GDC y agregar registros, debes tener lo siguiente:
- Un proyecto existente Para obtener más información, consulta Crea un proyecto.
- Los roles de identidad y acceso necesarios. Para administrar las zonas del DNS de tu
proyecto, pídele al administrador de IAM del proyecto que te otorgue el rol de
administrador de proyectos de DNS administrado (
managed-dns-project-admin). - Para usar la gdcloud CLI, asegúrate de tenerla instalada. Para obtener más información, consulta Instala la gdcloud CLI.
- Si usas
kubectl, un archivo kubeconfig para el servidor de la API global. Si aún no generaste este archivo, consulta Accede. Para obtener más información, consulta Servidores de la API globales y zonales.
Crea una zona del DNS pública
Después de crear una zona del DNS pública, debes configurar el agente de resolución de DNS de tu red para que reenvíe las solicitudes a los servidores de nombres adecuados.
Crea la zona
Puedes crear una zona del DNS pública con la CLI de gdcloud o la API de Kubernetes.
gdcloud
Para crear una zona del 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]
Reemplaza lo siguiente:
DNS_ZONE_NAME: Es el nombre de tu zona del DNS.DOMAIN_NAME: Es el nombre de dominio de tu zona del DNS pública, comoexample.com.DESCRIPTION: Es una descripción para tu zona del DNS. Por ejemplo,Public DNS zone for example.comEste campo es opcional.PROJECT_NAMESPACE: Es el espacio de nombres de tu proyecto. Esta marca es opcional si configuraste un proyecto predeterminado de forma global congdcloud config set project.--async: Especifica esto si quieres que el comando se devuelva de inmediato, en lugar de esperar a que se complete la operación. Puedes usardescribepara verificar el estado de la operación.
API
Usa la API de Kubernetes en GDC para crear una zona del DNS pública:
Crea y aplica un recurso
ManagedDNSZonepara crear una zona del DNS a la que se pueda acceder 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 EOFReemplaza lo siguiente:
GLOBAL_API_SERVER: Es la ruta de acceso de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de la API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.DNS_ZONE_NAME: Es el nombre de tu zona del DNS.PROJECT_NAMESPACE: Es el espacio de nombres de tu proyecto.DOMAIN_NAME: Es el nombre de dominio de tu zona del DNS pública, comoexample.com.DESCRIPTION: Es una descripción para tu zona del DNS. Por ejemplo,Public DNS zone for example.comEste campo es opcional.
Ten en cuenta que
visibilitydistingue mayúsculas de minúsculas y debe tener el valor exactoPUBLIC.
Configura tu agente de resolución de DNS
Para una zona del DNS pública, debes configurar el agente de resolución de DNS en tu red para que reenvíe las solicitudes de DNS de esa zona del DNS a los servidores de nombres en GDC que alojan esa zona del DNS.
Recupera los servidores de nombres de la
ManagedDNSZoneque creaste. Debes usarkubectlpara este paso.kubectl --kubeconfig GLOBAL_API_SERVER get manageddnszones DNS_ZONE_NAME -n PROJECT_NAMESPACE -oyamlReemplaza lo siguiente:
GLOBAL_API_SERVER: Es la ruta de acceso de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de la API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.DNS_ZONE_NAME: Es el nombre de tu zona del DNS.PROJECT_NAMESPACE: Es el espacio de nombres de tu proyecto. Esta marca es opcional si configuraste 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 el agente de resolución de DNS en tu red para reenviar las solicitudes de DNS de la zona nueva. En este ejemplo, el agente de resolución de DNS debe actualizarse para reenviar las solicitudes de
example.comans.managed-dns-public.gdc1.staging.gpcdemolabs.com. En esta configuración, se supone que el agente de resolución ya tiene la configuración necesaria para reenviar de forma adecuada las solicitudes de DNS para la zona del DNS de infraestructura de GDC,gdc1.staging.gpcdemolabs.com.
Crea una zona del DNS privado
Puedes crear una zona del DNS privada con la CLI de gdcloud o la API de Kubernetes.
gdcloud
Para crear una zona del 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]
Reemplaza lo siguiente:
DNS_ZONE_NAME: Es el nombre de tu zona del DNS.DOMAIN_NAME: Es el nombre de dominio de tu zona del DNS privada, comoexample.com.DESCRIPTION: Es una descripción para tu zona del DNS. Por ejemplo,Private DNS zone for example.comEste campo es opcional.PROJECT_NAMESPACE: Es el espacio de nombres de tu proyecto. Esta marca es opcional si configuraste un proyecto predeterminado de forma global congdcloud config set project.--async: Especifica esto si quieres que el comando se devuelva de inmediato, en lugar de esperar a que se complete la operación. Puedes usardescribepara verificar el estado de la operación.
API
Usa la API de Kubernetes para crear una zona del DNS privada:
Crea y aplica un recurso
ManagedDNSZonepara crear una zona del 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 EOFReemplaza lo siguiente:
GLOBAL_API_SERVER: Es la ruta de acceso de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de la API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.DNS_ZONE_NAME: Es el nombre de tu zona del DNS.PROJECT_NAMESPACE: Es el espacio de nombres de tu proyecto.DOMAIN_NAME: Es el nombre de dominio de tu zona del DNS privada, comoexample.com.DESCRIPTION: Es una descripción para tu zona del DNS. Por ejemplo,Private DNS zone for example.comEste campo es opcional.
Ten en cuenta que
visibilitydistingue mayúsculas de minúsculas y debe tener el valor exactoPRIVATE.