Zonales DNS als Standard für neue Projekte festlegen


In diesem Dokument wird beschrieben, wie Sie Ihre interne DNS-Richtlinie aktualisieren, damit zonales DNS für neue Projekte verwendet wird. Zonales DNS verbessert die Zuverlässigkeit von Anwendungen, da Ausfälle auf Zonen beschränkt werden und Unterbrechungen kritischer Dienste wie das Erstellen von Instanzen und die automatische Reparatur verhindert werden.

Hinweise

  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud -Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren.
    <x0A>

    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

        Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

          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.

        Weitere Informationen finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter Für die Verwendung von REST authentifizieren.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aufrufen der organisationsweiten internen DNS-Nutzung und zum Aktualisieren der Standardrichtlinie benötigen:

  • Standardrichtlinie für globales DNS prüfen: Administrator für Organisationsrichtlinien (roles/orgpolicy.policyAdmin) für den Ordner oder die Organisation
  • Ermitteln, ob ein Ordner für die Migration zu zonalem DNS bereit ist: Browser (roles/browser) für den Ordner oder die Organisation

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Aufrufen der organisationsweiten internen DNS-Nutzung und zum Aktualisieren der Standardrichtlinie erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um die organisationsweite interne DNS-Nutzung aufzurufen und die Standardrichtlinie zu aktualisieren:

  • Einschränkung für Organisationsrichtlinie festlegen: orgpolicy.*
  • Ermitteln, ob ein Ordner für die Migration zu zonalem DNS bereit ist:
    • resourcemanager.folders.get
    • resourcemanager.folders.list
    • resourcemanager.organizations.get
    • resourcemanager.projects.get
    • resourcemanager.projects.list
  • Nach globalen DNS-Namen und VM-Metadaten suchen: compute.projects.get

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Übersicht über die Konfiguration

Wenn Sie eine Organisationsrichtlinie festlegen, um den internen DNS-Standardtyp zu überschreiben, verwenden neu erstellte Projekte standardmäßig zonales DNS. Die Organisationsrichtlinie wirkt sich nicht auf vorhandene Projekte aus, in denen die Compute Engine API bereits aktiviert ist. Informationen zum Umstellen vorhandener Projekte auf die Verwendung des zonalen DNS finden Sie unter Vorhandene Projekte auf zonales DNS umstellen.

Wir empfehlen, eine zonale DNS-Richtlinie auf Organisationsebene zu erzwingen. So wird sichergestellt, dass alle neuen Projekte, die in Ihrer Organisation erstellt werden, zonales DNS verwenden, was ihre Zuverlässigkeit und Stabilität verbessert. Möglicherweise müssen Sie jedoch einige Ordner von dieser organisationsweiten Richtlinie ausnehmen. Das Ausnehmen von Ordnern ist erforderlich, wenn neue Projekte in diesen Ordnern von vorhandenen Projekten abhängen, die nicht mit zonalem DNS kompatibel sind.

Das Erzwingen einer zonalen DNS-Richtlinie auf Organisationsebene umfasst die folgenden Schritte:

  1. Liste der Projekte und Ordner zusammenstellen: Erstellen Sie eine Liste aller Projekte und der zugehörigen Ordner in Ihrer Organisation.
  2. Ausnahmen für Ordner festlegen: Ermitteln Sie die Ordner, die die in Schritt 1 identifizierten inkompatiblen Projekte enthalten. Diese Ordner müssen vorübergehend von der zonalen DNS-Richtlinie ausgenommen werden.
  3. Organisationsrichtlinie festlegen: Erzwingen Sie die zonale DNS-Richtlinie auf Organisationsebene.
  4. Bestimmte Ordner ausnehmen: Wenden Sie Ausnahmen auf die in Schritt 3 ermittelten Ordner an. So können sie weiterhin globales DNS verwenden, während Sie die inkompatiblen Projekte darin bearbeiten.

