En este documento se explica cómo actualizar tu política de DNS interna para usar DNS zonales en los nuevos proyectos. El DNS zonal mejora la fiabilidad de las aplicaciones al aislar las interrupciones en las zonas, lo que evita que se produzcan problemas en servicios críticos, como la creación de instancias y la reparación automática.
Antes de empezar
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Roles obligatorios
Para obtener los permisos que necesitas para ver el uso interno de DNS en toda la organización y actualizar la política predeterminada, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Comprueba la política de DNS global predeterminada:
Administrador de políticas de organización (
roles/orgpolicy.policyAdmin
) en la carpeta o la organización -
Determina si una carpeta está lista para migrar al DNS zonal:
Navegador (
roles/browser
) en la carpeta o la organización
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para ver el uso interno de DNS en toda la organización y actualizar la política predeterminada. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Se necesitan los siguientes permisos para ver el uso interno de DNS en toda la organización y actualizar la política predeterminada:
-
Define una restricción de política de organización:
orgpolicy.*
-
Determina si una carpeta está lista para migrar al DNS zonal:
-
resourcemanager.folders.get
-
resourcemanager.folders.list
-
resourcemanager.organizations.get
-
resourcemanager.projects.get
-
resourcemanager.projects.list
-
-
Comprueba los nombres de DNS globales y los metadatos de la VM:
compute.projects.get
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Descripción general de la configuración
Cuando configuras una política de organización para anular el tipo de DNS interno predeterminado, los proyectos que se creen a partir de ese momento usarán DNS zonales de forma predeterminada. La política de organización no afecta a los proyectos en los que la API de Compute Engine ya está habilitada. Para cambiar los proyectos que ya tengas para que usen DNS zonales, consulta la sección sobre cómo cambiar proyectos para que usen DNS zonales.
Recomendamos aplicar una política de DNS zonal a nivel de organización. De esta forma, todos los proyectos nuevos que se creen en tu organización usarán DNS zonales, lo que mejorará su fiabilidad y resiliencia. Sin embargo, es posible que tengas que excluir algunas carpetas de esta política de toda la organización. Es necesario excluir carpetas cuando los nuevos proyectos de esas carpetas dependan de proyectos que no sean compatibles con el DNS zonal.
El proceso para aplicar una política de DNS zonal a nivel de organización incluye los siguientes pasos:
- Recopilar una lista de proyectos y carpetas: compila una lista de todos los proyectos y sus carpetas asociadas de tu organización.
- Identifica las carpetas que quieres excluir: localiza las carpetas que contienen los proyectos incompatibles identificados en el paso 1. Estas carpetas deberán estar exentas temporalmente de la política de DNS de zona.
- Define la política de la organización: aplica la política de DNS zonal a nivel de organización.
- Eximir carpetas específicas: aplica exenciones a las carpetas identificadas en el paso 3. De esta forma, podrán seguir usando el DNS global mientras solucionas los proyectos incompatibles.
De esta forma, los nuevos proyectos utilizan el DNS zonal para mejorar la fiabilidad, al tiempo que se adaptan a las dependencias de los proyectos antiguos que no estén listos para migrar de inmediato.
Limitaciones
Si habilitas los nombres de DNS zonales en toda tu organización, se aplicarán los ajustes de DNS zonales a las instancias de otros servicios, como los siguientes:
- Entorno flexible de App Engine, Google Kubernetes Engine y contenedores que se ejecutan en Compute Engine
- Cloud SQL, Cloud Run functions y Batch
- Dataproc y Dataflow
Comprueba si tus aplicaciones usan alguno de estos servicios y usa el análisis de consultas para identificar problemas de compatibilidad con el DNS zonal en las carpetas y los proyectos asociados a esas aplicaciones.
Comprobar si tu organización usa DNS global de forma predeterminada
La configuración de DNS predeterminada de tu organización depende de dos factores:
La fecha de creación de la organización:
- Creadas después del 6 de septiembre del 2018: tu organización usa el DNS zonal de forma predeterminada. No es necesario hacer nada más.
- Creadas antes del 6 de septiembre del 2018: tu organización usa el DNS global de forma predeterminada. Deberías plantearte migrar a DNS zonales.
La existencia y la aplicación de una restricción de política de organización:
Aunque tu organización se haya creado antes del 6 de septiembre del 2018, es posible que un administrador haya aplicado una política para usar DNS zonales en todos los proyectos nuevos creados en la organización. Para comprobar si existe una política de este tipo, puedes usar la consola de Google Cloud o la CLI de Google Cloud.
Consola
En la consola, ve a la página IAM y administración>Identidad y organización.
Comprueba la fecha de registro de la organización.
Si tu organización se creó antes del 6 de septiembre del 2018, comprueba si una restricción de política de organización define el tipo de DNS predeterminado para todos los proyectos creados recientemente como DNS de zona.
- Ve a la página IAM y administración>Políticas de la organización en la Google Cloud consola.
- En el campo Filter, introduce
constraints/compute.setNewProjectDefaultToZonalDNSOnly
. - Si la restricción está configurada, haz clic en el nombre Define la configuración de DNS interna de los proyectos nuevos como "Solo DNS zonal".
- En la página Detalles de la política, comprueba el Estado.
- Si el estado es Aplicada, el tipo de DNS interno predeterminado es el DNS zonal para todos los proyectos nuevos creados en la organización.
- De lo contrario, el tipo de DNS predeterminado del proyecto se sigue determinando en función de la hora de creación de la organización.
- Si la restricción no se ha configurado para la organización, el tipo de DNS predeterminado del proyecto se determina en función de la fecha de creación de la organización.
gcloud
Usa el comando
organizations describe
y el comandoresource-manager org-policies list
para determinar el tipo de DNS predeterminado de una organización.Comprueba el valor de los metadatos de la organización
creationTime
.gcloud organizations describe ORGANIZATION_ID
Sustituye ORGANIZATION_ID por el número de ID de la organización o por el nombre de dominio de la organización.
Si tu organización se creó antes del 6 de septiembre del 2018, determina si se ha configurado una restricción de política de organización para definir el tipo de DNS predeterminado de todos los proyectos recién creados como DNS de zona.
gcloud resource-manager org-policies list --organization=ORGANIZATION_ID \ --filter="constraints/compute"
En el resultado, busca
constraints/compute.setNewProjectDefaultToZonalDNSOnly
.- Si la restricción está presente y
Status
esEnforced
, todos los proyectos nuevos creados en la organización usarán DNS zonal de forma predeterminada. - Si la restricción no está presente o no se aplica, el tipo de DNS predeterminado se determina en función de la fecha de creación de la organización, tal como se describe en el primer paso.
- Si la restricción está presente y
Determinar qué proyectos de una carpeta o una organización usan DNS global
Para determinar qué proyectos usan DNS global, te recomendamos que uses BigQuery para crear una tabla que muestre los proyectos relativos de tu organización y sus metadatos. Después, puede usar esta tabla para ejecutar una consulta.
- Crea un conjunto de datos de BigQuery.
Exporta los metadatos de los recursos de tu organización a una tabla de BigQuery.
- Asegúrate de que la API Cloud Asset Inventory esté habilitada.
- Configura los permisos necesarios para usar la API Cloud Asset Inventory.
Usa el siguiente comando de gcloud CLI para exportar el recurso
compute.googleapis.com/Project
:gcloud asset export \ --content-type resource \ --organization 'ORGANIZATION_ID' \ --bigquery-table 'projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME' \ --asset-types='compute.googleapis.com/Project' \ --output-bigquery-force
Haz los cambios siguientes:
- ORGANIZATION_ID: número de ID de la organización
- PROJECT_ID: el ID del proyecto
- DATASET_ID: el nombre del conjunto de datos de BigQuery
- TABLE_NAME: la tabla a la que vas a exportar los metadatos. Si la tabla no existe, BigQuery la crea.
Ve a la BigQuery en la consola deGoogle Cloud Google Cloud.
Selecciona
Redactar nueva consulta.En el área de texto del editor de consultas, introduce la siguiente consulta de GoogleSQL y, a continuación, haz clic en
Ejecutar.SELECT JSON_VALUE(SAFE.PARSE_JSON(resource.data).vmDnsSetting) AS vmDnsSetting, count(*) as project_count FROM PROJECT_ID.DATASET_ID.TABLE_NAME GROUP BY 1
Haz los cambios siguientes:
- PROJECT_ID: el ID del proyecto
- DATASET_ID: el nombre del conjunto de datos de BigQuery
- TABLE_NAME: la tabla que contiene los metadatos exportados del paso 2.
Los proyectos con el valor
ZONAL_ONLY
paravmDnsSetting
tienen configurado el DNS zonal. De lo contrario, los proyectos usarán el DNS global de forma predeterminada.Opcional: Para ver información detallada sobre el
vmDnsSetting
de cada proyecto, introduce la siguiente consulta de GoogleSQL y haz clic en Ejecutar.SELECT SUBSTR(name,35) as project_id, JSON_VALUE(SAFE.PARSE_JSON(resource.data).vmDnsSetting) AS vmDnsSetting FROM PROJECT_ID.DATASET_ID.TABLE_NAME
Determinar si una carpeta está lista para la migración
En este paso se usa una secuencia de comandos
bash
y la tabla de BigQuery creada en la sección anterior para determinar si la carpeta está lista para la migración.- La carpeta estará lista si todos los proyectos no han hecho ninguna consulta incompatible con el DNS zonal en los últimos 30 días.
- Si una carpeta no está lista para la migración, la secuencia de comandos responde con los IDs de proyecto de la carpeta que impiden que esté lista para la migración. Los proyectos de esta lista de resultados aún no son compatibles con el DNS zonal y requieren que se tomen medidas adicionales.
Este agente debe seguir estos pasos:
- Obtén el ID de la carpeta. Si no sabes cuál es el ID de la carpeta, haz lo siguiente:
- En la Google Cloud consola, ve a la página Recursos gestionados.
- Aplica el filtro
Name:FOLDER_NAME
para obtener el ID de la carpeta.
Consulta la tabla de BigQuery con los datos de
compute.Project assets
exportados.Para obtener instrucciones sobre cómo crear la tabla de BigQuery, consulta el artículo Determinar qué proyectos de una carpeta o una organización usan DNS global.
Introduce la siguiente consulta de GoogleSQL y haz clic en
Ejecutar:SELECT SUBSTR(name,35) AS project_id, FROM PROJECT_ID.DATASET_ID.TABLE_NAME WHERE CONTAINS_SUBSTR(ancestors, 'FOLDER_NUMBER')
Haz los cambios siguientes:
- PROJECT_ID: el ID del proyecto
- DATASET_ID: el nombre del conjunto de datos de BigQuery
- TABLE_NAME: la tabla que contiene los metadatos exportados
- FOLDER_NUMBER: el número de ID de la carpeta
Copia la lista de IDs de proyecto y guárdala en un archivo.
Ejecuta la siguiente secuencia de comandos
bash
. La secuencia de comandos itera por los IDs de proyecto del archivo guardado para determinar si una carpeta está lista para la migración.
#!/bin/bash inaccessible_projects=() unready_projects=() for project in $(cat ~/FILENAME | tr '\n' ' '); do echo -e "Checking project $project..." ERROR=`curl -s --request POST "https://monitoring.googleapis.com/v3/projects/$project/timeSeries:query" -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Accept: application/json" -H "Content-Type: application/json" --data '{"query":"fetch compute.googleapis.com/Location | metric '"'"'compute.googleapis.com/global_dns/request_count'"'"' | filter metric.zonal_dns_readiness = '"'"'zonal_dns_risky'"'"' | every 30d | within 30d"}' --compressed | jq --raw-output '.error'` if ! [[ "$ERROR" -eq "null" ]]; then inaccessible_projects+=($project) continue fi QUERY_COUNT=`curl -s --request POST "https://monitoring.googleapis.com/v3/projects/$project/timeSeries:query" -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Accept: application/json" -H "Content-Type: application/json" --data '{"query":"fetch compute.googleapis.com/Location | metric '"'"'compute.googleapis.com/global_dns/request_count'"'"' | filter metric.zonal_dns_readiness = '"'"'zonal_dns_risky'"'"' | every 30d | within 30d"}' --compressed | jq --raw-output '.timeSeriesData[0].pointData[0].values[0].int64Value'` if [[ "$QUERY_COUNT" -ne "null" ]] && [[ "$QUERY_COUNT" -ne "0" ]]; then unready_projects+=($project) fi done error_len=${#inaccessible_projects[@]} unready_len=${#unready_projects[@]} echo -e "$error_len projects were inaccessible" echo -e "$unready_len projects were not ready for migration" if [ $error_len -ne 0 ]; then echo "Unable to access the following projects:" for project in "${inaccessible_projects[@]}"; do echo "$project" done fi if [ $unready_len -ne 0 ]; then echo "The following projects are not ready for migration:" for project in "${unready_projects[@]}"; do echo "$project" done fi if (( $error_len + $unready_len > 0 )); then echo "This folder is NOT ready for gDNS -> zDNS migration." else echo "This folder is ready for gDNS -> zDNS migration." fi
Sustituye FILENAME por el nombre del archivo en el que has guardado la lista de IDs de proyecto.
Comunica los resultados del análisis de preparación para la migración a los propietarios del proyecto:
- En el caso de las carpetas y los proyectos que se pueden migrar sin problemas, notifica a los propietarios de los proyectos que pueden empezar a migrar los proyectos listos.
- En el caso de las carpetas que contengan proyectos que no se puedan migrar de forma segura, indica a los propietarios de los proyectos que corrijan las consultas incompatibles.
Carpetas exentas que no están listas para migrar al DNS zonal
Para excluir una carpeta de la política de la organización, sigue estos pasos para definir la opción de aplicación de la política a nivel de carpeta como
Off
.- Inicia sesión en la Google Cloud consola como superadministrador de Google Workspace o Cloud Identity.
En la consola, ve a la página Políticas de la organización.
Haz clic en Seleccionar y, a continuación, selecciona las carpetas que quieras excluir de la política de la organización.
La consola muestra una lista de restricciones de políticas de la organización de esa carpeta en una o varias páginas. Google Cloud
Para encontrar la restricción de la política de organización que aplica el DNS zonal, sigue estos pasos:
- Haz clic en Filtrar.
- Selecciona Nombre.
- Asigna el nombre Sets the internal DNS setting for new projects to Zonal DNS Only (Define la configuración de DNS interna de los nuevos proyectos como Solo DNS zonal).
Haz clic en el nombre de la restricción de la política de la organización para abrir la página Detalles de la política.
Haz clic en Editar.
En la página Editar, selecciona Personalizar.
En Implementación obligatoria, selecciona No para inhabilitar la implementación obligatoria de la restricción. Esto significa que el tipo de DNS interno predeterminado de todos los proyectos de la carpeta se determina en función de la fecha de creación de la organización.
Haz clic en Guardar.
Para obtener más información sobre cómo personalizar las restricciones de las políticas de organización, consulta el artículo Personalizar políticas con restricciones booleanas de la documentación de Resource Manager.
Aplicar el DNS zonal de forma predeterminada en los proyectos nuevos
Sigue estos pasos para definir la política de organización de una carpeta o una organización.
Inicia sesión en la Google Cloud consola como superadministrador de Google Workspace o Cloud Identity.
En la consola, ve a la página Políticas de la organización.
Selecciona la carpeta o la organización de la que quieras ver las políticas. La consola Google Cloud muestra una lista de las restricciones de políticas de organización disponibles. La lista puede ocupar varias páginas.
Para encontrar la política que aplica el DNS zonal, haz clic en Filtrar y selecciona Nombre. A continuación, asigna el nombre de filtro Define la configuración de DNS interno de los proyectos nuevos como Solo DNS zonal.
Haga clic en el nombre de la política para ver sus detalles.
La página de detalles de la política proporciona información sobre la restricción y sobre cómo se aplica.
De forma predeterminada, la implementación no está definida en las carpetas ni en las organizaciones. Sin embargo, si una carpeta superior tiene una aplicación definida, la aplicación se hereda de la carpeta superior más cercana que tenga una aplicación definida. Para obtener más información, consulta Información sobre la evaluación de la jerarquía.
Para personalizar la política de la organización, haz clic en Editar.
En la página de edición, selecciona Personalizar.
En Implementación obligatoria, selecciona Activada.
De esta forma, se define el tipo de DNS interno predeterminado para todos los proyectos nuevos de la organización como DNS zonal.
Haz clic en Guardar.
Para validar el cambio en la política de organización, puedes crear un proyecto en la carpeta o la organización, crear e iniciar una instancia de VM y comprobar si la VM tiene habilitado el DNS zonal.
Si se necesita un DNS global para resolver una consulta de nombre de DNS integrada en tu carga de trabajo, puedes revertir este cambio a nivel de organización o de carpeta inhabilitando la aplicación.
Volver a usar el DNS global de una organización o una carpeta
Para volver a usar el DNS global en una organización o una carpeta, detén la aplicación de la política de organización del DNS zonal. Sigue estos pasos.
Inhabilita la política de organización
constraints/compute.setNewProjectDefaultToZonalDNSOnly
a nivel de organización o de carpeta. Para obtener instrucciones sobre cómo modificar esta política, consulta Aplicar DNS zonales de forma predeterminada a los proyectos nuevos.Define el valor de Sets the internal DNS setting for new projects to Zonal DNS Only (Define el ajuste de DNS interno de los nuevos proyectos como Solo DNS zonal) en Off (Desactivado).
Si quieres volver a usar el DNS global en toda la organización, comprueba que ninguna de las carpetas de la organización aplique la política de la organización
constraints/compute.setNewProjectDefaultToZonalDNSOnly
.Para comprobar que el DNS global está configurado en tus proyectos e instancias, consulta Determinar qué proyectos de una carpeta o una organización usan el DNS global.
Siguientes pasos
- Los proyectos que ya usen DNS global deben migrarse por separado. Para obtener más información, consulta Actualizar los proyectos para usar DNS zonales.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-11 (UTC).
-