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 proxy sidecar Envoy atau library gRPC tanpa proxy, dikonfigurasi untuk menangani jaringan atas nama aplikasi Anda.
  • Bidang kontrol, Cloud Service Mesh. Bidang kontrol membuat konfigurasi untuk, dan mendistribusikan konfigurasi ke, lapisan infrastruktur.

Saat diinisialisasi, proxy Envoy atau library gRPC menggunakan xDS API untuk terhubung ke Cloud Service Mesh. Proxy atau library bertindak sebagai klien ke Cloud Service Mesh. Setelah koneksi dibuat antara klien dan Cloud Service Mesh, Cloud Service Mesh akan mengirimkan informasi konfigurasi kembali ke klien dan memperbarui konfigurasi sesuai kebutuhan.

Terkadang, Anda perlu memahami klien mana yang terhubung ke Cloud Service Mesh atau memeriksa konfigurasi yang dibuat Cloud Service Mesh untuk kliennya. Misalnya, Anda mungkin ingin men-debug masalah, atau Anda mungkin ingin memahami pengaruh tindakan yang Anda lakukan saat mengonfigurasi Cloud Service Mesh terhadap konfigurasi yang dilihat klien Anda.

Cloud Service Mesh mendukung Client Status Discovery Service (CSDS) API. Anda menggunakan klien CSDS untuk membuat kueri API ini. Hal ini memungkinkan Anda melihat klien mana yang terhubung ke Cloud Service Mesh dan memeriksa konfigurasi yang dibuat Cloud Service Mesh untuk kliennya.

Klien CSDS adalah alat open source yang dapat Anda peroleh dari repositori Envoy. Diagram berikut mengilustrasikan cara klien CSDS membuat kueri Cloud Service Mesh untuk mendapatkan informasi tentang CSDS API Cloud Service Mesh.

Menggunakan CSDS API untuk mendapatkan informasi konfigurasi tentang klien Cloud Service Mesh.
Menggunakan CSDS API untuk mendapatkan informasi konfigurasi tentang klien Cloud Service Mesh (klik untuk memperbesar)

Klien CSDS terhubung ke Cloud Service Mesh dan menampilkan nomor project dan nama jaringan, beserta serangkaian kredensial. Cloud Service Mesh kemudian dapat merespons dengan informasi tentang berbagai klien Cloud Service Mesh yang terhubung dengannya.

Untuk mengetahui informasi selengkapnya tentang klien CSDS, lihat file README.

Prasyarat

Untuk terhubung ke CSDS API, Anda memerlukan klien CSDS. Anda dapat memperoleh klien dengan salah satu dari dua cara berikut:

  1. Anda dapat mem-build klien menggunakan Cloud Shell.
  2. Anda dapat mem-build klien di mesin pengembangan lokal.

Mem-build klien CSDS menggunakan Cloud Shell

Untuk menggunakan Cloud Shell guna mem-build klien CSDS, lakukan hal berikut:

  1. Reset Cloud Shell menggunakan petunjuk di Menonaktifkan atau mereset Cloud Shell. Hal ini memastikan bahwa konfigurasi yang ada tidak mengganggu build Anda.
  2. Di Google Cloud konsol, buka sesi Cloud Shell baru.
  3. Jalankan perintah berikut untuk mendapatkan kode sumber yang Anda gunakan untuk mem-build klien CSDS:

    git clone https://github.com/envoyproxy/envoy-tools.git
    
  4. Buka direktori klien CSDS dan jalankan perintah berikut:

    cd envoy-tools/csds-client/
    make init
    make build
    
  5. Setelah build selesai, uji dengan perintah berikut:

    csds-client -help
    

Jika build berhasil, Anda akan melihat teks bantuan untuk klien.

Mem-build klien CSDS di mesin pengembangan lokal

Anda dapat mendownload dan mem-build klien CSDS di mesin lokal dengan mengikuti petunjuk dalam file README di repositori open source. Untuk melakukannya, Anda juga harus menyiapkan Go dan alat make di lingkungan Anda. Jika Anda tidak ingin melakukannya, gunakan petunjuk sebelumnya untuk Cloud Shell, yang menyediakan Go dan alat make untuk Anda.

