Memahami status klien Cloud Service Mesh
Saat Anda menggunakan Cloud Service Mesh untuk menangani jaringan aplikasi, pertimbangkan dua komponen utama berikut:
- Lapisan infrastruktur. Lapisan infrastruktur, seperti file bantuan Envoy proxy atau library gRPC tanpa proxy, dikonfigurasi untuk menangani jaringan atas nama aplikasi Anda.
- Bidang kontrol, Cloud Service Mesh. Bidang kontrol menghasilkan untuk, dan mendistribusikan konfigurasi ke, lapisan infrastruktur.
Saat proxy Envoy atau library gRPC diinisialisasi, proxy menggunakan xDS API untuk dan terhubung ke Cloud Service Mesh. {i>Proxy<i} atau {i>library<i} bertindak sebagai klien untuk dan Cloud Service Mesh. Setelah koneksi dibuat antara klien dan Cloud Service Mesh, Cloud Service Mesh mengirimkan informasi konfigurasi kembali ke dan memperbarui konfigurasi sesuai kebutuhan.
Terkadang kita perlu memahami klien mana yang terhubung dengan atau untuk memeriksa konfigurasi yang yang dihasilkannya untuk kliennya. Misalnya, Anda mungkin ingin melakukan debug pada suatu masalah, atau Anda mungkin ingin memahami bagaimana tindakan yang Anda ambil saat mengkonfigurasi Cloud Service Mesh memengaruhi konfigurasi yang dilihat klien Anda.
Cloud Service Mesh mendukung Layanan Penemuan Status Klien (CSDS) API. Anda menggunakan klien CSDS untuk membuat kueri API ini. Ini memungkinkan Anda melihat klien mana yang terhubung ke Cloud Service Mesh dan memeriksa konfigurasi yang dihasilkan Cloud Service Mesh untuk kliennya.
Klien CSDS adalah alat {i> open source<i} yang dapat Anda peroleh dari Repositori Envoy. Diagram berikut mengilustrasikan cara klien CSDS membuat kueri Cloud Service Mesh untuk mengetahui informasi tentang CSDS API Cloud Service Mesh.
Klien CSDS terhubung ke Cloud Service Mesh dan menampilkan nomor project dan nama jaringan, bersama dengan serangkaian kredensial. Cloud Service Mesh kemudian dapat merespons dengan informasi tentang berbagai klien Cloud Service Mesh yang terhubung.
Untuk informasi selengkapnya tentang klien CSDS, lihat File README.
Prasyarat
Untuk terhubung ke CSDS API, Anda memerlukan klien CSDS. Anda bisa mendapatkan klien melalui salah satu dari dua cara berikut:
- Anda dapat membangun klien menggunakan Cloud Shell.
- Anda dapat membuat klien di mesin pengembangan lokal.
Membangun klien CSDS menggunakan Cloud Shell
Untuk menggunakan Cloud Shell guna membuat klien CSDS, lakukan langkah berikut:
- Reset Cloud Shell menggunakan petunjuk di Menonaktifkan atau mereset Cloud Shell. Hal ini memastikan bahwa konfigurasi yang ada tidak mengganggu build Anda.
- Di Konsol Google Cloud, buka Sesi Cloud Shell.
Jalankan perintah berikut untuk mendapatkan kode sumber yang Anda gunakan untuk membangun klien CSDS:
git clone https://github.com/envoyproxy/envoy-tools.git
Buka direktori klien CSDS dan jalankan perintah berikut:
cd envoy-tools/csds-client/ make init make build
Setelah build selesai, uji dengan perintah berikut:
csds-client -help
Jika build berhasil, Anda akan melihat teks bantuan untuk klien.
Membangun klien CSDS di mesin pengembangan lokal
Anda dapat mengunduh dan membuat klien CSDS pada komputer lokal dengan mengikuti
petunjuk dalam
File README
dalam repositori open source. Untuk melakukannya:
Anda juga harus menyiapkan Go dan alat make
di lingkungan Anda. Jika Anda
memilih untuk tidak melakukannya, gunakan petunjuk sebelumnya untuk Cloud Shell,
yang menyediakan Go dan alat make
untuk Anda.
Prasyarat tambahan
Pastikan bahwa ID node setiap klien bersifat unik dalam mesh layanan. Jika beberapa klien memiliki ID {i>node<i} yang sama, hanya satu konfigurasi yang dikembalikan—konfigurasi untuk klien yang baru saja yang terhubung ke Cloud Service Mesh.
Jika Anda menggunakan paket referensi Google, Anda tidak perlu mengatur ID node di file bootstrap secara manual; ID node adalah yang dibuat untuk Anda. Jika Anda tidak menggunakan paket referensi, Anda harus secara manual mengatur ID node di setiap file bootstrap.
Pastikan Anda memiliki akses ke akun pengguna yang memiliki Izin Identity and Access Management (IAM) yang diperlukan untuk konfigurasi Mesh Layanan Cloud. Petunjuk berikut menggunakan Google Cloud CLI untuk membuat dan secara otomatis memberikan kredensial yang dibutuhkan oleh klien CSDS. Atau, Anda dapat menggunakan klien CSDS dan memberikan kredensial secara langsung.
Menentukan klien yang saat ini terhubung ke Cloud Service Mesh
Anda dapat menggunakan klien CSDS untuk menentukan klien mana yang terhubung ke konfigurasi Cloud Service Mesh.
Untuk mendapatkan informasi ini, Anda memerlukan detail berikut:
ID project tempat kredensial dibuat.
Jika Anda menggunakan API perutean layanan, salah satu hal berikut, yang resource mana yang diambil klien xDS:
Jika Anda menggunakan API lama, nama dari jaringan VPC yang Anda tentukan saat mengonfigurasi dan Cloud Service Mesh. Jaringan ini adalah yang ditentukan oleh aturan penerusan dari peta aturan perutean.
API pemilihan rute layanan
Dari akun yang memiliki izin yang benar, jalankan perintah berikut:
gcloud auth application-default login \ --billing-project=BILLING_PROJECT_ID
Buat file baru dalam format YAML dengan konten berikut.
node_matchers: - node_metadatas: - path: - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER value: string_match: exact: "PROJECT_NUMBER" - path: - key: TRAFFICDIRECTOR_MESH_SCOPE_NAME value: string_match: exact: "MESH_OR_SCOPE"
Ganti nilai berikut:
PROJECT_NUMBER
: ID projectMESH_OR_SCOPE
: jika klien xDS mengambil Mesh resource, gunakan imbuhanmesh:
diikuti dengan nama mesh sebenarnya; jika klien xDS mengambil resource Gateway, gunakan awalanscope:
diikuti dengan nama parameter cakupan
Jalankan klien CSDS, yang menggunakan kredensial yang dibuat oleh dengan gcloud CLI Ganti
PATH_TO_CSDS_REQUEST_YAML_FILE
dengan jalur ke file YAML yang Anda buat di langkah sebelumnya.csds-client \ -service_uri trafficdirector.googleapis.com:443 \ -platform gcp \ -authn_mode auto \ -api_version v3 \ -request_file PATH_TO_CSDS_REQUEST_YAML_FILE
Anda akan melihat output yang mirip dengan berikut ini:
Client ID xDS stream type Config status 603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5 ADS N/A 603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5 LRS N/A 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 ADS N/A 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 LRS N/A d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4 ADS N/A d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4 LRS N/A f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6 ADS N/A f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6 LRS N/A
Kolom
Client ID
menampilkan client ID klien yang terhubung ke Cloud Service Mesh. Client ID ini diberikan dengan menggunakan kolomnode_id
dalam file bootstrap yang digunakan oleh Envoy atau gRPC tanpa proxy saat terhubung ke dan Cloud Service Mesh.
API yang lebih lama
Dari akun yang memiliki izin yang benar, jalankan perintah berikut:
gcloud auth application-default login \ --billing-project=BILLING_PROJECT_ID
Buat file baru dalam format YAML dengan konten berikut.
node_matchers: - node_metadatas: - path: - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER value: string_match: exact: "PROJECT_NUMBER" - path: - key: TRAFFICDIRECTOR_NETWORK_NAME value: string_match: exact: "NETWORK_NAME"
Ganti nilai berikut:
PROJECT_NUMBER
: ID unik Project Google CloudNETWORK_NAME
: Jaringan VPC yang ditentukan oleh aturan penerusan dari peta aturan pemilihan rute
Jalankan klien CSDS, yang menggunakan kredensial yang dibuat oleh dengan gcloud CLI Ganti
PATH_TO_CSDS_REQUEST_YAML_FILE
dengan jalur ke file YAML yang Anda buat di langkah sebelumnya.csds-client \ -service_uri trafficdirector.googleapis.com:443 \ -platform gcp \ -authn_mode auto \ -api_version v3 \ -request_file PATH_TO_CSDS_REQUEST_YAML_FILE
Anda akan melihat output yang mirip dengan berikut ini:
Client ID xDS stream type Config status 603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5 ADS N/A 603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5 LRS N/A 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 ADS N/A 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 LRS N/A d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4 ADS N/A d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4 LRS N/A f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6 ADS N/A f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6 LRS N/A
Kolom
Client ID
menampilkan client ID klien yang terhubung ke Cloud Service Mesh. Client ID ini diberikan dengan menggunakan kolomnode_id
dalam file bootstrap yang digunakan oleh Envoy atau gRPC tanpa proxy saat terhubung ke dan Cloud Service Mesh.
Memeriksa konfigurasi untuk klien Cloud Service Mesh tertentu
Anda dapat memeriksa konfigurasi yang dikirim Cloud Service Mesh ke klien Anda dengan menggunakan ID klien, yang Anda peroleh di bagian sebelumnya.
Anda dapat memeriksa konfigurasi rinci
prototipe sumber daya untuk menentukan
versi xDS API yang
digunakan klien tertentu. Misalnya, jika Anda melihat
envoy.api.v2.Cluster
dalam konfigurasi, artinya klien menggunakan API v2.
Jika Anda melihat envoy.api.v3.Cluster
dalam konfigurasi, artinya klien
menggunakan API v3. Hanya xDS v3 yang didukung. Untuk informasi
Untuk mengetahui cara bermigrasi dari v2 ke v3, lihat Bermigrasi dari xDS v2 ke xDS v3.
API pemilihan rute layanan
Memperbarui file YAML yang Anda buat di Tentukan klien yang saat ini terhubung ke Cloud Service Mesh. Tambahkan kolom
node-id
yang menggunakan client ID sebagai nilainya.node_matchers: - node_id: exact: "CLIENT_ID" node_metadatas: - path: - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER value: string_match: exact: "PROJECT_NUMBER" - path: - key: TRAFFICDIRECTOR_MESH_SCOPE_NAME value: string_match: exact: "MESH_OR_SCOPE_NAME"
Ganti nilai berikut:
CLIENT_ID
: ID klien yang konfigurasinya yang Anda periksa—misalnya,projects/000000/networks/mesh:mesh1/nodes/00000000-0000-0000-0000-00000000~127.0.0.1
PROJECT_NUMBER
: ID unik Project Google CloudMESH_OR_SCOPE
: jika klien xDS mengambil Mesh resource, gunakan imbuhanmesh:
diikuti dengan nama mesh sebenarnya; jika klien xDS mengambil resource Gateway, gunakan awalanscope:
diikuti dengan nama parameter cakupan
Jalankan klien CSDS. Menjalankan klien akan menghasilkan file JSON. File ini berisi konfigurasi yang dikirim ke klien Cloud Service Mesh.
csds-client \ -service_uri trafficdirector.googleapis.com:443 \ -platform gcp \ -authn_mode auto \ -api_version v3 \ -request_file PATH_TO_CSDS_REQUEST_YAML_FILE \ -output_file FILENAME.JSON
Ganti nilai berikut:
PATH_TO_CSDS_REQUEST_YAML_FILE
: jalur ke File YAMLFILENAME.JSON
: nama untuk file yang menyimpan output klien CSDS
Anda akan melihat output yang mirip dengan berikut ini:
Client ID xDS stream type Config status 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 ADS LDS SYNCED RDS SYNCED CDS STALE Config has been saved to FILENAME.JSON
Anda dapat memeriksa konfigurasi xDS yang mendetail dengan melihat file JSON. Output ini berisi status setiap konfigurasi xDS yang dikirim oleh Cloud Service Mesh ke klien dengan menggunakan streaming gRPC gabungan (IKLAN).
API yang lebih lama
Memperbarui file YAML yang Anda buat di Tentukan klien yang saat ini terhubung ke Cloud Service Mesh. Tambahkan kolom
node-id
yang menggunakan client ID sebagai nilainya.node_matchers: - node_id: exact: "CLIENT_ID" node_metadatas: - path: - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER value: string_match: exact: "PROJECT_NUMBER" - path: - key: TRAFFICDIRECTOR_NETWORK_NAME value: string_match: exact: "NETWORK_NAME"
Ganti nilai berikut:
CLIENT_ID
: ID klien yang konfigurasinya yang Anda periksa—misalnya,f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6
PROJECT_NUMBER
: ID unik Project Google CloudNETWORK_NAME
: VPC jaringan yang ditentukan oleh aturan penerusan dari peta aturan pemilihan rute
Jalankan klien CSDS. Menjalankan klien akan menghasilkan file JSON. File ini berisi konfigurasi yang dikirim ke klien Cloud Service Mesh.
csds-client \ -service_uri trafficdirector.googleapis.com:443 \ -platform gcp \ -authn_mode auto \ -api_version v3 \ -request_file PATH_TO_CSDS_REQUEST_YAML_FILE \ -output_file FILENAME.JSON
Ganti nilai berikut:
PATH_TO_CSDS_REQUEST_YAML_FILE
: jalur ke File YAMLFILENAME.JSON
: nama untuk file yang menyimpan output klien CSDS
Anda akan melihat output yang mirip dengan berikut ini:
Client ID xDS stream type Config status 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 ADS LDS SYNCED RDS SYNCED CDS STALE Config has been saved to FILENAME.JSON
Anda dapat memeriksa konfigurasi xDS yang mendetail dengan melihat file JSON. Output ini berisi status setiap konfigurasi xDS yang dikirim oleh Cloud Service Mesh ke klien dengan menggunakan streaming gRPC gabungan (IKLAN).
Nilai status
Tabel berikut mencantumkan nilai status konfigurasi xDS yang mungkin Anda lihat.
Nilai | Deskripsi |
---|---|
UNKNOWN |
(Default) Informasi status tidak tersedia atau tidak diketahui. |
SYNCED |
Cloud Service Mesh mengirim konfigurasi ke klien dan menerima
ACK dari klien. |
ERROR |
Cloud Service Mesh mengirim konfigurasi ke klien dan menerima
NACK dari klien. |
STALE |
Cloud Service Mesh mengirim konfigurasi ke klien, tetapi tidak
menerima ACK atau NACK dari klien. |
NOT_SENT |
Konfigurasi tidak terkirim. |
N/A |
Klien CSDS tidak menyertakan ID node. Semua yang terhubung feed ditampilkan, tetapi status konfigurasi tidak tersedia. |
Visualisasi dan pemantauan
Alat {i>open source<i} klien CSDS memiliki fitur tambahan yang mungkin ingin Anda digunakan, seperti visualisasi dan pemantauan berkelanjutan. Untuk mengetahui informasi selengkapnya tentang fitur tersebut, lihat File README dalam repositori open source.
Pesan error
Anda mungkin melihat pesan error berikut dari klien CSDS saat mengaktifkan Cloud Service Mesh API hanya di project Anda:
rpc error: code = NotFound desc = Requested entity was not found.
Ini adalah perilaku yang diharapkan. Konfigurasi Cloud Service Mesh dicakup sesuai dengan jaringan. Jika Anda belum membuat jaringan dan menjalankan klien CSDS, Anda melihat pesan {i>error<i} ini.
Batasan
- Informasi endpoint tidak disertakan dalam respons CSDS karena informasi ini tidak tersedia dalam CSDS v3 API.
- ID node setiap klien harus unik dalam mesh layanan. Jika beberapa klien memiliki ID node yang sama, hanya satu konfigurasi yang ditampilkan— konfigurasi untuk klien yang terakhir terhubung dan Cloud Service Mesh.
- Terkadang Anda mungkin melihat garis miring terbalik (\) pada kolom ID node pada YAML . Jika ini terjadi, konversikan garis miring terbalik dengan menggunakan garis miring terbalik tambahan saat Anda membuat kueri CSDS API untuk informasi konfigurasi. Ini adalah masalah performa.
Langkah selanjutnya
- Untuk menemukan informasi pemecahan masalah umum Cloud Service Mesh, lihat Memecahkan masalah deployment yang menggunakan Envoy.
- Untuk menyelesaikan masalah konfigurasi saat Anda men-deploy layanan gRPC tanpa proxy, lihat Memecahkan masalah deployment yang menggunakan gRPC tanpa proxy.