Establecer DNS zonal como predeterminado para nuevos proyectos


Este documento explica cómo actualizar su política DNS interna para usar DNS zonal para nuevos proyectos. El DNS zonal mejora la confiabilidad de las aplicaciones al aislar las interrupciones dentro de las zonas, evitando interrupciones en servicios críticos como la creación de instancias y la reparación automática.

Antes de comenzar

  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras 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

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

      Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .

Roles requeridos

Para obtener los permisos que necesita para ver el uso de DNS interno de toda la organización y actualizar la política predeterminada, solicite a su administrador que le otorgue las siguientes funciones de IAM:

  • Verifique la política DNS global predeterminada: Administrador de políticas de organización ( roles/orgpolicy.policyAdmin ) en la carpeta u organización
  • Determinar si una carpeta está lista para migrar a DNS zonal: Navegador ( roles/browser ) en la carpeta u organización

Para obtener más información sobre cómo otorgar roles, consulte Administrar el acceso a proyectos, carpetas y organizaciones .

Estos roles predefinidos contienen los permisos necesarios para ver el uso de DNS interno de toda la organización y actualizar la política predeterminada. Para ver los permisos exactos que se requieren, expanda la sección Permisos requeridos :

Permisos requeridos

Se requieren los siguientes permisos para ver el uso de DNS interno de toda la organización y actualizar la política predeterminada:

  • Establezca una restricción de política de organización: orgpolicy.*
  • Determine 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
  • Verifique los nombres de DNS globales y los metadatos de VM: compute.projects.get

Es posible que también pueda obtener estos permisos con roles personalizados u otros roles predefinidos .

Descripción general de la configuración

Cuando configura una política de organización para anular el tipo de DNS interno predeterminado, los proyectos recién creados utilizan DNS zonal de forma predeterminada. La política de la organización no afecta los proyectos existentes donde la API de Compute Engine ya está habilitada. Para cambiar proyectos existentes para que utilicen DNS zonal, consulte cambiar proyectos existentes a DNS zonal .

Recomendamos aplicar una política de DNS zonal a nivel de organización. Este enfoque garantiza que todos los proyectos nuevos creados dentro de su organización utilizarán DNS zonal, lo que mejora su confiabilidad y resiliencia. Sin embargo, es posible que deba eximir algunas carpetas de esta política para toda la organización. Es necesario eximir las carpetas cuando los nuevos proyectos dentro de esas carpetas dependen de proyectos existentes que son incompatibles con el DNS zonal.

El proceso de hacer cumplir una política de DNS zonal a nivel de organización incluye los siguientes pasos:

  1. Reúna una lista de proyectos y carpetas : recopile una lista de todos los proyectos y sus carpetas asociadas dentro de su organización.
  2. Identifique las carpetas a eximir : Identifique las carpetas que contienen los proyectos incompatibles identificados en el Paso 1. Estas carpetas deberán estar temporalmente exentas de la política DNS zonal.
  3. Establecer la política organizacional : aplique la política DNS zonal a nivel organizacional.
  4. Carpetas específicas exentas : aplique exenciones a las carpetas identificadas en el Paso 3. Esto les permite continuar usando DNS global mientras aborda los proyectos incompatibles dentro de ellas.

Este enfoque garantiza que los nuevos proyectos utilicen DNS zonal para mejorar la confiabilidad y, al mismo tiempo, se adaptan a las dependencias existentes en proyectos más antiguos que podrían no estar listos para una migración inmediata.

Limitaciones

Al habilitar nombres de DNS zonales en toda su organización, se aplican configuraciones de DNS zonales a instancias de otros servicios, como los siguientes:

Revise si sus aplicaciones utilizan alguno de estos servicios y utilice el análisis de consultas para identificar problemas de compatibilidad con DNS zonal para las carpetas y proyectos asociados con esas aplicaciones.

Compruebe si su organización utiliza DNS global de forma predeterminada

La configuración de DNS predeterminada para su organización depende de dos factores:

  • La fecha de creación de la organización :

    • Creado después del 6 de septiembre de 2018: su organización utiliza DNS zonal de forma predeterminada. No se necesita ninguna otra acción.
    • Creado antes del 6 de septiembre de 2018: su organización utiliza DNS global de forma predeterminada. Debería considerar migrar a DNS zonal.
  • La existencia y aplicación de una restricción de política de la organización :

    Incluso si su organización se creó antes del 6 de septiembre de 2018, es posible que un administrador haya aplicado una política para usar DNS zonal para todos los proyectos nuevos creados dentro de la organización. Para comprobar si existe dicha política, puede utilizar la consola de Google Cloud o la CLI de Google Cloud.