So wird sichergestellt, dass neue Projekte zonales DNS für eine höhere Zuverlässigkeit verwenden. Gleichzeitig werden bestehende Abhängigkeiten von älteren Projekten berücksichtigt, die möglicherweise noch nicht für eine sofortige Migration bereit sind.

Beschränkungen

Wenn Sie zonale DNS-Namen für Ihre gesamte Organisation aktivieren, werden zonale DNS-Einstellungen auf Instanzen in anderen Diensten angewendet, z. B.:

Prüfen Sie, ob Ihre Anwendungen einen dieser Dienste verwenden, und verwenden Sie die Analyse von Anfragen, um Kompatibilitätsprobleme mit zonalem DNS für die Ordner und Projekte zu ermitteln, die mit diesen Anwendungen verknüpft sind.

Prüfen, ob Ihre Organisation standardmäßig globales DNS verwendet

Die Standard-DNS-Einstellung für Ihre Organisation hängt von zwei Faktoren ab:

  • Das Erstellungsdatum der Organisation:

    • Nach dem 6. September 2018 erstellt: Ihre Organisation verwendet standardmäßig zonales DNS. Sie müssen dann nichts weiter tun.
    • Vor dem 6. September 2018 erstellt: Ihre Organisation verwendet standardmäßig globales DNS. Sie sollten eine Migration zu zonalem DNS in Betracht ziehen.
  • Das Vorhandensein und die Erzwingung einer Einschränkung für Organisationsrichtlinien:

    Auch wenn Ihre Organisation vor dem 6. September 2018 erstellt wurde, hat ein Administrator möglicherweise eine Richtlinie erzwungen, die zonales DNS für alle neuen Projekte verwendet, die in der Organisation erstellt werden. Um zu prüfen, ob eine solche Richtlinie vorhanden ist, können Sie die Google Cloud Console oder die Google Cloud CLI verwenden.

Console

  1. Gehen Sie zu IAM und Verwaltung> Identität und Organisation in der Console.

    Zu „Identität und Organisation“

  2. Prüfen Sie das Anmeldedatum der Organisation.

    Ein Screenshot der Seite „Identität und Organisation“ mit dem Datum der Registrierung

  3. Wenn Ihre Organisation vor dem 6. September 2018 erstellt wurde, prüfen Sie, ob eine Organisationsrichtlinieneinschränkung den Standard-DNS-Typ für alle neu erstellten Projekte auf zonales DNS setzt.

    1. Rufen Sie in der Google Cloud Console die Seite IAM & Verwaltung>Organisationsrichtlinien auf.
    2. Geben Sie im Filter constraints/compute.setNewProjectDefaultToZonalDNSOnly ein:
    3. Wenn die Einschränkung konfiguriert ist, klicken Sie auf den Namen Interne DNS-Einstellung für neue Projekte ausschließlich auf zonales DNS festlegen.
    4. Prüfen Sie auf der Seite Richtliniendetails den Status.
      • Wenn der Status Erzwungen lautet, ist der interne DNS-Standardtyp für alle neuen Projekte, die in der Organisation erstellt werden, zonales DNS.
      • Andernfalls wird der Standard-DNS-Typ für das Projekt weiterhin durch die Erstellungszeit der Organisation bestimmt.
    5. Wenn die Einschränkung nicht für die Organisation konfiguriert wurde, wird der Standard-DNS-Typ für das Projekt durch das Erstellungsdatum der Organisation bestimmt.

gcloud

