Ringkasan API pemilihan rute layanan Cloud Service Mesh

Dokumen ini ditujukan bagi administrator mesh atau platform dan developer layanan yang memiliki tingkat pemahaman menengah hingga lanjutan tentang Cloud Service Mesh dan konsep mesh layanan, serta yang men-deploy Cloud Service Mesh di Compute Engine dengan instance VM. Dokumen ini berlaku untuk deployment yang menggunakan klien Envoy dan gRPC. Untuk mengetahui informasi selengkapnya tentang konsep Cloud Service Mesh, lihat ringkasan umum.

Cloud Service Mesh menyediakan kemampuan jaringan layanan untuk aplikasi Anda, termasuk pengelolaan traffic lanjutan, kemampuan observasi, dan keamanan. Namun, mengonfigurasi dan mengoperasikan mesh layanan merupakan tugas yang kompleks bagi administrator mesh dan developer layanan.

Dokumen ini menjelaskan API pemilihan rute layanan untuk mengonfigurasi Cloud Service Mesh. API ini dirancang untuk menyederhanakan dan meningkatkan pengalaman konfigurasi mesh Anda secara keseluruhan.

Model pemilihan rute layanan menggunakan resource API yang disebut Mesh, Gateway, dan Route. Resource ini memberikan pengalaman konfigurasi yang relevan secara kontekstual saat Anda menentukan bidang kontrol jaringan layanan.

Dokumen ini memperkenalkan model dan resource API perutean layanan berikut.

  • Meshreferensi
    • Pengelolaan traffic dan konfigurasi keamanan service-to-service (east-west) untuk proxy file bantuan Envoy dan klien gRPC tanpa proxy.
  • Gatewayreferensi

    • Pengelolaan traffic dan konfigurasi keamanan untuk proxy Envoy yang bertindak sebagai gateway masuk, memungkinkan klien eksternal terhubung ke mesh layanan (utara-selatan).
  • Resource Route dengan jenis berikut:

Konsol Google Cloud tidak menyediakan dukungan untuk API perutean layanan. Anda harus menerapkan resource API ini menggunakan Google Cloud CLI atau REST API.

Kasus penggunaan dan manfaat

API pemilihan rute layanan memungkinkan Anda mengonfigurasi Cloud Service Mesh untuk deployment proxy Envoy dan gRPC tanpa proxy. Model API pemilihan rute layanan memberikan beberapa manfaat utama.

Dalam diagram berikut, dua layanan dalam mesh layanan dihubungkan oleh resource Mesh. Dua resource HTTPRoute mengonfigurasi perutean. Administrator mesh atau platform mengelola resource Mesh dan dua pemilik layanan membuat konfigurasi perutean untuk layanan mereka.

Traffic layanan-ke-layanan timur-barat dalam mesh layanan
Traffic layanan-ke-layanan timur-barat dalam mesh layanan (klik untuk memperbesar)

Desain API berorientasi peran memungkinkan pemisahan tanggung jawab yang jelas

API pemilihan rute layanan memungkinkan Anda memisahkan tanggung jawab konfigurasi mesh berdasarkan peran organisasi:

  • Administrator mesh dapat menentukan mesh logis serta infrastruktur gateway masuk.
  • Pemilik layanan (developer aplikasi) dapat menentukan pola akses untuk layanan mereka secara mandiri. Admin juga dapat menentukan dan menerapkan kebijakan pengelolaan traffic untuk layanannya.

Dalam diagram berikut, Cloud Load Balancing dan resource Gateway menyediakan gateway masuk untuk traffic yang memasuki mesh dari klien yang tidak ada di mesh. Administrator mesh mengonfigurasi dan mengelola resource Gateway, sedangkan pemilik layanan mengonfigurasi dan mengelola layanan dan perutean traffic mereka sendiri.

Traffic utara-selatan ke mesh melalui gateway
Traffic utara selatan menuju mesh melalui gateway (klik untuk memperbesar)

Keandalan yang ditingkatkan dengan model layanan mandiri