Prasyarat tambahan

  1. Pastikan bahwa ID node setiap klien unik dalam mesh layanan. Jika beberapa klien menggunakan ID node yang sama, hanya satu konfigurasi yang ditampilkan—konfigurasi untuk klien yang paling baru terhubung ke Cloud Service Mesh.

    Jika Anda menggunakan paket referensi Google, Anda tidak perlu menetapkan ID node secara manual di file bootstrap; ID node akan dibuat untuk Anda. Jika Anda tidak menggunakan paket referensi, Anda harus menetapkan ID node secara manual di setiap file bootstrap.

  2. Pastikan Anda memiliki akses ke akun pengguna yang memiliki izin Identity and Access Management (IAM) yang diperlukan untuk mengonfigurasi Cloud Service Mesh. Petunjuk berikut menggunakan Google Cloud CLI untuk membuat dan otomatis menyediakan kredensial yang diperlukan oleh klien CSDS. Atau, Anda dapat menggunakan klien CSDS dan memberikan kredensial secara langsung.

Menentukan klien mana yang saat ini terhubung ke Cloud Service Mesh

Anda dapat menggunakan klien CSDS untuk menentukan klien mana yang terhubung ke konfigurasi Cloud Service Mesh Anda.

Untuk mendapatkan informasi ini, Anda memerlukan detail berikut:

  • ID project tempat kredensial dibuat.

  • Jika Anda menggunakan service routing API, salah satu hal berikut, bergantung pada resource yang diambil klien xDS:

    • Nama resource Mesh
    • Parameter cakupan pada resource Gateway
  • Jika Anda menggunakan API lama, nama jaringan VPC yang Anda tentukan saat mengonfigurasi Cloud Service Mesh. Jaringan ini adalah jaringan yang ditentukan oleh aturan penerusan dari peta aturan perutean.

Service routing API

  1. Dari akun yang memiliki izin yang benar, jalankan perintah berikut:

    gcloud auth application-default login \
     --billing-project=BILLING_PROJECT_ID
    
  2. 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 project
    • MESH_OR_SCOPE: jika klien xDS mengambil resource Mesh, gunakan awalan mesh: diikuti dengan nama mesh sebenarnya; jika klien xDS mengambil resource Gateway, gunakan awalan scope: diikuti dengan nama parameter cakupan
  1. Jalankan klien CSDS, yang menggunakan kredensial yang dibuat oleh gcloud CLI. Ganti PATH_TO_CSDS_REQUEST_YAML_FILE dengan jalur ke file YAML yang Anda buat pada 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 yang berikut:

    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 ID klien dari klien yang terhubung ke Cloud Service Mesh. ID klien ini diberikan menggunakan kolom node_id dalam file bootstrap yang digunakan oleh Envoy atau gRPC tanpa proxy saat terhubung ke Cloud Service Mesh.

API lama

  1. Dari akun yang memiliki izin yang benar, jalankan perintah berikut:

    gcloud auth application-default login \
     --billing-project=BILLING_PROJECT_ID
    
  2. 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 Google Cloud proyek
    • NETWORK_NAME: jaringan VPC yang ditentukan oleh aturan penerusan peta aturan perutean
  3. Jalankan klien CSDS, yang menggunakan kredensial yang dibuat oleh gcloud CLI. Ganti PATH_TO_CSDS_REQUEST_YAML_FILE dengan jalur ke file YAML yang Anda buat pada 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 yang berikut:

    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 ID klien dari klien yang terhubung ke Cloud Service Mesh. ID klien ini diberikan menggunakan kolom node_id dalam file bootstrap yang digunakan oleh Envoy atau gRPC tanpa proxy saat terhubung ke Cloud Service Mesh.

Memeriksa konfigurasi untuk klien Cloud Service Mesh tertentu

Anda dapat memeriksa konfigurasi yang dikirim Cloud Service Mesh ke klien tertentu menggunakan ID klien, yang Anda peroleh di bagian sebelumnya.

