Impostare il DNS di zona come predefinito per i nuovi progetti


Questo documento spiega come aggiornare il criterio DNS interno per utilizzare il DNS di zona per i nuovi progetti. Il DNS a livello di zona migliora l'affidabilità delle applicazioni isolando gli interruzioni all'interno delle zone, impedendo interruzioni di servizi critici come la creazione di istanze e la riparazione automatica.

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso a servizi e API. Google Cloud Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    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. Install the Google Cloud CLI, then initialize it by running the following command:

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

      Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Per ulteriori informazioni, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione Google Cloud sull'autenticazione.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per visualizzare l'utilizzo del DNS interno a livello di organizzazione e aggiornare il criterio predefinito, chiedi all'amministratore di concederti i seguenti ruoli IAM:

  • Controlla il criterio DNS globale predefinito: Amministratore criteri organizzazione (roles/orgpolicy.policyAdmin) nella cartella o nell'organizzazione
  • Determina se una cartella è pronta per la migrazione al DNS di zona: Browser (roles/browser) nella cartella o nell'organizzazione

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per visualizzare l'utilizzo del DNS interno a livello di organizzazione e aggiornare il criterio predefinito. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per visualizzare l'utilizzo del DNS interno a livello di organizzazione e aggiornare la policy predefinita sono necessarie le seguenti autorizzazioni:

  • Imposta un vincolo dei criteri dell'organizzazione: orgpolicy.*
  • Determina se una cartella è pronta per la migrazione al DNS di zona:
    • resourcemanager.folders.get
    • resourcemanager.folders.list
    • resourcemanager.organizations.get
    • resourcemanager.projects.get
    • resourcemanager.projects.list
  • Controlla i nomi DNS globali e i metadati della VM: compute.projects.get

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Panoramica della configurazione

Quando imposti un criterio dell'organizzazione per eseguire l'override del tipo DNS interno predefinito, i nuovi progetti creati utilizzano il DNS di zona per impostazione predefinita. Il criterio dell'organizzazione non influisce sui progetti esistenti in cui l'API Compute Engine è già abilitata. Per far sì che i progetti esistenti utilizzino il DNS di zona, consulta la sezione Passare al DNS di zona per i progetti esistenti.

Ti consigliamo di applicare un criterio DNS di zona a livello di organizzazione. Questo approccio garantisce che tutti i nuovi progetti creati all'interno della tua organizzazione utilizzino il DNS di zona, migliorandone l'affidabilità e la resilienza. Tuttavia, potresti dover esentare alcune cartelle da questo criterio a livello di organizzazione. È necessario escludere le cartelle quando i nuovi progetti al loro interno dipendono da progetti esistenti incompatibili con il DNS di zona.

La procedura di applicazione di un criterio DNS zonale a livello di organizzazione include i seguenti passaggi:

  1. Raccogli un elenco di progetti e cartelle: compila un elenco di tutti i progetti e delle relative cartelle associate all'interno della tua organizzazione.
  2. Identifica le cartelle da esentare: individua le cartelle contenenti i progetti incompatibili identificati nel passaggio 1. Queste cartelle dovranno essere temporaneamente esenti dal criterio DNS zonale.
  3. Imposta il criterio dell'organizzazione: applica il criterio DNS zonale a livello di organizzazione.
  4. Esenta cartelle specifiche: applica le esenzioni alle cartelle identificate nel passaggio 3. In questo modo, possono continuare a utilizzare il DNS globale mentre risolvi i problemi relativi ai progetti incompatibili al loro interno.

Questo approccio garantisce che i nuovi progetti utilizzino il DNS di zona per una maggiore affidabilità, tenendo conto anche delle dipendenze esistenti dai progetti precedenti che potrebbero non essere pronti per la migrazione immediata.

Limitazioni

L'attivazione dei nomi DNS di zona nell'intera organizzazione applica le impostazioni DNS di zona alle istanze di altri servizi, ad esempio:

Controlla se le tue applicazioni utilizzano uno di questi servizi e utilizza l'analisi delle query per identificare i problemi di compatibilità con il DNS di zona per le cartelle e i progetti associati a queste applicazioni.

Verificare se la tua organizzazione utilizza il DNS globale per impostazione predefinita