API pemilihan rute layanan menggunakan resource per protokol, per rute yang dapat dikonfigurasi dan dimiliki oleh pemilik layanan independen. Pendekatan ini memiliki beberapa kelebihan.

  • Pemilik layanan memiliki otonomi atas cara mengonfigurasi kebijakan dan pengelolaan traffic untuk layanan yang mereka miliki.
  • Memperbarui satu resource Route tidak memengaruhi resource Route lain di mesh. Proses update lebih andal karena pemilik layanan mengelola konfigurasi kecil.
  • Pemilik layanan yang bertanggung jawab atas layanan tujuan atau nama host memiliki setiap resource Route.
  • Pemilik layanan tidak perlu bergantung pada administrator mesh untuk memperbarui perutean.

Mengaktifkan mesh layanan yang mencakup beberapa project di lingkungan VPC Bersama

Model API pemilihan rute layanan memungkinkan pemilik layanan berpartisipasi dalam infrastruktur mesh bersama menggunakan VPC Bersama dan sarana konektivitas lainnya sambil mempertahankan kontrol independen atas layanan mereka. Misalnya, pemilik layanan dapat menentukan resource Route dalam project-nya sendiri. Administrator platform dapat menentukan Mesh dalam project host yang dikelola secara terpusat, lalu memberikan izin IAM kepada pemilik layanan untuk melampirkan resource Route mereka ke Mesh atau Gateway bersama. Diagram berikut menunjukkan contoh dengan VPC Bersama.

Referensi lintas project dengan VPC Bersama
Referensi lintas project dengan VPC Bersama (klik untuk memperbesar)

API pemilihan rute layanan juga memungkinkan Anda memiliki klien mesh layanan yang terhubung ke berbagai jaringan menggunakan Peering Jaringan VPC.

Merutekan traffic berdasarkan indikator nama server

Resource TLSRoute memungkinkan Anda merutekan traffic yang dienkripsi TLS berdasarkan Server Name Indication (SNI) di TLS handshake. Anda dapat mengonfigurasi traffic TLS agar dirutekan ke layanan backend yang sesuai dengan mengonfigurasi pencocokan SNI di resource TLSRoute. Dalam deployment ini, proxy hanya mengarahkan traffic, sedangkan sesi TLS dihentikan di backend instance tujuan.

Resource TLSRoute hanya didukung dengan proxy Envoy yang di-deploy sebagai gateway atau proxy file bantuan.

Resource TLSRoute dilampirkan ke resource Mesh

Deployment yang ditunjukkan dalam diagram berikut merutekan traffic mesh layanan apa pun yang ekstensi SNI-nya memiliki nilai service1 ke layanan backend service1. Selain itu, setiap traffic mesh layanan yang ekstensi SNI-nya memiliki nilai service2 akan dirutekan ke layanan backend service2. Nilai ekstensi SNI dan nama layanan backend tidak saling bergantung.

Resource TLSRoute dan resource Mesh
Referensi TLSRoute dan referensi Mesh (klik untuk memperbesar)

Resource TLSRoute dilampirkan ke resource Gateway

Deployment yang ditunjukkan dalam diagram berikut merutekan traffic masuk ke resource Gateway tempat ekstensi SNI memiliki nilai serviceA ke layanan backend serviceA. Selain itu, setiap traffic masuk ke Gateway tempat ekstensi SNI memiliki nilai serviceB akan dirutekan ke layanan backend serviceB. Nilai ekstensi SNI dan nama layanan backend tidak saling bergantung. Nilai ekstensi SNI dan header dalam permintaan HTTP juga independen.

Resource Gateway tidak menghentikan koneksi TLS pada proxy Envoy Gateway. Sebagai gantinya, koneksi TLS dihentikan pada layanan backend yang sesuai. Selain melihat ClientHello, yang berisi ekstensi SNI teks biasa, Gateway tidak dapat memeriksa informasi apa pun yang dienkripsi di lapisan TLS. Gateway melakukan passthrough TLS dalam mode ini. Perlu diperhatikan bahwa ClientHello terenkripsi tidak didukung.

Resource TLSRoute dan resource Gateway
Referensi TLSRoute dan referensi Gateway (klik untuk memperbesar)

Dukungan gRPC inti

Anda dapat mengonfigurasi klien gRPC tanpa proxy menggunakan atribut gRPC inti seperti pencocokan menurut metode.

Pemisahan traffic untuk traffic TCP

Anda dapat menerapkan pemisahan traffic berbasis bobot untuk traffic TCP di beberapa layanan backend. Anda dapat mengonfigurasi pola seperti peluncuran canary (biru-hijau) saat mengupdate layanan. Pembagian traffic juga memungkinkan Anda memigrasikan traffic dengan cara yang terkontrol tanpa periode nonaktif.