Verwenden Sie den Befehl organizations describe und den Befehl resource-manager org-policies list, um den Standard-DNS-Typ für eine Organisation zu ermitteln.

  1. Prüfen Sie den Metadatenwert der Organisation creationTime.

    gcloud organizations describe ORGANIZATION_ID
    

    Ersetzen Sie ORGANIZATION_ID durch die Organisations-ID oder den Organisationsdomainnamen.

  2. Wenn Ihre Organisation vor dem 6. September 2018 erstellt wurde, prüfen Sie, ob eine Organisationsrichtlinieneinschränkung konfiguriert ist, um den Standard-DNS-Typ für alle neu erstellten Projekte auf zonales DNS festzulegen.

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

    Suchen Sie in der Ausgabe nach constraints/compute.setNewProjectDefaultToZonalDNSOnly.

    1. Wenn die Einschränkung vorhanden ist und Status gleich Enforced ist, verwenden alle neuen Projekte, die in der Organisation erstellt werden, standardmäßig zonales DNS.
    2. Wenn die Einschränkung nicht vorhanden ist oder nicht erzwungen wird, wird der Standard-DNS-Typ anhand des Erstellungsdatums der Organisation bestimmt, wie im ersten Schritt beschrieben.

Festlegen, welche Projekte in einem Ordner oder einer Organisation ein globales DNS verwenden.

Wenn Sie herausfinden möchten, welche Projekte das globale DNS verwenden, empfehlen wir, in BigQuery eine Tabelle mit den zugehörigen Projekten für Ihre Organisation und ihren Metadaten zu erstellen. Anschließend können Sie diese Tabelle verwenden, um eine Abfrage auszuführen.

  1. Erstellen Sie ein BigQuery-Dataset.
  2. Assetmetadaten für Ihre Organisation in eine BigQuery-Tabelle exportieren

    1. Prüfen Sie, ob die Cloud Asset Inventory API aktiviert ist.
    2. Konfigurieren Sie die Berechtigungen, die zum Verwenden der Cloud Asset Inventory API erforderlich sind.
    3. Verwenden Sie den folgenden gcloud CLI-Befehl, um das compute.googleapis.com/Project-Asset zu exportieren:

      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
      

      Ersetzen Sie Folgendes:

      • ORGANIZATION_ID: die Organisations-ID-Nummer
      • PROJECT_ID: die Projekt-ID
      • DATASET_ID: den Namen des BigQuery-Datasets
      • TABLE_NAME: die Tabelle, in die Sie Ihre Metadaten exportieren. Wenn die Tabelle nicht vorhanden ist, wird sie von BigQuery erstellt.
  3. Rufen Sie in derGoogle Cloud -Console die Seite BigQuery auf.

  4. Klicken Sie auf Neue Abfrage erstellen.

  5. Geben Sie im Textbereich des Abfrageeditors die folgende GoogleSQL-Abfrage ein und klicken Sie dann auf  Ausführen.

    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
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die Projekt-ID
    • DATASET_ID: den Namen des BigQuery-Datasets
    • TABLE_NAME: die Tabelle, die die exportierten Metadaten enthält, aus Schritt 2.

    Für Projekte mit dem Wert ZONAL_ONLY für vmDnsSetting ist zonales DNS konfiguriert. Andernfalls wird für die Projekte standardmäßig globales DNS verwendet.

  6. Optional: Wenn Sie eine detaillierte Ansicht der vmDnsSetting für jedes Projekt aufrufen möchten, geben Sie die folgende GoogleSQL-Abfrage ein und klicken Sie dann auf  Ausführen.

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

Migrationsbereitschaft eines Ordners ermitteln

In diesem Schritt werden ein bash-Script und die im vorherigen Abschnitt erstellte BigQuery-Tabelle verwendet, um die Migrationsbereitschaft des Ordners zu ermitteln.

  • Der Ordner ist bereit, wenn in den letzten 30 Tagen in allen Projekten keine Abfragen ausgeführt wurden, die nicht mit zonalem DNS kompatibel sind.
  • Wenn ein Ordner nicht für die Migration bereit ist, antwortet das Script mit den Projekt-IDs in dem Ordner, die dazu führen, dass der Ordner nicht für die Migration bereit ist. Die Projekte in dieser Ergebnisliste sind noch nicht mit zonalem DNS kompatibel und erfordern zusätzliche Maßnahmen.