L'impostazione DNS predefinita per la tua organizzazione dipende da due fattori:

  • La data di creazione dell'organizzazione:

    • Creato dopo il 6 settembre 2018: la tua organizzazione utilizza il DNS di zona per impostazione predefinita. Non sono necessari ulteriori interventi da parte tua.
    • Creata prima del 6 settembre 2018: la tua organizzazione utilizza il DNS globale per impostazione predefinita. Ti consigliamo di eseguire la migrazione al DNS di zona.
  • L'esistenza e l'applicazione di un vincolo dei criteri dell'organizzazione:

    Anche se la tua organizzazione è stata creata prima del 6 settembre 2 2018, un amministratore potrebbe aver applicato un criterio per l'utilizzo del DNS di zona per tutti i nuovi progetti creati all'interno dell'organizzazione. Per verificare se esiste un criterio di questo tipo, puoi utilizzare la console Google Cloud o Google Cloud CLI.

Console

  1. Vai alla pagina IAM e amministrazione>Identità e organizzazione nella console.

    Vai a Identità e organizzazione

  2. Controlla la data di registrazione dell'organizzazione.

    Uno screenshot della pagina della console Identità e organizzazione che mostra la data di completamento della registrazione.

  3. Se la tua organizzazione è stata creata prima del 6 settembre 2018, controlla se un vincolo delle norme dell'organizzazione imposta il tipo DNS predefinito per tutti i progetti appena creati su DNS di zona.

    1. Vai alla pagina IAM e amministrazione> Norme dell'organizzazione nella console Google Cloud.
    2. Nel campo Filtro, inserisci constraints/compute.setNewProjectDefaultToZonalDNSOnly.
    3. Se il vincolo è configurato, fai clic sul nome Imposta l'impostazione del DNS interno per i nuovi progetti per utilizzare solo il DNS di zona.
    4. Nella pagina Dettagli norme, controlla lo stato.
      • Se lo stato è Applicato, il tipo DNS interno predefinito è DNS di zona per tutti i nuovi progetti creati nell'organizzazione.
      • In caso contrario, il tipo DNS predefinito per il progetto viene comunque determinato dalla data di creazione dell'organizzazione.
    5. Se il vincolo non è stato configurato per l'organizzazione, il tipo DNS predefinito per il progetto è determinato dalla data di creazione dell'organizzazione.

gcloud

Utilizza il comando organizations describe e il comando resource-manager org-policies list per determinare il tipo DNS predefinito per un'organizzazione.

  1. Controlla il valore dei metadati creationTime dell'organizzazione.

    gcloud organizations describe ORGANIZATION_ID
    

    Sostituisci ORGANIZATION_ID con il numero di ID dell'organizzazione o con il nome di dominio dell'organizzazione.

  2. Se la tua organizzazione è stata creata prima del 6 settembre 2018, determina se è configurato un vincolo dei criteri dell'organizzazione per impostare il tipo DNS predefinito per tutti i progetti appena creati su DNS di zona.

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

    Nell'output, cerca constraints/compute.setNewProjectDefaultToZonalDNSOnly.

    1. Se il vincolo è presente e Status è Enforced, poiché tutti i nuovi progetti creati nell'organizzazione utilizzano il DNS di zona per impostazione predefinita.
    2. Se la limitazione non è presente o non viene applicata, il tipo DNS predefinito è determinato dalla data di creazione dell'organizzazione, come descritto nel primo passaggio.

Determinare quali progetti in una cartella o un'organizzazione utilizzano il DNS globale