Intersepsi lalu lintas

Saat Anda menggunakan resource Mesh dan Gateway API pemilihan rute layanan, semua traffic akan otomatis ditangkap. Untuk mengetahui informasi selengkapnya, lihat Opsi untuk penyiapan VM Compute Engine dengan deployment Envoy otomatis.

Arsitektur dan resource

Bagian ini menjelaskan model API pemilihan rute layanan dan resource-nya, serta membantu Anda memahami cara kerja bersama resource API pemilihan rute layanan.

Resource Mesh

Resource Mesh mewakili instance mesh layanan. Anda menggunakannya untuk membuat mesh layanan logis dalam project Anda. Setiap resource Mesh harus memiliki nama unik dalam project. Setelah resource Mesh dibuat, namanya tidak dapat diubah.

Resource Mesh API dengan file bantuan Envoy dan deployment gRPC tanpa proxy
MeshResource API dengan deployment gRPC Envoy dan tanpa proxy (klik untuk memperbesar)

Resource Mesh dirujuk dalam resource Route untuk menambahkan rute ke layanan yang merupakan bagian dari mesh.

Klien Envoy proxy dan gRPC tanpa proxy menerima konfigurasi dari Cloud Service Mesh dengan menggabungkan mesh layanan yang diidentifikasi oleh nama resource Mesh. Resource Mesh mendukung deployment bidang data berikut:

  • Envoy yang berjalan bersama aplikasi sebagai proxy file bantuan
  • Klien gRPC tanpa proxy
  • Campuran file bantuan Envoy dan klien gRPC tanpa proxy

Resource Route

Resource Route digunakan untuk menyiapkan pemilihan rute ke layanan. Ada empat jenis resource API Route yang berbeda. Layanan ini menentukan protokol yang digunakan untuk mengarahkan traffic ke layanan backend.

  • HTTPRoute
  • GRPCRoute
  • TCPRoute
  • TLSRoute

API ini tidak berisi kata demi kata Route API. Satu-satunya resource API yang dapat dikonfigurasi adalah HTTPRoute, GRPCRoute, TCPRoute, dan TLSRoute.

Resource Route mereferensikan satu atau beberapa resource Mesh dan Gateway untuk menambahkan rute yang merupakan bagian dari konfigurasi Mesh atau Gateway yang sesuai. Resource Route dapat mereferensikan resource Gateway dan Mesh.

Resource Route juga merujuk pada satu atau beberapa resource layanan backend. Layanan dikonfigurasi menggunakan API layanan backend. Anda membuat resource layanan backend yang mengarah ke satu atau beberapa backend MIG atau NEG.

Diagram berikut menunjukkan hubungan antara resource Mesh, Gateway, dan Route serta resource layanan backend dan backend-nya.

Merutekan resource API
Route Referensi API (klik untuk memperbesar)

Anda menentukan kemampuan pengelolaan traffic lainnya, seperti pemilihan rute, modifikasi header, waktu tunggu, dan pemisahan traffic berbasis bobot di resource Route. Misalnya, dalam diagram berikut, resource HTTPRoute menentukan pembagian traffic sebesar 70% / 30% antara dua layanan backend.

Pemisahan traffic berbasis bobot
Pembagian traffic berdasarkan bobot (klik untuk memperbesar)

Untuk menyederhanakan administrasi mesh layanan, Anda dapat mencantumkan semua resource Route yang dilampirkan ke resource Mesh atau Gateway.

Resource TLSRoute

Gunakan resource TLSRoute untuk merutekan traffic TLS ke layanan backend berdasarkan nama host SNI dan nama Negosiasi Protokol Lapisan Aplikasi (ALPN). Konfigurasi TLSRoute mengimplikasikan passthrough TLS, di mana proxy Envoy tidak menghentikan traffic TLS.

Resource TLSRoute mereferensikan satu atau beberapa resource Mesh dan Gateway untuk menambahkan rute yang merupakan bagian dari konfigurasi Mesh atau Gateway yang sesuai.

Resource TLSRoute juga merujuk ke satu atau beberapa resource layanan backend. Layanan dikonfigurasi menggunakan resource API layanan backend.

Resource Gateway