Gehen Sie folgendermaßen vor:

  1. Rufen Sie die Ordner-ID ab. Wenn Sie die Ordner-ID nicht kennen, gehen Sie so vor:
    1. Rufen Sie in der Google Cloud Console die Seite Verwaltete Ressourcen auf.
    2. Wenden Sie den Filter Name:FOLDER_NAME an, um die Ordner-ID abzurufen.
  2. Fragen Sie die BigQuery-Tabelle mit den exportierten compute.Project assets-Daten ab.

    Eine Anleitung zum Erstellen der BigQuery-Tabelle finden Sie unter Festlegen, welche Projekte in einem Ordner oder einer Organisation ein globales DNS verwenden.

    Geben Sie die folgende GoogleSQL-Abfrage ein und klicken Sie auf  Ausführen:

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

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die Projekt-ID
    • DATASET_ID: den Namen des BigQuery-Datasets
    • TABLE_NAME: die Tabelle mit den exportierten Metadaten.
    • FOLDER_NUMBER: die Ordner-ID-Nummer
  3. Kopieren Sie die Liste der Projekt-IDs und speichern Sie sie in einer Datei.

  4. Führen Sie das folgende Script bash aus: Das Script durchläuft die Projekt-IDs in der gespeicherten Datei, um festzustellen, ob ein Ordner für die Migration bereit ist.

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

Ersetzen Sie FILENAME durch den Namen der Datei, in der Sie die Liste der Projekt-IDs gespeichert haben.

Teilen Sie die Ergebnisse der Migrationsbereitschaftsanalyse mit den Projektinhabern:

  • Benachrichtigen Sie für Ordner und Projekte, die sicher migriert werden können, die Projektinhaber, dass sie mit der Migration der Projekte beginnen können.
  • Weisen Sie die Projektinhaber bei Ordnern, die Projekte enthalten, die nicht sicher migriert werden können, an, inkompatible Abfragen zu korrigieren.

Ausgenommene Ordner sind nicht bereit, von der Organisationsrichtlinieneinschränkung zu einem zonalen DNS zu migrieren

Wenn Sie einen Ordner von der Organisationsrichtlinie ausnehmen möchten, führen Sie die folgenden Schritte aus, um die Erzwingungsoption für die Richtlinie auf Ordnerebene auf Off festzulegen.

  1. Melden Sie sich in der Google Cloud -Konsole als Super Admin für Google Workspace oder Cloud Identity an.
  2. Wechseln Sie in der Konsole zur Seite Organisationsrichtlinien.

    Zu den Organisationsrichtlinien

  3. Klicken Sie auf Auswählen und wählen Sie die Ordner aus, die Sie von der Organisationsrichtlinie ausnehmen möchten.

    In der Google Cloud Konsole wird eine Liste der Einschränkungen für Organisationsrichtlinien für diesen Ordner auf einer oder mehreren Seiten angezeigt.

  4. So finden Sie die Einschränkung für die Organisationsrichtlinie, die zonales DNS erzwingt:

    1. Klicken Sie auf Filtern.
    2. Name auswählen.
    3. Setzen Sie den Filternamen auf Legt die interne DNS-Einstellung für neue Projekte so fest, dass nur zonales DNS verwendet wird.
  5. Klicken Sie auf den Namen der Einschränkung für die Organisationsrichtlinie, um die Seite Richtliniendetails zu öffnen.

  6. Klicken Sie auf Bearbeiten.

  7. Wählen Sie auf der Seite Bearbeiten die Option Anpassen aus.

  8. Wählen Sie unter Erzwingung die Option Aus aus, um die Erzwingung der Einschränkung zu deaktivieren. Das bedeutet, dass der interne DNS-Standardtyp für alle Projekte im Ordner durch das Erstellungsdatum der Organisation bestimmt wird.

  9. Klicken Sie auf Speichern.

Weitere Informationen zum Anpassen von Einschränkungen für Organisationsrichtlinien finden Sie in der Resource Manager-Dokumentation unter Richtlinien für boolesche Einschränkungen anpassen.

Zonales DNS standardmäßig für neue Projekte erzwingen