Consola

  1. Vaya a la página IAM y administración > Identidad y organización en la consola.

    Ir a Identidad y Organización

  2. Consulta la fecha de alta de la organización.

    Una captura de pantalla de la página de la consola de Identidad y organización que muestra la fecha de finalización del registro.

  3. Si su organización se creó antes del 6 de septiembre de 2018, verifique si una restricción de política de la organización establece el tipo de DNS predeterminado para todos los proyectos recién creados en DNS zonal.

    1. Vaya a la página IAM y administración > Políticas de la organización en la consola de Google Cloud.
    2. En el campo Filtro , ingrese constraints/compute.setNewProjectDefaultToZonalDNSOnly .
    3. Si la restricción está configurada, haga clic en el nombre Establece la configuración DNS interna para nuevos proyectos en Solo DNS zonal .
    4. En la página de detalles de la política , verifique el Estado .
      • Si el estado es Aplicado , entonces el tipo de DNS interno predeterminado es DNS zonal para todos los proyectos nuevos creados en la organización.
      • De lo contrario, el tipo de DNS predeterminado para el proyecto aún está determinado por el momento de creación de la organización.
    5. Si la restricción no se configuró para la organización, el tipo de DNS predeterminado para el proyecto lo determina la fecha de creación de la organización.

nube de gcloud

Utilice el comando organizations describe y el comando resource-manager org-policies list para determinar el tipo de DNS predeterminado para una organización.

  1. Verifique el valor de los metadatos creationTime de la organización.

    gcloud organizations describe ORGANIZATION_ID
    

    Reemplace ORGANIZATION_ID con el número de identificación de la organización o el nombre de dominio de la organización.

  2. Si su organización se creó antes del 6 de septiembre de 2018, determine si está configurada una restricción de política de la organización para establecer el tipo de DNS predeterminado para todos los proyectos recién creados en DNS zonal.

    gcloud resource-manager org-policies list --organization=ORGANIZATION_ID \
       --filter="constraints/compute"
    

    En el resultado, busque constraints/compute.setNewProjectDefaultToZonalDNSOnly .

    1. Si la restricción está presente y Status es Enforced , todos los proyectos nuevos creados en la organización utilizan DNS zonal de forma predeterminada.
    2. Si la restricción no está presente o no se aplica, el tipo de DNS predeterminado lo determina la fecha de creación de la organización, como se describe en el primer paso.

Determinar qué proyectos en una carpeta u organización usan DNS global

Para determinar qué proyectos utilizan DNS global, recomendamos usar BigQuery para crear una tabla que enumere los proyectos relativos a su organización y sus metadatos. Luego puede usar esta tabla para ejecutar una consulta.

  1. Crea un conjunto de datos de BigQuery .
  2. Exporta los metadatos de recursos de tu organización a una tabla de BigQuery .

    1. Asegúrese de que la API de Cloud Asset Inventory esté habilitada.
    2. Configure los permisos necesarios para utilizar la API de Cloud Asset Inventory.
    3. Utilice el siguiente comando CLI de gcloud 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
      

      Reemplace lo siguiente:

      • ORGANIZATION_ID : el número de identificación 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 estás exportando tus metadatos. Si la tabla no existe, BigQuery la crea.
  3. Vaya a la página de BigQuery en la consola de Google Cloud.

  4. Seleccione Redactar una nueva consulta .

  5. En el área de texto del editor de consultas, ingrese la siguiente consulta de GoogleSQL y luego haga 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
    

    Reemplace lo siguiente:

    • 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 para vmDnsSetting tienen DNS zonal configurado. De lo contrario, los proyectos utilizan DNS global de forma predeterminada.

  6. Opcional: para obtener una vista detallada de vmDnsSetting para cada proyecto, ingrese la siguiente consulta de GoogleSQL y luego haga 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 la preparación para la migración de una carpeta

Este paso utiliza un script bash y la tabla de BigQuery creada en la sección anterior para determinar la preparación para la migración de la carpeta.

  • La carpeta está lista si todos los proyectos no han realizado ninguna consulta que sea incompatible con el DNS zonal en los últimos 30 días.
  • Si una carpeta no está lista para la migración, el script responde con los ID del proyecto en la carpeta que impiden que la carpeta esté lista para la migración. Los proyectos en esta lista de resultados aún no son compatibles con el DNS zonal y requieren acciones adicionales.

Complete los siguientes pasos:

  1. Obtenga el ID de la carpeta. Si no conoce el ID de la carpeta, haga lo siguiente:
    1. En la consola de Google Cloud, ve a la página Recursos administrados .
    2. Aplique el filtro Name: FOLDER_NAME para obtener el ID de la carpeta.
  2. Consulta la tabla de BigQuery con los datos compute.Project assets exportados.

    Para obtener instrucciones sobre cómo crear la tabla de BigQuery, consulte Determinar qué proyectos en una carpeta u organización usan DNS global .

    Ingrese la siguiente consulta de GoogleSQL y luego haga clic en Ejecutar :

    SELECT
      SUBSTR(name,35) AS project_id,
    FROM PROJECT_ID.DATASET_ID.TABLE_NAME
    WHERE CONTAINS_SUBSTR(ancestors, 'FOLDER_NUMBER')
    

    Reemplace lo siguiente:

    • 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
  3. Copie la lista de ID del proyecto y guárdela en un archivo.

  4. Ejecute el siguiente script bash . El script recorre en iteración los ID del proyecto en el 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