Resource Gateway digunakan untuk merepresentasikan proxy Envoy yang bertindak sebagai gateway masuk, sehingga klien eksternal dapat terhubung ke mesh layanan (traffic utara-selatan). Resource ini memiliki port pemrosesan bersama dengan parameter scope. Proxy Envoy yang bertindak sebagai gateway masuk akan terikat ke port yang ditentukan dan ke 0.0.0.0, yang mewakili semua alamat IP di VM lokal. Diagram berikut menunjukkan proxy Envoy yang di-deploy sebagai layanan masuk dan dikonfigurasi oleh resource Gateway. Dalam contoh khusus ini, proxy Envoy dikonfigurasi untuk memproses koneksi masuk dari klien di port 80.

Resource Gateway API hanya mendukung bidang data proxy Envoy. Metode ini tidak mendukung gRPC tanpa proxy. gRPCRoutes didukung di resource Gateway, tetapi traffic gRPC dirutekan oleh proxy Envoy, yang bertindak sebagai proxy tengah.

Traffic masuk mesh layanan melalui resource `Gateway`
Ingress mesh layanan melalui resource Gateway (klik untuk memperbesar)
Resource gateway
Gateway resource (klik untuk memperbesar)

Apa yang dimaksud dengan cakupan Gateway dan konfigurasi Gateway yang digabungkan?

Instance resource Gateway mewakili port dan konfigurasi khusus untuk traffic yang diterima di port tersebut. Resource API Gateway memiliki parameter, scope, yang digunakan untuk mengelompokkan dan menggabungkan konfigurasi dari dua atau beberapa resource Gateway secara logis.

Misalnya, jika Anda ingin proxy Gateway memproses masing-masing traffic di port 80 dan 443 untuk menerima traffic HTTP dan HTTPS, buat dua resource Gateway. Konfigurasikan satu resource Gateway dengan port 80, untuk traffic HTTP, dan resource lain dengan 443, untuk traffic HTTPS. Berikan kolom scope di setiap nilai yang sama. Cloud Service Mesh secara dinamis menggabungkan setiap konfigurasi dari semua Gateway yang memiliki cakupan yang sama. Di sisi bidang data, proxy Envoy yang berjalan dalam mode gateway masuk juga harus menyajikan parameter cakupan yang sama ke Cloud Service Mesh untuk menerima konfigurasi Gateway. Perhatikan bahwa Anda menentukan cakupan saat membuat resource Gateway, dan menentukan cakupan yang sama dengan parameter bootstrap untuk proxy.

Perilaku penggabungan resource gateway
Perilaku penggabungan resource Gateway (klik untuk memperbesar)

Berikut adalah pertimbangan utama untuk resource Gateway:

  • Parameter cakupan Gateway wajib diisi. Tentukan cakupan dalam resource Gateway dan dalam konfigurasi bootstrap proxy Envoy, meskipun hanya ada satu Gateway.
  • Membuat resource Gateway tidak akan men-deploy layanan dengan proxy Envoy. Men-deploy proxy Envoy adalah langkah terpisah.
  • Resource Gateway memiliki type yang merepresentasikan jenis deployment masuk. Kolom ini dicadangkan untuk penggunaan pada masa mendatang. Satu-satunya nilai yang didukung saat ini adalah OPEN_MESH, yang merupakan nilai default dan yang tidak dapat dimodifikasi.

Deployment mesh dengan protokol campuran dan paket data

Anda dapat memiliki deployment bidang data campuran, dengan proxy Envoy dan gRPC tanpa proxy dalam mesh yang sama. Saat Anda membuat deployment tersebut, pertimbangkan hal-hal berikut.

  • Deployment file bantuan Envoy mendukung semua Rute (HTTPRoute, GRPCRoute, TCPRoute, dan TLSRoute).
  • Deployment gRPC tanpa proxy hanya mendukung GRPCRoute.
  • GRPCRoute dibatasi untuk fitur yang hanya didukung oleh deployment tanpa proxy gRPC.

Topologi yang didukung di lingkungan VPC Bersama multi-project

Cloud Service Mesh mendukung penambahan resource Route yang ditentukan dalam project lain ke resource Mesh atau Gateway yang ditentukan dalam project administrasi terpusat. Pemilik layanan resmi dapat langsung menambahkan konfigurasi pemilihan rute layanannya ke Mesh atau Gateway.

Rujukan lintas project antara resource Mesh dan Rute
Referensi lintas project antara resource Mesh dan Route (klik untuk memperbesar)

