Ringkasan API perutean layanan Cloud Service Mesh
Dokumen ini ditujukan untuk 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, kemampuan observasi, dan keamanan tingkat lanjut. Namun, mengonfigurasi dan mengoperasikan mesh layanan adalah tugas yang kompleks bagi administrator mesh dan developer layanan.
Dokumen ini menjelaskan API perutean layanan untuk mengonfigurasi Cloud Service Mesh. API ini dirancang untuk menyederhanakan dan meningkatkan pengalaman konfigurasi mesh secara keseluruhan.
Model perutean 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.
Meshresource- Konfigurasi keamanan dan pengelolaan traffic layanan ke layanan (timur-barat) untuk proxy sidecar Envoy dan klien gRPC tanpa proxy.
-
- Konfigurasi keamanan dan pengelolaan traffic untuk proxy Envoy yang bertindak sebagai gateway ingress, yang memungkinkan klien eksternal terhubung ke mesh layanan (utara-selatan).
Resource
Routedengan jenis berikut:
Konsol tidak memberikan dukungan untuk API perutean layanan. Google Cloud Anda harus mengimplementasikan resource API ini menggunakan Google Cloud CLI atau REST API.
Kasus penggunaan dan manfaat
API perutean layanan memungkinkan Anda mengonfigurasi Cloud Service Mesh untuk deployment proxy Envoy dan gRPC tanpa proxy. Model API perutean layanan memberikan beberapa manfaat utama.
Dalam diagram berikut, dua layanan dalam mesh layanan terhubung 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.
Desain API berorientasi peran memungkinkan pemisahan tanggung jawab yang jelas
API perutean layanan memungkinkan Anda memisahkan tanggung jawab konfigurasi mesh berdasarkan peran organisasi:
- Administrator mesh dapat menentukan mesh logis serta infrastruktur gateway ingress.
- Pemilik layanan (developer aplikasi) dapat menentukan pola akses untuk layanan mereka secara independen. Mereka juga dapat menentukan dan menerapkan kebijakan pengelolaan traffic untuk layanan mereka.
Dalam diagram berikut, Cloud Load Balancing dan resource Gateway menyediakan gateway ingress untuk traffic yang masuk ke mesh dari klien yang tidak berada di mesh. Administrator mesh mengonfigurasi dan mengelola resource Gateway, sedangkan pemilik layanan mengonfigurasi dan mengelola layanan dan perutean traffic mereka sendiri.
Peningkatan keandalan dengan model layanan mandiri
API perutean layanan menggunakan resource per-protokol, per-rute yang dapat dikonfigurasi dan dimiliki oleh pemilik layanan independen. Pendekatan ini memiliki beberapa keunggulan.
- Pemilik layanan memiliki otonomi atas cara mereka mengonfigurasi kebijakan dan pengelolaan traffic untuk layanan yang mereka miliki.
- Mengupdate satu resource
Routetidak memengaruhi resourceRoutelainnya di mesh. Proses update lebih andal karena pemilik layanan mengelola konfigurasi kecil. - Pemilik layanan yang bertanggung jawab atas layanan atau nama host tujuan memiliki setiap resource
Route. - Pemilik layanan tidak perlu bergantung pada administrator mesh untuk mengupdate perutean.
Mengaktifkan mesh layanan yang mencakup beberapa project di lingkungan VPC Bersama
Model API perutean layanan memungkinkan pemilik layanan berpartisipasi dalam infrastruktur mesh bersama menggunakan VPC Bersama dan cara konektivitas lainnya sambil mempertahankan kontrol independen atas layanan mereka. Misalnya, pemilik layanan dapat menentukan resource Route di project mereka 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.
API perutean layanan juga memungkinkan Anda memiliki klien mesh layanan yang terhubung ke jaringan yang berbeda menggunakan Peering Jaringan VPC.
Merutekan traffic berdasarkan indikator nama server
Resource TLSRoute memungkinkan Anda merutekan traffic terenkripsi TLS berdasarkan Indikasi Nama Server (SNI) dalam handshake TLS. Anda dapat mengonfigurasi traffic TLS agar dirutekan ke layanan backend yang sesuai dengan mengonfigurasi kecocokan SNI di resource TLSRoute. Dalam deployment ini, proxy hanya merutekan traffic dan sesi TLS dihentikan di instance backend tujuan.
Resource TLSRoute hanya didukung dengan proxy Envoy yang di-deploy sebagai proxy atau gateway sidecar.
Resource TLSRoute yang dilampirkan ke resource Mesh
Deployment yang ditampilkan dalam diagram berikut merutekan traffic mesh layanan apa pun
yang ekstensi SNI-nya memiliki nilai service1 ke layanan backend
service1. Selain itu, traffic mesh layanan apa pun yang ekstensi SNI-nya memiliki nilai service2 akan dirutekan ke layanan backend service2. Nilai ekstensi SNI dan nama layanan backend tidak bergantung satu sama lain.
TLSRoute resource dan Mesh resource (klik untuk memperbesar)Resource TLSRoute yang dilampirkan ke resource Gateway
Deployment yang ditampilkan dalam diagram berikut merutekan traffic masuk apa pun ke resource Gateway yang ekstensi SNI-nya memiliki nilai serviceA ke layanan backend serviceA. Selain itu, traffic masuk apa pun ke Gateway yang ekstensi SNI-nya memiliki nilai serviceB akan dirutekan ke layanan backend serviceB. Nilai ekstensi SNI dan nama layanan backend tidak bergantung satu sama lain. Nilai ekstensi SNI dan header dalam permintaan HTTP juga independen.
Resource Gateway tidak menghentikan koneksi TLS di proxy Envoy Gateway. Sebagai gantinya, koneksi TLS dihentikan di layanan backend yang sesuai. Gateway tidak dapat memeriksa informasi apa pun yang dienkripsi di lapisan TLS, selain melihat ClientHello, yang berisi ekstensi SNI teks biasa. Gateway melakukan TLS passthrough dalam mode ini. Perhatikan bahwa ClientHello terenkripsi tidak didukung.
TLSRoute resource dan Gateway resource (klik untuk memperbesar)Dukungan gRPC inti
Anda dapat mengonfigurasi klien gRPC tanpa proxy menggunakan atribut gRPC inti seperti pencocokan berdasarkan 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. Pemisahan traffic juga memungkinkan Anda memigrasikan traffic dengan cara yang terkontrol tanpa waktu non-operasional.
Pencegatan traffic
Saat Anda menggunakan resource Mesh dan Gateway API perutean layanan, semua traffic akan otomatis dicegat. Untuk mengetahui informasi selengkapnya, lihat
Opsi untuk penyiapan VM Compute Engine dengan deployment Envoy otomatis.
Arsitektur dan resource
Bagian ini menjelaskan model API perutean layanan dan resource-nya, serta membantu Anda memahami cara resource API perutean layanan bekerja sama.
Resource Mesh
Resource Mesh mewakili instance mesh layanan. Anda menggunakannya untuk membuat mesh layanan logis di project Anda. Setiap resource Mesh harus memiliki nama yang unik dalam project. Setelah resource Mesh dibuat, namanya tidak dapat diubah.
MeshResource API dengan deployment sidecar Envoy dan gRPC tanpa proxy (klik untuk memperbesar)Resource Mesh direferensikan dalam resource Route untuk menambahkan rute bagi layanan yang merupakan bagian dari mesh.
Klien gRPC tanpa proxy dan proxy Envoy menerima konfigurasi dari Cloud Service Mesh dengan bergabung ke mesh layanan yang diidentifikasi berdasarkan nama resource Mesh. Resource Mesh mendukung deployment bidang data berikut:
- Envoy berjalan bersama aplikasi sebagai proxy sidecar
- Klien gRPC tanpa proxy
- Kombinasi klien gRPC tanpa proxy dan sidecar Envoy
Resource Route
Resource Route digunakan untuk menyiapkan perutean ke layanan. Ada empat jenis resource API Route yang berbeda. Resource ini menentukan protokol yang digunakan untuk merutekan traffic ke layanan backend.
HTTPRouteGRPCRouteTCPRouteTLSRoute
API tidak berisi Route API verbatim. Satu-satunya resource API yang dapat dikonfigurasi adalah HTTPRoute, GRPCRoute, TCPRoute, dan TLSRoute.
Resource Route mereferensikan satu atau beberapa
Mesh dan Gateway resource
untuk menambahkan rute yang merupakan bagian dari konfigurasi Mesh atau
Gateway yang sesuai. Resource Route dapat mereferensikan resource Gateway dan Mesh.
Resource Route juga mereferensikan satu atau lebih
layanan backend
resource. 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.
Route Resource API (klik untuk memperbesar)Anda menentukan kemampuan pengelolaan traffic lainnya, seperti perutean, modifikasi header, waktu tunggu, dan pemisahan traffic berbasis bobot di resource Route.
Misalnya, dalam diagram berikut, resource HTTPRoute menentukan pemisahan traffic 70% / 30% antara dua layanan backend.
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 menyiratkan TLS passthrough, yang 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 mereferensikan satu atau beberapa resource layanan backend.
Layanan dikonfigurasi menggunakan resource API layanan backend.
Resource Gateway
Resource Gateway digunakan untuk mewakili proxy Envoy yang bertindak sebagai gateway ingress, yang memungkinkan klien eksternal terhubung ke mesh layanan (traffic utara-selatan). Resource ini memiliki port pendengar bersama dengan parameter scope. Proxy Envoy yang bertindak sebagai gateway ingress 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 ingress dan dikonfigurasi oleh resource Gateway. Dalam contoh khusus ini, proxy Envoy dikonfigurasi untuk mendengarkan di port 80 untuk koneksi masuk dari klien.
Resource API Gateway hanya mendukung bidang data proxy Envoy. Resource ini tidak mendukung gRPC tanpa proxy. gRPCRoutes didukung dalam resource Gateway, tetapi traffic gRPC dirutekan oleh proxy Envoy, yang bertindak sebagai proxy tengah.
Gateway (klik untuk memperbesar)Gateway (klik untuk memperbesar)Apa yang dimaksud dengan cakupan Gateway dan konfigurasi Gateway gabungan?
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 dua atau beberapa resource Gateway secara logis.
Misalnya, jika Anda ingin proxy Gateway mendengarkan di port 80 dan 443 untuk menerima traffic HTTP dan HTTPS, Anda membuat dua resource Gateway.
Konfigurasikan satu resource Gateway dengan port 80, untuk traffic HTTP, dan yang lainnya dengan 443, untuk traffic HTTPS. Beri kolom scope di setiap nilai yang sama.
Cloud Service Mesh menggabungkan konfigurasi individual dari semua Gateway yang memiliki cakupan yang sama secara dinamis. Di sisi bidang data, proxy Envoy yang berjalan dalam mode gateway ingress juga harus menampilkan parameter cakupan yang sama ke Cloud Service Mesh untuk menerima konfigurasi Gateway. Perhatikan bahwa Anda menentukan cakupan saat membuat resource Gateway, dan Anda menentukan cakupan yang sama sebagai parameter bootstrap untuk proxy.
Gateway perilaku penggabungan resource (klik untuk memperbesar)Berikut adalah pertimbangan utama untuk resource Gateway:
- Parameter cakupan
Gatewaywajib diisi. Tentukan cakupan di resourceGatewaydan dalam konfigurasi bootstrap proxy Envoy meskipun hanya ada satuGateway. - Membuat resource
Gatewaytidak men-deploy layanan dengan proxy Envoy. Men-deploy proxy Envoy adalah langkah terpisah. - Resource
Gatewaymemilikitypeyang mewakili jenis deployment ingress. Kolom ini dicadangkan untuk penggunaan di masa mendatang. Satu-satunya nilai yang saat ini didukung adalahOPEN_MESH, yang merupakan nilai default dan tidak dapat diubah.
Deployment mesh dengan protokol dan bidang data campuran
Anda dapat memiliki deployment bidang data campuran, dengan proxy Envoy dan gRPC tanpa proxy di mesh yang sama. Saat membuat deployment tersebut, pertimbangkan hal berikut.
- Deployment sidecar Envoy mendukung semua Rute (
HTTPRoute,GRPCRoute,TCPRoute, danTLSRoute). - Deployment gRPC tanpa proxy hanya mendukung
GRPCRoute. GRPCRouteterbatas pada fitur yang hanya didukung oleh deployment gRPC tanpa proxy.
Topologi yang didukung di lingkungan VPC Bersama multi-project
Cloud Service Mesh mendukung penambahan resource Route yang ditentukan di project lain ke resource Mesh atau Gateway yang ditentukan dalam project administrasi terpusat. Pemilik layanan yang diotorisasi dapat langsung menambahkan konfigurasi perutean layanan mereka ke Mesh atau Gateway.
Mesh dan Route resource (klik untuk memperbesar)Dalam skenario lintas project yang umum, 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 mengotorisasi 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 dilampirkan 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 konfigurasi 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, mengupdate, menghapus, mencantumkan, dan menggunakan resource Mesh dan Route secara aman.
- Administrator mesh harus memiliki izin
networkservices.mesh.*. - Administrator gateway harus memiliki izin
networkservices.gateways.*. - Pemilik layanan harus memiliki izin
networkservices.grpcRoutes.*,networkservices.httpRoutes.*, ataunetworkservices.tcpRoutes.*.
Administrator mesh harus memberikan izin networkservices.mesh.use kepada pemilik layanan agar pemilik layanan dapat melampirkan resource Route mereka ke resource Mesh. Model yang sama berlaku untuk resource Gateway.
Untuk melihat semua izin IAM untuk resource Mesh, buka
halaman referensi izin IAM
dan telusuri meshes.
Tidak ada peran bawaan tambahan yang diperlukan. Peran bawaan yang ada
Admin Jaringan Compute
(roles/compute.networkAdmin) memiliki izin networkservices.* secara default.
Anda mungkin perlu menambahkan izin yang dijelaskan sebelumnya ke peran kustom Anda.
Pertimbangan dan batasan
- Konsol tidak mendukung API perutean layanan. Google Cloud
- Gunakan
xDS API versi 3
atau yang lebih baru.
- Versi Envoy minimum 1.20.0 (karena API perutean layanan hanya didukung di xDS versi 3)
- Versi generator bootstrap gRPC minimum v0.14.0
- Resource
TLSRoutehanya didukung dengan proxy Envoy yang di-deploy sebagai proxy atau gateway sidecar. - Hanya VM Compute Engine dengan deployment Envoy otomatis dan Pod GKE dengan injeksi Envoy otomatis yang didukung. Anda tidak dapat menggunakan deployment manual dengan API perutean layanan.
- API perutean layanan tidak kompatibel mundur dengan API lama.
- Saat resource
TCPRoutedilampirkan ke resourceMesh, port yang digunakan untuk mencocokkan traffic TCP tidak dapat digunakan untuk menayangkan apa pun kecuali traffic yang dijelaskan olehTCPRouteini.- Misalnya, deployment Anda mungkin menyertakan resource
TCPRouteyang cocok dengan port "8000" dan resource HttpRoute. Jika keduanya dilampirkan ke resourceMeshyang sama, traffic yang dirutekan oleh resourceHTTPRoutetidak dapat menggunakan port 8000 meskipun alamat IP yang mendasarinya berbeda. Batasan ini berasal dari implementasi proxy Envoy, yang menetapkan prioritas ke rute yang cocok dengan port terlebih dahulu.
- Misalnya, deployment Anda mungkin menyertakan resource
- Resource
Gatewaytidak menyediakan load balancer terkelola dan tidak membuat layanan Envoy secara dinamis. - Envoy yang di-deploy secara otomatis dan berfungsi sebagai gateway ingress tidak boleh memiliki argumen
serving_portske flag--service-proxy. - Envoy yang di-deploy secara otomatis tidak mendukung penyediaan nomor project yang berbeda dari project VM.
Langkah berikutnya
- Untuk mengetahui informasi tentang cara mencantumkan resource rute yang terkait dengan resource
MeshatauGateway, lihat Mencantumkan resourceRoute. - Untuk mengetahui informasi tentang API perutean layanan, baca dokumentasi untuk API layanan jaringan.