Menetapkan DNS Zona sebagai default untuk project baru


Dokumen ini menjelaskan cara memperbarui kebijakan DNS internal untuk menggunakan DNS zona untuk project baru. DNS zonal meningkatkan keandalan aplikasi dengan mengisolasi penghentian layanan dalam zona, sehingga mencegah gangguan pada layanan penting seperti pembuatan instance dan perbaikan otomatis.

Sebelum memulai

  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses yang digunakan untuk memverifikasi identitas Anda agar dapat mengakses Google Cloud layanan dan API. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    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

      Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

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

        gcloud init

      Untuk informasi selengkapnya, lihat Mengautentikasi untuk menggunakan REST dalam Google Cloud dokumentasi autentikasi.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna melihat penggunaan DNS internal di seluruh organisasi dan memperbarui kebijakan default, minta administrator untuk memberi Anda peran IAM berikut:

  • Periksa kebijakan DNS global default: Administrator Kebijakan Organisasi (roles/orgpolicy.policyAdmin) di folder atau organisasi
  • Menentukan apakah folder siap dimigrasikan ke DNS zona: Browser (roles/browser) di folder atau organisasi

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk melihat penggunaan DNS internal di seluruh organisasi dan memperbarui kebijakan default. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk melihat penggunaan DNS internal di seluruh organisasi dan memperbarui kebijakan default:

  • Tetapkan batasan kebijakan organisasi: orgpolicy.*
  • Tentukan apakah folder siap dimigrasikan ke DNS zonal:
    • resourcemanager.folders.get
    • resourcemanager.folders.list
    • resourcemanager.organizations.get
    • resourcemanager.projects.get
    • resourcemanager.projects.list
  • Periksa nama DNS global dan metadata VM: compute.projects.get

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Ringkasan konfigurasi

Jika Anda menetapkan kebijakan organisasi untuk mengganti jenis DNS internal default, project yang baru dibuat akan menggunakan DNS zona secara default. Kebijakan organisasi tidak memengaruhi project yang sudah ada yang mengaktifkan Compute Engine API. Untuk mengalihkan project yang ada agar menggunakan DNS zona, lihat mengalihkan project yang ada ke DNS zona.

Sebaiknya terapkan kebijakan DNS zonal di tingkat organisasi. Pendekatan ini memastikan bahwa semua project baru yang dibuat dalam organisasi Anda akan menggunakan DNS zona, sehingga meningkatkan keandalan dan ketahanannya. Namun, Anda mungkin perlu mengecualikan beberapa folder dari kebijakan seluruh organisasi ini. Pengecualian folder diperlukan jika project baru dalam folder tersebut bergantung pada project yang ada yang tidak kompatibel dengan DNS zonal.

Proses penerapan kebijakan DNS zona di tingkat organisasi mencakup langkah-langkah berikut:

  1. Mengumpulkan daftar project dan folder: Kumpulkan daftar semua project dan folder terkait dalam organisasi Anda.
  2. Mengidentifikasi folder yang akan dikecualikan: Tentukan folder yang berisi project yang tidak kompatibel yang diidentifikasi pada Langkah 1. Folder ini harus dikecualikan untuk sementara dari kebijakan DNS zonal.
  3. Tetapkan kebijakan organisasi: Terapkan kebijakan DNS zona di tingkat organisasi.
  4. Mengecualikan folder tertentu: Terapkan pengecualian ke folder yang diidentifikasi di Langkah 3. Hal ini memungkinkan mereka untuk terus menggunakan DNS global saat Anda mengatasi project yang tidak kompatibel di dalamnya.

Pendekatan ini memastikan bahwa project baru menggunakan DNS zona untuk meningkatkan keandalan, sekaligus mengakomodasi dependensi yang ada pada project lama yang mungkin belum siap untuk migrasi langsung.

Batasan

Mengaktifkan nama DNS zona di seluruh organisasi akan menerapkan setelan DNS zona ke instance di layanan lain, seperti berikut:

Tinjau apakah aplikasi Anda menggunakan salah satu layanan ini dan gunakan analisis kueri untuk mengidentifikasi masalah kompatibilitas dengan DNS zona untuk folder dan project yang terkait dengan aplikasi tersebut.

Memeriksa apakah organisasi Anda menggunakan DNS Global secara default

Setelan DNS default untuk organisasi Anda bergantung pada dua faktor:

  • Tanggal pembuatan organisasi:

    • Dibuat setelah 6 September 2018: Organisasi Anda menggunakan DNS zona secara default. Anda tidak perlu melakukan tindakan lebih lanjut.
    • Dibuat sebelum 6 September 2018: Organisasi Anda menggunakan DNS global secara default. Sebaiknya pertimbangkan untuk bermigrasi ke DNS zona.
  • Adanya dan penerapan batasan kebijakan organisasi:

    Meskipun organisasi Anda dibuat sebelum 6 September 2018, administrator mungkin telah menerapkan kebijakan untuk menggunakan DNS zonal untuk semua project baru yang dibuat dalam organisasi. Untuk memeriksa apakah kebijakan tersebut ada, Anda dapat menggunakan konsol Google Cloud atau Google Cloud CLI.

Konsol

  1. Buka halaman IAM & Admin>Identitas & Organisasi di konsol.

    Buka Identitas & Organisasi

  2. Periksa tanggal pendaftaran organisasi.

    Screenshot halaman konsol Identitas & Organisasi yang menampilkan tanggal Pendaftaran selesai.

  3. Jika organisasi Anda dibuat sebelum 6 September 2018, periksa apakah batasan kebijakan organisasi menetapkan jenis DNS default untuk semua project yang baru dibuat ke DNS zona.

    1. Buka halaman IAM & Admin>Kebijakan Organisasi di konsol Google Cloud.
    2. Di kolom Filter, masukkan constraints/compute.setNewProjectDefaultToZonalDNSOnly.
    3. Jika batasan dikonfigurasi, klik nama Sets the internal DNS setting for new project to Zonal DNS Only.
    4. Di halaman Detail kebijakan, periksa Status.
      • Jika statusnya Enforced, jenis DNS internal default adalah DNS zona untuk semua project baru yang dibuat di organisasi.
      • Jika tidak, jenis DNS default untuk project masih ditentukan oleh waktu pembuatan organisasi.
    5. Jika batasan tidak dikonfigurasi untuk organisasi, jenis DNS default untuk project ditentukan oleh tanggal pembuatan organisasi.

gcloud

Gunakan perintah organizations describe dan perintah resource-manager org-policies list untuk menentukan jenis DNS default untuk organisasi.

  1. Periksa nilai metadata creationTime organisasi.

    gcloud organizations describe ORGANIZATION_ID
    

    Ganti ORGANIZATION_ID dengan nomor ID organisasi atau nama domain organisasi.

  2. Jika organisasi Anda dibuat sebelum 6 September 2018, tentukan apakah batasan kebijakan organisasi dikonfigurasi untuk menetapkan jenis DNS default untuk semua project yang baru dibuat ke DNS zona.

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

    Pada output, cari constraints/compute.setNewProjectDefaultToZonalDNSOnly.

    1. Jika batasan ada dan Status adalah Enforced, semua project baru yang dibuat di organisasi akan menggunakan DNS zona secara default.
    2. Jika batasan tidak ada atau tidak diterapkan, jenis DNS default ditentukan oleh tanggal pembuatan organisasi, seperti yang dijelaskan pada langkah pertama.

Menentukan project mana di folder atau organisasi yang menggunakan DNS global