Reemplace FILENAME con el nombre del archivo en el que guardó la lista de ID del proyecto.

Transmitir los resultados del análisis de preparación para la migración a los propietarios del proyecto:

  • Para las carpetas y proyectos que se pueden migrar de forma segura, notifique a los propietarios del proyecto que pueden comenzar a migrar proyectos listos .
  • Para las carpetas que contienen proyectos cuya migración no es segura, indique a los propietarios del proyecto que solucionen las consultas incompatibles .

Las carpetas exentas no están listas para migrar al DNS zonal

Para eximir una carpeta de la política de la organización, complete los siguientes pasos para configurar la opción de aplicación de la política a nivel de carpeta en Off .

  1. Inicie sesión en la consola de Google Cloud como superadministrador de Google Workspace o Cloud Identity.
  2. En la consola, vaya a la página Políticas de la organización .

    Ir a políticas de la organización

  3. Haga clic en Seleccionar y luego seleccione las carpetas que desea eximir de la política de la organización.

    La consola de Google Cloud muestra una lista de restricciones de políticas de la organización para esa carpeta en una o más páginas.

  4. Para encontrar la restricción de política de la organización que aplica el DNS zonal:

    1. Haga clic en Filtrar .
    2. Seleccione Nombre .
    3. Establezca el nombre del filtro en Establece la configuración DNS interna para nuevos proyectos en Solo DNS zonal .
  5. Haga clic en el nombre de la restricción de la política de la organización para abrir la página de detalles de la política .

  6. Haga clic en Editar .

  7. En la página Editar , seleccione Personalizar .

  8. En Cumplimiento , seleccione Desactivado para deshabilitar el cumplimiento de la restricción. Esto significa que el tipo de DNS interno predeterminado para todos los proyectos en la carpeta está determinado por la fecha de creación de la organización.

  9. Haga clic en Guardar .

Para obtener más información sobre cómo personalizar las restricciones de políticas de la organización, consulte Personalización de políticas para restricciones booleanas en la documentación de Resource Manager.

Aplicar DNS zonal de forma predeterminada para nuevos proyectos

Utilice los siguientes pasos para configurar la política de la organización para una carpeta u organización.

  1. Inicie sesión en la consola de Google Cloud como superadministrador de Google Workspace o Cloud Identity.

  2. En la consola, vaya a la página Políticas de la organización .

    Ir a políticas de la organización

  3. Seleccione la carpeta u organización para la que desea ver las políticas de la organización. La consola de Google Cloud muestra una lista de restricciones de políticas de la organización que están disponibles. La lista puede abarcar varias páginas.

  4. Para encontrar la política para aplicar DNS zonal, haga clic en Filtrar y seleccione Nombre , luego establezca el nombre del filtro en Establece la configuración DNS interna para nuevos proyectos en Solo DNS zonal .

  5. 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 cómo se aplica.

    De forma predeterminada, la aplicación no está definida para una carpeta u organización. Sin embargo, si una carpeta principal tiene una aplicación definida, la aplicación se hereda de la carpeta principal más cercana que tiene una aplicación definida. Para obtener más información, consulte Comprensión de la evaluación de jerarquía .

  6. Para personalizar la política de la organización, haga clic en Editar .

  7. En la página de edición, seleccione Personalizar .

  8. En Cumplimiento , seleccione Activado .

    Esto establece el tipo de DNS interno predeterminado para todos los proyectos nuevos de la organización en DNS zonal.

  9. Haga clic en Guardar .

Para validar el cambio de política de la organización, puede crear un nuevo proyecto en la carpeta u organización, luego crear e iniciar una instancia de VM y verificar si su VM está habilitada para DNS zonal .

Si se necesita un DNS global para resolver una consulta de nombre DNS integrada en su carga de trabajo, puede revertir este cambio a nivel de organización o carpeta deshabilitando la aplicación.

Volver a usar DNS global para una organización o carpeta

Para revertir una organización o carpeta al uso de DNS global, deje de aplicar la política organizacional para DNS zonal. Complete los siguientes pasos.

  1. Deshabilite las constraints/compute.setNewProjectDefaultToZonalDNSOnly en el nivel de organización o carpeta. Para obtener instrucciones sobre cómo modificar esta política, consulte Aplicar DNS zonal de forma predeterminada para nuevos proyectos .

    Establezca la aplicación de Establece la configuración DNS interna para nuevos proyectos en Solo DNS zonal en Desactivado .

  2. Si desea volver a utilizar DNS global para toda la organización, verifique que ninguna de las carpetas de la organización aplique las constraints/compute.setNewProjectDefaultToZonalDNSOnly .

  3. Para verificar que el DNS global esté configurado para sus proyectos e instancias, consulte Determinar qué proyectos en una carpeta u organización usan DNS global .

¿Qué sigue?