Anda dapat memeriksa konfigurasi mendetail dari proto resource untuk menentukan versi xDS API yang digunakan klien tertentu. Misalnya, jika Anda melihat envoy.api.v2.Cluster dalam konfigurasi, berarti klien menggunakan v2 API. Jika Anda melihat envoy.api.v3.Cluster dalam konfigurasi, berarti klien menggunakan v3 API. Hanya xDS v3 yang didukung. Untuk mengetahui informasi tentang cara bermigrasi dari v2 ke v3, lihat Bermigrasi dari xDS v2 ke xDS v3.

Service routing API

  1. Perbarui file YAML yang Anda buat di Menentukan klien mana yang saat ini terhubung ke Cloud Service Mesh. Tambahkan kolom node-id yang menggunakan ID klien 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 Anda periksa—misalnya, projects/000000/networks/mesh:mesh1/nodes/00000000-0000-0000-0000-00000000~127.0.0.1
    • PROJECT_NUMBER: ID unik Google Cloud proyek
    • MESH_OR_SCOPE: jika klien xDS mengambil resource Mesh, gunakan awalan mesh: diikuti dengan nama mesh sebenarnya; jika klien xDS mengambil resource Gateway, gunakan awalan scope: diikuti dengan nama parameter cakupan
  2. Jalankan klien CSDS. Menjalankan klien akan membuat 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 YAML Anda
    • FILENAME.JSON: nama untuk file yang menyimpan output klien CSDS

    Anda akan melihat output yang mirip dengan yang berikut:

    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 mendetail dengan melihat file JSON. Output ini berisi status konfigurasi xDS individual yang dikirim oleh Cloud Service Mesh ke klien menggunakan aliran gRPC gabungan (ADS).

API lama

  1. Perbarui file YAML yang Anda buat di Menentukan klien mana yang saat ini terhubung ke Cloud Service Mesh. Tambahkan kolom node-id yang menggunakan ID klien 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 Anda periksa—misalnya, f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6
    • PROJECT_NUMBER: ID unik Google Cloud proyek
    • NETWORK_NAME: Jaringan VPC yang ditentukan oleh aturan penerusan peta aturan perutean
  2. Jalankan klien CSDS. Menjalankan klien akan membuat 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 YAML Anda
    • FILENAME.JSON: nama untuk file yang menyimpan output klien CSDS

    Anda akan melihat output yang mirip dengan yang berikut:

    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 mendetail dengan melihat file JSON. Output ini berisi status konfigurasi xDS individual yang dikirim oleh Cloud Service Mesh ke klien menggunakan aliran gRPC gabungan (ADS).

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 an 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 dikirim.
N/A Klien CSDS tidak menyertakan ID node. Semua aliran yang terhubung akan ditampilkan, tetapi status konfigurasi tidak tersedia.

Visualisasi dan pemantauan

Alat open source klien CSDS memiliki fitur tambahan yang mungkin ingin Anda gunakan, seperti visualisasi dan pemantauan berkelanjutan. Untuk mengetahui informasi selengkapnya tentang fitur ini, lihat file README di 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.

Tindakan ini adalah perilaku yang diharapkan. Konfigurasi Cloud Service Mesh memiliki cakupan per jaringan. Jika Anda belum membuat jaringan dan menjalankan klien CSDS, Anda akan melihat pesan error ini.

Batasan

  • Informasi endpoint tidak disertakan dalam respons CSDS karena informasi ini tidak tersedia di CSDS v3 API.
  • ID node setiap klien harus unik dalam mesh layanan. Jika beberapa klien menggunakan ID node yang sama, hanya satu konfigurasi yang ditampilkan—konfigurasi untuk klien yang paling baru terhubung ke Cloud Service Mesh.
  • Terkadang, Anda mungkin melihat garis miring terbalik (\) di kolom ID node dalam file YAML. Jika hal ini terjadi, hapus garis miring terbalik dengan menggunakan garis miring terbalik tambahan saat Anda membuat kueri CSDS API untuk mendapatkan informasi konfigurasi. Ini adalah masalah yang diketahui.

Langkah berikutnya