Untuk menentukan project mana yang menggunakan DNS global, sebaiknya gunakan BigQuery untuk membuat tabel yang mencantumkan project relatif untuk organisasi Anda dan metadatanya. Kemudian, Anda dapat menggunakan tabel ini untuk menjalankan kueri

  1. Membuat set data BigQuery.
  2. Mengekspor metadata aset untuk organisasi Anda ke tabel BigQuery.

    1. Pastikan Cloud Asset Inventory API diaktifkan.
    2. Konfigurasikan izin yang diperlukan untuk menggunakan Cloud Asset Inventory API.
    3. Gunakan perintah gcloud CLI berikut untuk mengekspor aset 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
      

      Ganti kode berikut:

      • ORGANIZATION_ID: nomor ID organisasi
      • PROJECT_ID: the project ID
      • DATASET_ID: nama set data BigQuery
      • TABLE_NAME: tabel tempat Anda mengekspor metadata. Jika tabel tidak ada, BigQuery akan membuatnya.
  3. Buka halaman BigQuery di konsol Google Cloud.

  4. Pilih Tulis kueri baru.

  5. Di area teks editor kueri, masukkan kueri GoogleSQL berikut, lalu klik  Run.

    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
    

    Ganti kode berikut:

    • PROJECT_ID: the project ID
    • DATASET_ID: nama set data BigQuery
    • TABLE_NAME: tabel yang berisi metadata yang diekspor, dari Langkah 2.

    Project dengan nilai ZONAL_ONLY untuk vmDnsSetting telah mengonfigurasi DNS zonal. Jika tidak, project akan menggunakan DNS global secara default.

  6. Opsional: Untuk melihat vmDnsSetting secara mendetail untuk setiap project, masukkan kueri GoogleSQL berikut, lalu klik  Run.

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

Menentukan kesiapan migrasi folder

Langkah ini menggunakan skrip bash dan tabel BigQuery yang dibuat di bagian sebelumnya untuk menentukan kesiapan migrasi folder.

  • Folder siap jika semua project belum membuat kueri apa pun yang tidak kompatibel dengan DNS zonal dalam 30 hari terakhir.
  • Jika folder belum siap untuk dimigrasikan, skrip akan merespons dengan ID project di folder yang mencegah folder siap untuk dimigrasikan. Project dalam daftar hasil ini belum kompatibel dengan DNS zonal dan memerlukan tindakan tambahan.

Selesaikan langkah-langkah berikut:

  1. Dapatkan ID folder. Jika Anda tidak mengetahui ID folder, lakukan hal berikut:
    1. Di konsol Google Cloud, buka halaman Managed resources.
    2. Terapkan filter Name:FOLDER_NAME untuk mendapatkan ID folder.
  2. Buat kueri tabel BigQuery dengan data compute.Project assets yang diekspor.

    Untuk mengetahui petunjuk cara membuat tabel BigQuery, lihat Menentukan project mana di folder atau organisasi yang menggunakan DNS global.

    Masukkan kueri GoogleSQL berikut, lalu klik  Run:

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

    Ganti kode berikut:

    • PROJECT_ID: the project ID
    • DATASET_ID: nama set data BigQuery
    • TABLE_NAME: tabel yang berisi metadata yang diekspor
    • FOLDER_NUMBER: nomor ID folder
  3. Salin daftar project ID dan simpan ke file.

  4. Jalankan skrip bash berikut. Skrip ini melakukan iterasi melalui project ID dalam file tersimpan untuk menentukan apakah folder siap untuk dimigrasikan.

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

Ganti FILENAME dengan nama file tempat Anda menyimpan daftar project ID.

Sampaikan hasil analisis kesiapan migrasi kepada pemilik project:

Folder pengecualian yang belum siap dimigrasikan ke DNS zona

Untuk mengecualikan folder dari kebijakan organisasi, selesaikan langkah-langkah berikut untuk menetapkan opsi penerapan kebijakan di tingkat folder ke Off.

  1. Login ke Konsol Google Cloud sebagai administrator super Google Workspace atau Cloud Identity.
  2. Di konsol, buka halaman Organization policies.

    Buka Organization policies

  3. Klik Pilih, lalu pilih folder yang ingin Anda kecualikan dari kebijakan organisasi.

    Konsol Google Cloud menampilkan daftar batasan kebijakan organisasi untuk folder tersebut di satu atau beberapa halaman.

  4. Untuk menemukan batasan kebijakan organisasi yang menerapkan DNS zona:

    1. Klik Filter.
    2. Pilih Nama.
    3. Tetapkan nama filter ke Sets the internal DNS setting for new project to Zonal DNS Only.
  5. Klik nama batasan kebijakan organisasi untuk membuka halaman Policy details.

  6. Klik Edit.

  7. Pada halaman Edit, pilih Customize.

  8. Di bagian Enforcement, pilih Off untuk menonaktifkan penerapan batasan. Artinya, jenis DNS internal default untuk semua project dalam folder ditentukan oleh tanggal pembuatan organisasi.

  9. Klik Simpan.

