Pemecahan masalah

Mengapa saya mendapatkan error not found saat menambahkan endpoint?

Jika Anda mendapatkan error 404 saat menambahkan layanan atau endpoint, pastikan Anda telah membuat namespace dan layanan (dalam urutan tersebut) sebelum menambahkan endpoint. Layanan harus ada sebelum Anda dapat menambahkan endpoint tambahan.

Saat mencari layanan, mengapa saya tidak mendapatkan endpoint apa pun?

Pastikan project, region, nama namespace, dan nama layanan sudah benar dalam permintaan Anda dan cocok dengan tempat Anda mendaftarkan endpoint. Semua layanan Direktori Layanan berada di namespace regional, sehingga layanan yang terdaftar dengan satu region tidak cocok dengan data di region terpisah.

Saya memberi seseorang akses ke layanan, tetapi ia terus mendapatkan permission denied.

Hal ini dapat disebabkan oleh beberapa alasan. Pertama, pastikan wilayahnya sudah benar. Jika Anda menetapkan kebijakan pada namespace atau layanan, kebijakan tersebut hanya berlaku untuk wilayah tertentu tersebut. Jika pengguna mencoba mendaftarkan atau mencari layanan yang sama di region lain, mereka tidak akan memiliki akses kecuali jika Anda juga memberi mereka akses IAM ke layanan regional tersebut. Untuk men-debug masalah akses, coba metode TestIamPermissions untuk layanan dan namespace.

Saya menambahkan beberapa endpoint, lalu menghapus backend layanan. Mengapa endpoint masih ada?

Direktori Layanan tidak melakukan pemeriksaan kondisi atau heartbeat otomatis, dan tidak menghapus endpoint kecuali jika Anda menghapusnya secara eksplisit. Pastikan Anda menambahkan kode ke backend/orkestrator layanan yang menghapus endpoint dari Direktori Layanan setelah tidak ada lagi. Sebaiknya gunakan kolom anotasi time-to-live di endpoint untuk mencatat waktu terakhir endpoint didaftarkan atau diperbarui.

Saya dapat mencari endpoint, tetapi setiap kali saya mencoba terhubung ke endpoint tersebut, koneksi gagal.

Direktori Layanan tidak memastikan keterjangkauan dari klien. Layanan mendaftarkan endpoint-nya langsung ke Direktori Layanan. Namun, alamat yang terdaftar dengan Direktori Layanan mungkin tidak dapat dirutekan (terutama jika klien dan server berada di jaringan pribadi terpisah). Jika endpoint dapat dirutekan dari klien, hal ini mungkin karena endpoint tidak sehat. Lihat pertanyaan berikut.

Bagaimana cara menambahkan data kesehatan untuk endpoint agar klien saya tahu endpoint mana yang akan dihubungkan?

Saat menggunakan load balancing sisi klien, sebaiknya backend layanan sesekali memperbarui kolom anotasi di endpoint yang dapat digunakan klien untuk membuat keputusan tentang backend mana yang akan dihubungkan. Direktori Layanan tidak memeriksa atau mengevaluasi data ini.

Saya telah membuat namespace. Mengapa saya tidak dapat menetapkan zona pribadi Cloud DNS ke VPC?

Pastikan Anda memiliki izin IAM servicedirectory.namespaces.associatePrivateZone untuk namespace karena izin ini memungkinkan Anda membuat zona pribadi terkait. Secara default, peran Project Editor, Project Owner, Service Directory Admin, dan Service Directory Editor memiliki izin ini.

Saat melakukan pencarian DNS layanan, mengapa saya tidak mendapatkan endpoint apa pun?

Kemungkinan ada beberapa alasan, seperti berikut:

  1. Namespace terkait telah dihapus. Anda dapat memeriksanya dengan menjalankan perintah get di zona pribadi. Jika serviceDirectoryConfig.deletionTime ditetapkan, namespace terkait dan semua endpoint-nya telah dihapus.
  2. Pastikan Anda mengeluarkan permintaan dari jaringan yang diizinkan untuk mengkueri zona pribadi. Anda dapat menemukan daftar jaringan dengan menjalankan perintah get di zona pribadi.
  3. Tidak ada endpoint (valid) untuk layanan. Jalankan perintah resolve di layanan melalui Service Directory API untuk memastikan bahwa layanan tidak kosong dan memiliki setidaknya satu IP endpoint yang valid. Dukungan DNS hanya tersedia untuk endpoint dengan alamat IP IPv4 atau IPv6 yang valid.
  4. Pastikan Anda membuat kueri zona yang benar. Misalnya, misalnya Anda membuat zona Direktori Layanan bernama example.com, dan Anda memiliki zona pribadi (standar) lain bernama billing.example.com. Kemudian, kueri DNS apa pun ke billing.example.com akan menampilkan data resource yang termasuk dalam zona billing.example.com, bukan layanan billing di namespace Direktori Layanan yang terkait dengan example.com. Untuk informasi selengkapnya, lihat Urutan resolusi nama.

Mengapa layanan GKE saya tidak disinkronkan ke Direktori Layanan?

Kemungkinan ada beberapa alasan, seperti berikut:

  1. Pastikan Anda telah men-deploy ServiceDirectoryRegistrationPolicy di cluster GKE untuk namespace yang Anda coba sinkronkan. Selain itu, pastikan layanan yang Anda coba sinkronkan cocok dengan pemilih label dalam kebijakan Anda.
  2. Sudah ada namespace Service Directory yang dibuat secara manual atau menggunakan beberapa integrasi lain dengan nama yang sama dengan namespace GKE yang Anda coba sinkronkan. Anda harus mengganti nama atau menghapus namespace Direktori Layanan yang ada agar tidak ada konflik.
  3. Izin dari Akun Layanan Direktori Layanan Anda telah dihapus. Pastikan service-{PROJECT_NUMBER}@gcp-sa-servicedirectory.iam.gserviceaccount.com memiliki izin IAM Service Directory Service Agent. Untuk mengetahui detail tentang IAM, lihat dokumentasi IAM.

Langkah selanjutnya