Gehen Sie so vor, um die Organisationsrichtlinie für einen Ordner oder eine Organisation festzulegen:

  1. Melden Sie sich in der Google Cloud -Konsole als Super Admin für Google Workspace oder Cloud Identity an.

  2. Wechseln Sie in der Konsole zur Seite Organisationsrichtlinien.

    Zu den Organisationsrichtlinien

  3. Wählen Sie den Ordner oder die Organisation aus, für die Sie Organisationsrichtlinien aufrufen möchten. In der Google Cloud Konsole wird eine Liste der verfügbaren Einschränkungen für Organisationsrichtlinien angezeigt. Die Liste kann sich über mehrere Seiten erstrecken.

  4. Um die Richtlinie zum Erzwingen des zonalen DNS zu ermitteln, klicken Sie auf Filter und wählen Sie Name aus. Setzen Sie dann den Filternamen auf Legt die interne DNS-Einstellung für neue Projekte so fest, dass nur zonales DNS verwendet wird.

  5. Klicken Sie auf den Richtliniennamen, um die Details aufzurufen.

    Auf der Seite „Richtliniendetails“ finden Sie Informationen zur Einschränkung und zur aktuellen Anwendung der Einschränkung.

    Standardmäßig ist die Erzwingung für einen Ordner oder eine Organisation nicht definiert. Wenn jedoch ein übergeordneter Ordner eine definierte Erzwingung hat, wird die Erzwingung vom nächstgelegenen übergeordneten Ordner übernommen, der eine definierte Erzwingung hat. Weitere Informationen finden Sie unter Informationen zu Evaluierungen der Hierarchie.

  6. Klicken Sie auf Bearbeiten, um die Organisationsrichtlinie anzupassen.

  7. Wählen Sie auf der Bearbeitungsseite Anpassen aus.

  8. Wählen Sie unter Erzwingung die Option An aus.

    Dadurch wird der interne DNS-Standardtyp für alle neuen Projekte in der Organisation auf zonales DNS festgelegt.

  9. Klicken Sie auf Speichern.

Wenn Sie die Änderung der Organisationsrichtlinie validieren möchten, können Sie ein neues Projekt in dem Ordner oder der Organisation erstellen, dann eine VM-Instanz erstellen und starten sowie prüfen, ob Ihre VM für zonales DNS aktiviert ist.

Wenn das interne globale DNS erforderlich ist, um eine in Ihrer Arbeitslast integrierte DNS-Namensabfrage aufzulösen, können Sie diese Änderung auf Organisations- oder Ordnerebene rückgängig machen, indem Sie die Erzwingung deaktivieren.

Zur Verwendung des globalen DNS für eine Organisation oder einen Ordner zurückkehren

Wenn Sie für eine Organisation oder einen Ordner wieder globales DNS verwenden möchten, beenden Sie die Erzwingung der Organisationsrichtlinie für zonales DNS. Gehen Sie folgendermaßen vor:

  1. Deaktivieren Sie die Organisationsrichtlinie constraints/compute.setNewProjectDefaultToZonalDNSOnly auf Organisations- oder Ordnerebene. Eine Anleitung zum Ändern dieser Richtlinie finden Sie unter Zonales DNS standardmäßig für neue Projekte erzwingen.

    Setzen Sie die Erzwingung von Legt die interne DNS-Einstellung für neue Projekte so fest, dass nur zonales DNS verwendet wird auf Aus.

  2. Wenn Sie für die gesamte Organisation wieder globales DNS verwenden möchten, prüfen Sie, ob für einen der Ordner in der Organisation die Organisationsrichtlinie constraints/compute.setNewProjectDefaultToZonalDNSOnly erzwungen wird.

  3. Informationen dazu, wie Sie prüfen, ob globales DNS für Ihre Projekte und Instanzen konfiguriert ist, finden Sie unter Festlegen, welche Projekte in einem Ordner oder einer Organisation ein globales DNS verwenden.

Nächste Schritte