Untuk informasi selengkapnya tentang cara menyesuaikan batasan kebijakan organisasi, lihat Menyesuaikan kebijakan untuk batasan boolean dalam dokumentasi Resource Manager.

Menerapkan DNS zona secara default untuk project baru

Gunakan langkah-langkah berikut untuk menetapkan kebijakan organisasi untuk folder atau organisasi.

  1. Login ke Konsol Google Cloud sebagai administrator super Google Workspace atau Cloud Identity.

  2. Di konsol, buka halaman Organization policies.

    Buka Organization policies

  3. Pilih folder atau organisasi tempat Anda ingin melihat kebijakan organisasi. Konsol Google Cloud menampilkan daftar batasan kebijakan organisasi yang tersedia. Daftar ini mungkin mencakup beberapa halaman.

  4. Untuk menemukan kebijakan guna menerapkan DNS zona, klik Filter dan pilih Name, lalu tetapkan nama filter menjadi Sets the internal DNS setting for new project to Zonal DNS Only.

  5. Klik nama kebijakan untuk melihat detailnya.

    Halaman detail kebijakan memberikan informasi tentang batasan dan cara batasan diterapkan.

    Secara default, penerapan tidak ditentukan untuk folder atau organisasi. Namun, jika folder induk memiliki penerapan yang ditentukan, penerapan tersebut akan diwariskan dari folder induk terdekat yang memiliki penerapan yang ditentukan. Untuk informasi selengkapnya, baca Memahami evaluasi hierarki.

  6. Untuk menyesuaikan kebijakan organisasi, klik Edit.

  7. Di halaman edit, pilih Customize.

  8. Di bagian Enforcement, pilih On.

    Tindakan ini akan menetapkan jenis DNS internal default untuk semua project baru di organisasi ke DNS zona.

  9. Klik Simpan.

Untuk memvalidasi perubahan kebijakan organisasi, Anda dapat membuat project baru di bawah folder atau organisasi, lalu membuat dan memulai instance VM, dan memeriksa apakah VM diaktifkan untuk DNS zona.

Jika DNS global diperlukan untuk menyelesaikan kueri nama DNS yang terintegrasi ke dalam workload Anda, Anda dapat melakukan rollback perubahan ini di tingkat organisasi atau folder dengan menonaktifkan penerapan.

Kembali menggunakan DNS global untuk organisasi atau folder

Untuk mengembalikan organisasi atau folder ke penggunaan DNS global, hentikan penerapan kebijakan organisasi untuk DNS zona. Selesaikan langkah-langkah berikut.

  1. Nonaktifkan constraints/compute.setNewProjectDefaultToZonalDNSOnly kebijakan organisasi di tingkat organisasi atau folder. Untuk mengetahui petunjuk cara mengubah kebijakan ini, lihat Menerapkan DNS zona secara default untuk project baru.

    Tetapkan penerapan Sets the internal DNS setting for new project to Zonal DNS Only ke Nonaktif.

  2. Jika Anda ingin kembali menggunakan DNS global untuk seluruh organisasi, verifikasi bahwa tidak ada folder di organisasi yang menerapkan kebijakan organisasi constraints/compute.setNewProjectDefaultToZonalDNSOnly.

  3. Untuk memverifikasi bahwa DNS global dikonfigurasi untuk project dan instance Anda, lihat Menentukan project mana di folder atau organisasi yang menggunakan DNS global.

Langkah berikutnya