Dalam skenario lintas project standar, Anda memilih project (project host atau project administrasi yang dikontrol secara terpusat) sebagai project administrasi mesh tempat Anda membuat resource Mesh. Pemilik project administrasi mesh mengizinkan resource Route dari project lain untuk mereferensikan resource Mesh, sehingga konfigurasi perutean dari project lain dapat menjadi bagian dari mesh. Bidang data mesh, baik Envoy maupun gRPC, meminta konfigurasi dari project administrasi dan menerima gabungan semua rute yang disertakan ke Mesh. Untuk Gateway, rute juga digabungkan di semua Gateways yang menggunakan cakupan yang sama.

Project administrasi Mesh dapat berupa project apa pun yang Anda pilih, dan konfigurasinya akan berfungsi selama project yang mendasarinya memiliki konektivitas jaringan VPC, baik melalui VPC Bersama maupun Peering Jaringan VPC.

Izin dan peran IAM

Berikut adalah izin IAM yang diperlukan untuk mendapatkan, membuat, memperbarui, menghapus, mencantumkan, dan menggunakan resource Mesh dan Route dengan aman.

  • Administrator mesh harus memiliki izin networkservices.mesh.*.
  • Administrator gateway harus memiliki izin networkservices.gateways.*.
  • Pemilik layanan harus memiliki izin networkservices.grpcRoutes.*, networkservices.httpRoutes.*, atau networkservices.tcpRoutes.*.

Administrator mesh harus memberikan izin networkservices.mesh.use kepada pemilik layanan sehingga pemilik layanan dapat melampirkan resource Route mereka ke resource Mesh. Model yang sama berlaku untuk resource Gateway.

Guna melihat semua izin IAM untuk resource Mesh, buka halaman referensi izin IAM, lalu telusuri meshes.

Tidak ada peran bawaan tambahan yang diperlukan. Peran Admin Jaringan Compute yang sudah ada dan ditetapkan sebelumnya (roles/compute.networkAdmin) memiliki izin networkservices.* secara default. Anda mungkin perlu menambahkan izin yang dijelaskan sebelumnya ke peran khusus Anda.

Pertimbangan dan batasan

  • Konsol Google Cloud tidak mendukung API perutean layanan.
  • Gunakan xDS API versi 3 atau yang lebih baru.
    • Minimum Envoy versi 1.20.0 (karena API perutean layanan hanya didukung di xDS versi 3)
    • Versi generator bootstrap gRPC minimum v0.14.0
  • Resource TLSRoute hanya didukung dengan proxy Envoy yang di-deploy sebagai gateway atau proxy file bantuan.
  • Hanya VM Compute Engine dengan deployment Envoy otomatis dan Pod GKE dengan injeksi Envoy otomatis yang didukung. Anda tidak dapat menggunakan deployment manual bersama API pemilihan rute layanan.
  • API pemilihan rute layanan tidak kompatibel dengan API lama.
  • Saat resource TCPRoute dikaitkan ke resource Mesh, port yang digunakan untuk mencocokkan traffic TCP tidak dapat digunakan untuk menyalurkan apa pun kecuali traffic yang dijelaskan oleh TCPRoute ini.
    • Misalnya, deployment Anda mungkin menyertakan resource TCPRoute yang cocok dengan port "8000" dan resource HttpRoute. Jika keduanya dilampirkan ke resource Mesh yang sama, traffic yang dirutekan oleh resource HTTPRoute tidak dapat menggunakan port 8000 meskipun alamat IP yang mendasarinya berbeda. Batasan ini berasal dari penerapan proxy Envoy, yang menetapkan prioritas ke rute yang cocok dengan port terlebih dahulu.
  • Resource Gateway tidak menyediakan load balancer terkelola dan tidak membuat layanan Envoy secara dinamis.
  • Envoy yang di-deploy secara otomatis yang berfungsi sebagai gateway masuk tidak boleh memiliki argumen serving_ports terhadap flag --service-proxy.
  • Envoy yang di-deploy secara otomatis tidak mendukung penyediaan nomor project yang berbeda dengan project VM.

Langkah selanjutnya

  • Untuk informasi tentang cara mencantumkan resource rute yang terkait dengan resource Mesh atau Gateway, lihat Mencantumkan resource Route. Fitur ini sedang dalam Pratinjau.
  • Untuk informasi tentang API pemilihan rute layanan, baca dokumentasi untuk API layanan jaringan.