Per determinare quali progetti utilizzano il DNS globale, ti consigliamo di utilizzare BigQuery per creare una tabella che elenchi i progetti relativi per la tua organizzazione e i relativi metadati. Puoi quindi utilizzare questa tabella per eseguire una query

  1. Crea un set di dati BigQuery.
  2. Esportare i metadati delle risorse per la tua organizzazione in una tabella BigQuery.

    1. Assicurati che l'API Cloud Asset Inventory sia abilitata.
    2. Configura le autorizzazioni obbligatorie per utilizzare l'API Cloud Asset Inventory.
    3. Utilizza il seguente comando gcloud CLI per esportare la risorsa 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
      

      Sostituisci quanto segue:

      • ORGANIZATION_ID: il numero ID dell'organizzazione
      • PROJECT_ID: l'ID progetto
      • DATASET_ID: il nome del set di dati BigQuery
      • TABLE_NAME: la tabella in cui esporti i metadati. Se la tabella non esiste, BigQuery la crea.
  3. Vai alla pagina BigQuery nella console Google Cloud.

  4. Seleziona Crea una nuova query.

  5. Nell'area di testo dell'editor di query, inserisci la seguente query GoogleSQL e poi fai clic su  Esegui.

    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
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto
    • DATASET_ID: il nome del set di dati BigQuery
    • TABLE_NAME: la tabella contenente i metadati esportati del passaggio 2.

    I progetti con il valore ZONAL_ONLY per vmDnsSetting hanno il DNS di zona configurato. In caso contrario, i progetti utilizzano il DNS globale per impostazione predefinita.

  6. (Facoltativo) Per una visualizzazione dettagliata del valore vmDnsSetting per ogni progetto, inserisci la seguente query GoogleSQL e poi fai clic su  Esegui.

    SELECT
      SUBSTR(name,35) as project_id,
      JSON_VALUE(SAFE.PARSE_JSON(resource.data).vmDnsSetting) AS vmDnsSetting
    FROM PROJECT_ID.DATASET_ID.TABLE_NAME
    

Determinare l'idoneità alla migrazione di una cartella

Questo passaggio utilizza uno script bash e la tabella BigQuery creata nella sezione precedente per determinare l'idoneità alla migrazione della cartella.

  • La cartella è pronta se tutti i progetti non hanno eseguito query incompatible with zonal DNS negli ultimi 30 giorni.
  • Se una cartella non è pronta per la migrazione, lo script risponde con gli ID progetto al suo interno che ne impediscono la preparazione. I progetti in questo elenco di risultati non sono ancora compatibili con il DNS zonale e richiedono un'azione aggiuntiva.

Completa i seguenti passaggi:

  1. Recupera l'ID cartella. Se non conosci l'ID cartella, procedi nel seguente modo:
    1. Nella console Google Cloud, vai alla pagina Risorse gestite.
    2. Applica il filtro Name:FOLDER_NAME per ottenere l'ID della cartella.
  2. Esegui una query sulla tabella BigQuery con i dati di compute.Project assets esportati.

    Per le istruzioni su come creare la tabella BigQuery, consulta Determinare quali progetti in una cartella o un'organizzazione utilizzano il DNS globale.

    Inserisci la seguente query GoogleSQL e poi fai clic su  Esegui:

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto
    • DATASET_ID: il nome del set di dati BigQuery
    • TABLE_NAME: la tabella contenente i metadati esportati
    • FOLDER_NUMBER: il numero dell'ID cartella
  3. Copia l'elenco di ID progetto e salvalo in un file.

  4. Esegui lo script bash seguente. Lo script esegue l'iterazione degli ID progetto nel file salvato per determinare se una cartella è pronta per la migrazione.

#!/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

Sostituisci FILENAME con il nome del file in cui hai salvato l'elenco di ID progetto.

Comunica i risultati dell'analisi di idoneità alla migrazione ai proprietari del progetto:

  • Per le cartelle e i progetti di cui è possibile eseguire la migrazione in sicurezza, informa i proprietari dei progetti che possono iniziare a eseguire la migrazione dei progetti pronti.
  • Per le cartelle che contengono progetti per i quali non è possibile eseguire la migrazione in sicurezza, invita i proprietari dei progetti a correggere le query incompatibili.

Cartelle esenti non pronte per la migrazione al DNS di zona

Per esentare una cartella dal criterio dell'organizzazione, completa i seguenti passaggi per impostare l'opzione di applicazione del criterio a livello di cartella su Off.

  1. Accedi alla console Google Cloud come super amministratore di Google Workspace o Cloud Identity.
  2. Nella console, vai alla pagina Criteri dell'organizzazione.

    Vai a Criteri dell'organizzazione

  3. Fai clic su Seleziona e poi seleziona le cartelle da esentare dal criterio dell'organizzazione.

    La console Google Cloud mostra un elenco di limitazioni dei criteri dell'organizzazione per la cartella in una o più pagine.

  4. Per trovare il vincolo dei criteri dell'organizzazione che applica il DNS di zona:

    1. Fai clic su Filtra.
    2. Seleziona Nome.
    3. Imposta il nome del filtro su Imposta l'impostazione del DNS interno per i nuovi progetti su Solo DNS di zona.
  5. Fai clic sul nome del vincolo delle norme dell'organizzazione per aprire la pagina Dettagli delle norme.

  6. Fai clic su Modifica.

  7. Nella pagina Modifica, seleziona Personalizza.

  8. In Applicazione, seleziona Off per disattivare l'applicazione del vincolo. Ciò significa che il tipo DNS interno predefinito per tutti i progetti nella cartella è determinato dalla data di creazione dell'organizzazione.

  9. Fai clic su Salva.

