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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
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 -
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
- Mengumpulkan daftar project dan folder: Kumpulkan daftar semua project dan folder terkait dalam organisasi Anda.
- 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.
- Tetapkan kebijakan organisasi: Terapkan kebijakan DNS zona di tingkat organisasi.
- 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.
- Lingkungan fleksibel App Engine, Google Kubernetes Engine, dan Container yang berjalan di Compute Engine
- Cloud SQL, fungsi Cloud Run, dan Batch
- Dataproc dan Dataflow
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.
Buka halaman IAM & Admin>Identitas & Organisasi di konsol.
Periksa tanggal pendaftaran organisasi.
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.
- Buka halaman IAM & Admin>Kebijakan Organisasi di konsol Google Cloud.
- Di kolom Filter, masukkan
constraints/compute.setNewProjectDefaultToZonalDNSOnly
. - Jika batasan dikonfigurasi, klik nama Sets the internal DNS setting for new project to Zonal DNS Only.
- 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.
- Jika batasan tidak dikonfigurasi untuk organisasi, jenis DNS default untuk project ditentukan oleh tanggal pembuatan organisasi.
Periksa nilai metadata
creationTime
organisasi.gcloud organizations describe ORGANIZATION_ID
Ganti ORGANIZATION_ID dengan nomor ID organisasi atau nama domain organisasi.
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
.- Jika batasan ada dan
Status
adalahEnforced
, semua project baru yang dibuat di organisasi akan menggunakan DNS zona secara default. - Jika batasan tidak ada atau tidak diterapkan, jenis DNS default ditentukan oleh tanggal pembuatan organisasi, seperti yang dijelaskan pada langkah pertama.
- Jika batasan ada dan
- Membuat set data BigQuery.
Mengekspor metadata aset untuk organisasi Anda ke tabel BigQuery.
- Pastikan Cloud Asset Inventory API diaktifkan.
- Konfigurasikan izin yang diperlukan untuk menggunakan Cloud Asset Inventory API.
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.
Buka halaman BigQuery di konsol Google Cloud.
Pilih
Tulis kueri baru.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
untukvmDnsSetting
telah mengonfigurasi DNS zonal. Jika tidak, project akan menggunakan DNS global secara default.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
- 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.
- Dapatkan ID folder. Jika Anda tidak mengetahui ID folder, lakukan hal berikut:
- Di konsol Google Cloud, buka halaman Managed resources.
- Terapkan filter
Name:FOLDER_NAME
untuk mendapatkan ID folder.
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
Salin daftar project ID dan simpan ke file.
Jalankan skrip
bash
berikut. Skrip ini melakukan iterasi melalui project ID dalam file tersimpan untuk menentukan apakah folder siap untuk dimigrasikan.- Untuk folder dan project yang aman untuk dimigrasikan, beri tahu pemilik project bahwa mereka dapat mulai memigrasikan project yang siap.
- Untuk folder yang berisi project yang tidak aman untuk dimigrasikan, minta pemilik project untuk memperbaiki kueri yang tidak kompatibel.
- Login ke Konsol Google Cloud sebagai administrator super Google Workspace atau Cloud Identity.
Di konsol, buka halaman Organization policies.
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.
Untuk menemukan batasan kebijakan organisasi yang menerapkan DNS zona:
- Klik Filter.
- Pilih Nama.
- Tetapkan nama filter ke Sets the internal DNS setting for new project to Zonal DNS Only.
Klik nama batasan kebijakan organisasi untuk membuka halaman Policy details.
Klik Edit.
Pada halaman Edit, pilih Customize.
Di bagian Enforcement, pilih Off untuk menonaktifkan penerapan batasan. Artinya, jenis DNS internal default untuk semua project dalam folder ditentukan oleh tanggal pembuatan organisasi.
Klik Simpan.
Login ke Konsol Google Cloud sebagai administrator super Google Workspace atau Cloud Identity.
Di konsol, buka halaman Organization policies.
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.
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.
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.
Untuk menyesuaikan kebijakan organisasi, klik Edit.
Di halaman edit, pilih Customize.
Di bagian Enforcement, pilih On.
Tindakan ini akan menetapkan jenis DNS internal default untuk semua project baru di organisasi ke DNS zona.
Klik Simpan.
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.
Jika Anda ingin kembali menggunakan DNS global untuk seluruh organisasi, verifikasi bahwa tidak ada folder di organisasi yang menerapkan kebijakan organisasi
constraints/compute.setNewProjectDefaultToZonalDNSOnly
.Untuk memverifikasi bahwa DNS global dikonfigurasi untuk project dan instance Anda, lihat Menentukan project mana di folder atau organisasi yang menggunakan DNS global.
- Setiap project yang ada dan menggunakan DNS global harus dimigrasikan secara terpisah. Untuk mengetahui informasi selengkapnya, lihat Memperbarui project Anda agar menggunakan DNS zona.
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:
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:
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:
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:
Konsol
gcloud
Gunakan perintah
organizations describe
dan perintahresource-manager org-policies list
untuk menentukan jenis DNS default untuk organisasi.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
Menentukan kesiapan migrasi folder
Langkah ini menggunakan skrip
bash
dan tabel BigQuery yang dibuat di bagian sebelumnya untuk menentukan kesiapan migrasi folder.Selesaikan langkah-langkah berikut:
#!/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
.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.
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.
Langkah berikutnya
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-02-20 UTC.
-