Menyiapkan integrasi dengan Service Directory
Panduan ini mengasumsikan bahwa Anda telah men-deploy Cloud Service Mesh dan telah mendaftarkan setidaknya satu layanan dengan Service Directory. Petunjuk penyiapan berlaku baik Anda menggunakan Envoy maupun gRPC tanpa proxy.
Untuk menggunakan Service Directory dan Cloud Service Mesh, langkah pertama adalah mempublikasikan layanan Anda ke Service Directory. Lihat informasi tentang memublikasikan layanan ke Service Directory atau dokumentasi Service Directory untuk mengetahui informasi ringkasan umum.
Setelah layanan didaftarkan ke Service Directory, Anda membuat binding layanan menggunakan resource API Cloud Service Mesh. Anda membuat layanan backend yang dikhususkan untuk integrasi dengan Service Directory, karena layanan backend yang mereferensikan binding layanan tidak dapat memiliki backend atau health check terkait.
Persyaratan aturan penerusan dan aturan host Cloud Service Mesh dengan API load balancing
Saat Anda mengonfigurasi Cloud Service Mesh untuk digunakan dengan Service Directory dan Anda menggunakan API load balancing yang lebih lama, ikuti panduan berikut:
- Pastikan aturan penerusan Cloud Service Mesh menggunakan alamat IP virtual (VIP)
0.0.0.0
. - Jika Anda memiliki zona pribadi, pastikan aturan host di peta URL cocok dengan nama DNS yang dikonfigurasi Direktori Layanan di zona pribadi Cloud DNS Anda.
Jika Anda tidak mengikuti panduan ini, permintaan keluar dari aplikasi Anda kemungkinan akan gagal.
Menetapkan endpoint API network-services
Sebelum membuat dan menggunakan layanan backend, pastikan endpoint API network-services
disetel sehingga resource binding layanan di bagian network-services
resource dirujuk dengan benar. Tetapkan endpoint API network-services
menggunakan perintah berikut.
export CLOUDSDK_API_ENDPOINT_OVERRIDES_NETWORKSERVICES="https://networkservices.googleapis.com/"
Persyaratan peran dan izin
Pastikan Anda memiliki izin dan peran berikut sebelum membuat deployment Cloud Service Mesh.
Izin dan peran binding layanan
Bagian ini tidak membahas izin Pemilik, Editor, dan Viewer di tingkat project. Halaman ini menjelaskan izin dan peran yang diperlukan untuk membuat, membaca, memperbarui, dan menghapus resource.
Tindakan | Izin | Peran |
---|---|---|
Buat binding layanan. | networkservices.serviceBindings.create |
Network Admin |
Mendapatkan pengikatan layanan. | networkservices.serviceBindings.get |
Admin Jaringan, Pelihat Jaringan |
Mencantumkan binding layanan dalam Google Cloud project. | networkservices.serviceBindings.list |
Admin Jaringan, Pelihat Jaringan |
Perbarui binding layanan. | networkservices.serviceBindings.update |
Network Admin |
Hapus binding layanan. | networkservices.serviceBindings.delete |
Network Admin |
Izin layanan Service Directory
Administrator Service Directory harus memberikan izin
servicedirectory.services.bind
ke akun layanan yang mencoba
melampirkan binding layanan ke layanan Service Directory. Hal ini
memungkinkan akun layanan menggunakan layanan Service Directory, yang berarti
akun tersebut dapat mereferensikan layanan Service Directory dalam
binding layanan.
Penerapan izin
Pemeriksaan izin IAM dilakukan saat Anda mengonfigurasi Cloud Service Mesh. Anda harus memiliki izin yang diperlukan untuk membuat binding layanan, dan untuk mengaitkan binding layanan dengan layanan Direktori Layanan tertentu. Jika izin yang benar sudah diterapkan, Anda dapat mengonfigurasi klien mesh untuk mempelajari dan mengirim traffic ke layanan Service Directory.
Karena pemeriksaan ini terjadi pada waktu konfigurasi, menghapus izin pengikatan pada layanan Service Directory yang ada tidak akan mengganggu alur traffic. Setelah binding layanan dibuat, menghapus izin tidak memengaruhi apakah klien mesh dapat mempelajari dan mengirim traffic ke layanan Service Directory.
Untuk menghentikan klien mesh berkomunikasi dengan layanan Service Directory, Anda dapat menggunakan mekanisme lain:
- Membatasi akses ke layanan Direktori Layanan. Misalnya, Anda dapat menggunakan aturan firewall.
- Hapus layanan Service Directory.
- Perbarui konfigurasi Cloud Service Mesh Anda, misalnya, dengan menghapus binding layanan dari layanan backend.
Praktik terbaik
- Meskipun Direktori Layanan memungkinkan pendaftaran endpoint menggunakan Service Directory API, sebaiknya gunakan integrasi yang otomatis mendaftar ke Direktori Layanan saat tersedia. Untuk mengetahui informasi selengkapnya tentang integrasi ini, lihat Ringkasan Service Directory untuk GKE dan Ringkasan Service Directory dan Cloud Load Balancing.
- Sebaiknya gunakan namespace dan layanan yang sama untuk layanan logis tertentu, meskipun layanan tersebut di-deploy di berbagai region.
Menggunakan Service Directory untuk penemuan layanan
Diagram berikut memberikan ringkasan status akhir prosedur penyiapan ini, termasuk konfigurasi, cara berinteraksi antar-sistem, dan cara permintaan diselesaikan ke endpoint layanan. Contoh ini mengasumsikan bahwa Anda telah mendaftarkan layanan dengan Service Directory.
Membuat layanan Direktori Layanan tersedia untuk Cloud Service Mesh terdiri dari langkah-langkah berikut.
- Buat layanan backend baru di Cloud Service Mesh dan jangan buat backend untuk layanan backend.
- Buat binding layanan global untuk layanan Service Directory.
Ikat layanan Service Directory ke layanan backend ini. Jika perlu, tetapkan kolom dan kebijakan tambahan pada layanan backend.
Buat konfigurasi perutean baru, atau perbarui konfigurasi yang ada, sehingga permintaan klien dapat dirutekan ke layanan backend baru.
Anda tidak dapat menyetel health check pada layanan backend yang mereferensikan binding layanan. Layanan backend juga tidak dapat memiliki backend.
Buat integrasi
Gunakan petunjuk berikut untuk mengintegrasikan Cloud Service Mesh dengan Service Directory.
Membuat layanan backend
Gunakan petunjuk berikut untuk membuat layanan backend di deployment Cloud Service Mesh Anda.
Buat layanan backend untuk digunakan dengan layanan Service Directory.
gcloud compute backend-services create td-sd-demo-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED
Buat binding layanan yang mereferensikan layanan Service Directory.
gcloud beta network-services service-bindings create my-sd-binding \ --location global \ --service-directory-region us-east1 \ --service-directory-namespace my-namespace \ --service-directory-service my-service
Ikat layanan ke layanan backend.
gcloud beta compute backend-services update td-sd-demo-service \ --global \ --service-bindings my-sd-binding
Setelah Anda membuat layanan backend dan mengikat satu atau beberapa layanan Service Directory, Cloud Service Mesh akan mulai melacak endpoint yang terkait dengan layanan Service Directory. Endpoint adalah pasangan IP:port yang berbeda. Agar layanan ini dapat dirutekan, Anda perlu mengonfigurasi perutean.
Mengonfigurasi perutean
Gunakan petunjuk berikut untuk memperbarui konfigurasi perutean Anda.
API perutean layanan
Contoh berikut mengasumsikan bahwa Anda memiliki resource Mesh
bernama sidecar-
mesh
. Anda membuat resource HTTPRoute
dengan nama host yang ditetapkan ke
myservice.example.com
dan tujuan yang ditetapkan ke td-sd-demo-service
layanan backend
yang Anda buat di bagian sebelumnya.
Buat spesifikasi
HTTPRoute
dan simpan ke file bernamahttproute.yaml
.name: td-sd-demo-route hostnames: ‐ myservice.example.com meshes: ‐ projects/PROJECT_NUMBER/locations/global/meshes/sidecar-mesh rules: ‐ action: destinations: ‐ serviceName: "projects/PROJECT_NUMBER/locations/global/backendServices/td-sd-demo-service"
Impor spesifikasi
HTTPRoute
.gcloud network-services httproutes import td-sd-demo-route \ --source=httproute.yaml \ --location=global
API penyeimbangan beban
Contoh berikut mengasumsikan bahwa Anda sudah memiliki konfigurasi
routing dasar, termasuk peta URL yang disebut my-url-map
.
- Pertama, Anda membuat pencocok jalur untuk peta URL ini. Pencocokan jalur
tidak rumit. Saat digunakan, kode ini akan di-resolve ke
td-sd-demo-service
, yang Anda buat pada langkah sebelumnya. - Selanjutnya, Anda menambahkan aturan host ke peta URL. Aturan host ini menyebabkan pencocokan jalur digunakan jika permintaan menentukan nama host
myservice.example.com
.
Buat pencocok jalur sederhana yang mengarah ke layanan backend Anda.
gcloud compute url-maps add-path-matcher my-url-map \ --global \ --default-service td-sd-demo-service \ --path-matcher-name my-path-matcher
Petakan layanan backend ke aturan host baru dalam peta URL yang ada.
gcloud compute url-maps add-host-rule my-url-map \ --global \ --path-matcher-name=my-path-matcher \ --hosts=myservice.example.com
Melampirkan layanan yang sama dari beberapa region
Cloud Service Mesh memungkinkan Anda mengikat beberapa layanan Service Directory ke layanan backend yang sama. Misalnya, Anda mungkin memiliki dua layanan Service Directory, yang masing-masing identik, tetapi dengan endpoint di Google Cloud region atau zona yang berbeda.
Dengan kata lain, satu layanan backend global dapat memiliki dua binding layanan global, dengan satu mengarah ke layanan di us-east1
dan yang lainnya mengarah ke layanan di us-west1
.
Buat layanan backend untuk layanan Service Directory yang diimpor.
gcloud compute backend-services create td-sd-demo-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED
Buat binding layanan ke layanan Service Directory di
us-east1
.gcloud beta network-services service-bindings create us-east1-binding \ --location global \ --service-directory-region us-east1 \ --service-directory-namespace my-namespace \ --service-directory-service my-service \
Buat binding layanan ke layanan Service Directory di
us-west1
.gcloud beta network-services service-bindings create us-west1-binding \ --location global --service-directory-region us-west1 \ --service-directory-namespace my-namespace \ --service-directory-service my-service \
Ikat layanan
us-east1
danus-west1
ke layanan backend.gcloud compute backend-services update td-sd-demo-service \ --global \ --service-bindings us-east1-binding,us-west1-binding
Menerapkan kebijakan pengelolaan traffic lanjutan
Di bagian sebelumnya, Anda menggunakan Cloud Service Mesh untuk menyiapkan kebijakan perutean terhadap layanan Service Directory yang ada. Anda dapat menerapkan pola ini ke skenario pengelolaan traffic yang lebih canggih.
Pertimbangkan skenario ini. Anda memiliki layanan pengujian yang sudah ada di luar mesh Cloud Service Mesh. Layanan pengujian adalah backend untuk
Load Balancer Aplikasi internal. Anda ingin memutar ulang beberapa traffic produksi
yang berasal dari mesh Cloud Service Mesh ke layanan eksternal ini.
Cloud Service Mesh dapat melakukannya menggunakan RequestMirrorPolicy
, yang dapat mengirim
traffic ke layanan backend lain saat permintaan diproses. Proses ini juga disebut membayangi permintaan, dan memungkinkan Anda memeriksa traffic tanpa memengaruhi layanan produksi.
Anda dapat mengizinkan klien Envoy untuk meng-shadow traffic ke layanan pengujian dengan menambahkan atau menghapus endpoint layanan pengujian secara manual ke mesh Cloud Service Mesh. Namun, prosesnya lebih sederhana jika Anda menggunakan integrasi Service Directory.
Dalam contoh ini, Anda memulai dengan mengarahkan layanan backend ke pendaftaran Service Directory untuk layanan pengujian pembayaran. Kemudian, Anda menambahkan kebijakan pencerminan permintaan ke layanan di Cloud Service Mesh.
Buat layanan backend untuk kebijakan duplikasi permintaan.
gcloud compute backend-services create payments-test-bes \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED
Buat binding layanan yang mereferensikan layanan Service Directory.
gcloud beta network-services service-bindings create my-sd-binding \ --location global \ --service-directory-region us-east1 \ --service-directory-namespace my-namespace \ --service-directory-service my-service \
Ikat layanan Service Directory ke layanan backend pengujian.
gcloud beta compute backend-services update payments-test-bes \ --global \ --service-bindings my-sd-binding
Edit peta URL untuk mencerminkan permintaan ke layanan pengujian.
gcloud compute url-maps edit my-url-map \ --region=global
Setelah konfigurasi peta URL dimuat ke dalam editor, tambahkan kebijakan pencerminan permintaan untuk mencerminkan permintaan ke layanan Service Directory yang ada.
defaultService: my-project/global/default-service hostRules: - hosts: - '*' pathMatcher: path-matcher-one pathMatchers: - defaultService: my-project/global/default-service name: path-matcher-one pathRules: - paths: - /payments/ service: my-project/global/default-service requestMirrorPolicy: backendService: myproject/global/payments-test-bes
Menghapus binding layanan dari layanan backend
Untuk menghapus binding layanan dari layanan backend, teruskan
daftar binding layanan baru ke perintah gcloud compute backend-services update
. Daftar baru tidak boleh menyertakan binding layanan yang ingin Anda hapus:
- Untuk menghapus semua binding layanan, tetapkan tanda
--no-service-bindings
. - Untuk menghapus satu atau beberapa binding layanan: teruskan daftar binding layanan baru
yang tidak menyertakan binding layanan yang ingin Anda hapus ke
flag
--service-bindings
.
Menambahkan atau menghapus binding layanan
Perintah bind-service
menambahkan binding layanan ke set binding layanan yang ada di
layanan backend.
gcloud compute backend-services bind-service BACKEND_SERVICE_NAME \ --service-binding-name SERVICE_BINDING_URL \ --global
Perintah unbind-service
menghapus binding layanan dari kumpulan binding layanan yang ada di layanan backend.
gcloud compute backend-services unbind-service BACKEND_SERVICE_NAME \ --service-binding-name SERVICE_BINDING_URL \ --global
Perintah bind-service
dan unbind-service
adalah konstruksi Google Cloud CLI. Properti tersebut bukan konstruksi tingkat API.
Langkah berikutnya
- Untuk mengetahui informasi tentang kemampuan pengamatan dengan integrasi ini, lihat Kemampuan pengamatan dan proses debug dengan Service Directory.