Per ulteriori informazioni sulla personalizzazione dei vincoli dei criteri dell'organizzazione, consulta Personalizzazione dei criteri per i vincoli booleani nella documentazione di Resource Manager.

Applicare il DNS di zona per impostazione predefinita per i nuovi progetti

Per impostare il criterio dell'organizzazione per una cartella o un'organizzazione:

  1. Accedi alla console Google Cloud come super amministratore di Google Workspace o Cloud Identity.

  2. Nella console, vai alla pagina Criteri dell'organizzazione.

    Vai a Criteri dell'organizzazione

  3. Seleziona la cartella o l'organizzazione per cui vuoi visualizzare i criteri dell'organizzazione. La console Google Cloud mostra un elenco dei vincoli delle policy dell'organizzazione disponibili. L'elenco potrebbe essere suddiviso su più pagine.

  4. Per trovare il criterio per applicare il DNS di zona, fai clic su Filtra e seleziona Nome, quindi imposta il nome del filtro su Imposta l'impostazione del DNS interno per i nuovi progetti su Solo DNS di zona.

  5. Fai clic sul nome del criterio per visualizzarne i dettagli.

    La pagina dei dettagli delle norme fornisce informazioni sul vincolo e su come viene applicato.

    Per impostazione predefinita, l'applicazione non è definita per una cartella o un'organizzazione. Tuttavia, se una cartella principale ha un'applicazione definita, questa viene ereditata dalla cartella principale più vicina che ha un'applicazione definita. Per ulteriori informazioni, consulta Informazioni sulla valutazione della gerarchia.

  6. Per personalizzare il criterio dell'organizzazione, fai clic su Modifica.

  7. Nella pagina di modifica, seleziona Personalizza.

  8. In Applicazione forzata, seleziona On.

    In questo modo, il tipo di DNS interno predefinito per tutti i nuovi progetti dell'organizzazione viene impostato sul DNS di zona.

  9. Fai clic su Salva.

Per convalidare la modifica del criterio dell'organizzazione, puoi creare un nuovo progetto nella cartella o nell'organizzazione, quindi creare e avviare un'istanza VM e verificare se la VM è abilitata per il DNS zonale.

Se il DNS globale è necessario per risolvere una query sul nome DNS integrata nel tuo workload, puoi eseguire il rollback di questa modifica a livello di organizzazione o cartella disattivando l'applicazione.

Ripristinare l'utilizzo del DNS globale per un'organizzazione o una cartella

Per ripristinare l'utilizzo del DNS globale per un'organizzazione o una cartella, interrompi l'applicazione del criterio dell'organizzazione per il DNS di zona. Completa i seguenti passaggi.

  1. Disattiva il criterio dell'organizzazioneconstraints/compute.setNewProjectDefaultToZonalDNSOnly a livello di organizzazione o cartella. Per istruzioni su come modificare questo criterio, consulta Applicare il DNS di zona per impostazione predefinita per i nuovi progetti.

    Imposta l'applicazione dell'impostazione Configura l'impostazione del DNS interno per i nuovi progetti per utilizzare solo il DNS di zona su Off.

  2. Se vuoi ripristinare l'utilizzo del DNS globale per l'intera organizzazione, verifica che nessuna delle cartelle dell'organizzazione applichi il criterio dell'organizzazione constraints/compute.setNewProjectDefaultToZonalDNSOnly.

  3. Per verificare che il DNS globale sia configurato per i tuoi progetti e le tue istanze, consulta Determinare quali progetti in una cartella o un'organizzazione utilizzano il DNS globale.

Passaggi successivi