Ringkasan API pemilihan rute layanan Cloud Service Mesh
Dokumen ini ditujukan bagi administrator platform atau mesh dan developer layanan yang memiliki pemahaman tingkat menengah hingga lanjutan terhadap konsep Cloud Service Mesh dan 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 Mesh Layanan Cloud, lihat ringkasan umum.
Cloud Service Mesh menyediakan kemampuan jaringan layanan ke aplikasi Anda, termasuk pengelolaan traffic lanjutan, kemampuan observasi, dan keamanan. Namun, mengonfigurasi dan mengoperasikan mesh layanan adalah tugas yang rumit 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 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.
- Referensi
Mesh
- Pengelolaan traffic dan konfigurasi keamanan layanan-ke-layanan (timur-barat) untuk proxy file bantuan Envoy dan klien gRPC tanpa proxy.
Gateway
- Pengelolaan traffic dan konfigurasi keamanan untuk proxy Envoy yang bertindak sebagai gateway masuk, memungkinkan klien eksternal terhubung ke mesh layanan (utara-selatan).
Route
resource dengan jenis berikut:HTTPRoute
GRPCRoute
TCPRoute
TLSRoute
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
Dengan API pemilihan rute layanan, Anda dapat mengonfigurasi Cloud Service Mesh untuk deployment proxy gRPC dan Envoy tanpa proxy. Model API perutean layanan memungkinkan beberapa manfaat utama.
Dalam diagram berikut, dua layanan di mesh layanan dihubungkan oleh
resource Mesh
. Kedua resource HTTPRoute
mengonfigurasi pemilihan rute. Mesh atau
administrator platform mengelola resource Mesh
dan dua pemilik layanan membuat
konfigurasi perutean untuk layanan mereka.
Desain API yang berorientasi pada 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 independen. Mereka 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 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.
Keandalan yang ditingkatkan dengan model layanan mandiri
API pemilihan rute layanan menggunakan resource per protokol dan per rute yang dapat dikonfigurasi dan dimiliki oleh pemilik layanan independen. Pendekatan ini memiliki beberapa keuntungan.
- Pemilik layanan memiliki otonomi atas cara mengonfigurasi kebijakan dan pengelolaan traffic untuk layanan yang mereka miliki.
- Memperbarui satu resource
Route
tidak memengaruhi resourceRoute
lain dalam 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, sekaligus
mempertahankan kontrol independen atas layanan mereka. Misalnya, pemilik layanan
dapat menentukan resource Route
dalam 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.
Dengan API pemilihan rute layanan, Anda juga dapat memiliki klien mesh layanan yang terhubung ke berbagai jaringan menggunakan Peering Jaringan VPC.
Rute traffic berdasarkan indikator nama server
Resource TLSRoute
memungkinkan Anda merutekan traffic yang dienkripsi TLS berdasarkan
Indikasi Nama Server (SNI) di handshake TLS. Anda dapat mengonfigurasi traffic TLS untuk dirutekan ke layanan backend yang sesuai dengan mengonfigurasi pencocokan SNI di resource TLSRoute
. Dalam deployment ini, proxy hanya mengarahkan traffic dan 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 ditampilkan dalam diagram berikut mengarahkan traffic mesh layanan apa pun tempat ekstensi SNI memiliki nilai service1
ke layanan backend service1
. Selain itu, setiap traffic mesh layanan tempat ekstensi SNI memiliki nilai service2
akan dirutekan ke layanan backend service2
. Nilai ekstensi SNI dan nama layanan backend tidak saling bergantung.
Resource TLSRoute
dilampirkan ke resource Gateway
Deployment yang ditampilkan dalam diagram berikut merutekan semua traffic masuk ke resource Gateway
tempat ekstensi SNI memiliki nilai serviceA
ke layanan backend serviceA
. Selain itu, semua 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 bersifat independen.
Resource Gateway
tidak menghentikan koneksi TLS pada proxy Envoy
Gateway
. Sebagai gantinya, koneksi TLS dihentikan pada layanan backend
yang sesuai. Gateway
tidak dapat memeriksa informasi apa pun yang dienkripsi pada lapisan TLS, selain melihat ClientHello
, yang berisi ekstensi SNI teks biasa. Gateway
melakukan passthrough TLS dalam mode ini. Perlu diketahui bahwa
ClientHello
terenkripsi tidak didukung.
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 secara terkontrol tanpa periode nonaktif.
Intersepsi lalu lintas
Saat Anda menggunakan resource Mesh
dan Gateway
API pemilihan rute layanan, semua traffic akan dicegat secara otomatis. Untuk mengetahui informasi selengkapnya, lihat Opsi untuk penyiapan VM Compute Engine dengan deployment Envoy otomatis.
Arsitektur dan referensi
Bagian ini menjelaskan model API perutean layanan dan resource-nya, serta membantu Anda memahami cara kerja sama resource API perutean 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
direferensikan dalam resource Route
untuk menambahkan rute
untuk layanan yang merupakan bagian dari mesh.
Klien gRPC tanpa proxy dan proxy Envoy menerima konfigurasi dari Cloud Service Mesh dengan menggabungkan mesh layanan yang diidentifikasi oleh nama resource Mesh
. Resource Mesh
mendukung deployment bidang data berikut:
- Envoy berjalan bersama aplikasi sebagai proxy file bantuan
- Klien gRPC tanpa proxy
- Perpaduan antara klien Envoy dan klien gRPC tanpa proxy
Resource Route
Resource Route
digunakan untuk menyiapkan pemilihan rute ke layanan. Ada empat
jenis resource Route
API yang berbeda. Mereka menentukan protokol yang digunakan
untuk merutekan lalu lintas ke layanan backend.
HTTPRoute
GRPCRoute
TCPRoute
TLSRoute
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 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 ke 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.
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 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 SPM dan nama Negosiasi Protokol Lapisan Aplikasi (ALPN). Konfigurasi TLSRoute
mengimplikasikan passthrough TLS, saat 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 pada 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 masuk, yang memungkinkan klien eksternal terhubung ke mesh layanan (traffic utara-selatan). Resource ini memiliki port pemroses beserta parameter scope
. Proxy
Envoy yang bertindak sebagai gateway masuk mengikat 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 port 80 untuk koneksi masuk dari klien.
Resource API Gateway
hanya mendukung bidang data proxy Envoy. Aplikasi ini
tidak mendukung gRPC tanpa proxy. gRPCRoutes
didukung di resource Gateway
,
tetapi traffic gRPC dirutekan oleh proxy Envoy, yang bertindak sebagai middle-proxy.
Apa yang dimaksud dengan cakupan Gateway
dan konfigurasi Gateway
gabungan?
Instance resource Gateway
mewakili port dan konfigurasi khusus
untuk traffic yang diterima pada 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
masing-masing memproses port 80 dan 443 untuk menerima traffic HTTP dan HTTPS, buat dua resource Gateway
.
Konfigurasi satu resource Gateway
dengan port 80, untuk traffic HTTP, dan resource lainnya
dengan 443, untuk traffic HTTPS. Beri 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 memberikan parameter cakupan yang sama ke Cloud Service Mesh untuk menerima konfigurasi Gateway
. Perlu diperhatikan bahwa Anda
menentukan cakupan saat membuat resource Gateway
, dan menetapkan
cakupan yang sama dengan parameter bootstrap untuk proxy.
Berikut adalah pertimbangan utama untuk resource Gateway
:
- Parameter cakupan
Gateway
bersifat wajib. Tentukan cakupan dalam resourceGateway
dan dalam konfigurasi bootstrap proxy Envoy meskipun hanya ada satuGateway
. - Pembuatan resource
Gateway
tidak akan men-deploy layanan dengan proxy Envoy. Men-deploy proxy Envoy adalah langkah terpisah. - Resource
Gateway
memilikitype
yang mewakili jenis deployment ingress. Kolom ini dicadangkan untuk penggunaan pada masa mendatang. Satu-satunya nilai yang saat ini didukung adalahOPEN_MESH
, yang merupakan nilai default dan tidak dapat diubah.
Deployment mesh dengan protokol campuran dan bidang data
Anda dapat memiliki deployment bidang data campuran, dengan proxy Envoy dan gRPC tanpa proxy di mesh yang sama. Saat Anda membuat deployment tersebut, pertimbangkan hal-hal berikut.
- Deployment file bantuan Envoy mendukung semua Rute (
HTTPRoute
,GRPCRoute
,TCPRoute
, danTLSRoute
). - Deployment gRPC tanpa proxy hanya mendukung
GRPCRoute
. GRPCRoute
dibatasi pada 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 yang sah dapat langsung menambahkan konfigurasi perutean layanan mereka ke Mesh
atau Gateway
.
Dalam skenario lintas project yang umum, Anda memilih project (project host atau project administrasi
yang dikontrol 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 terpasang pada 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 atau 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.*
, ataunetworkservices.tcpRoutes.*
.
Administrator Mesh harus memberikan izin networkservices.mesh.use
kepada pemilik
layanan sehingga pemilik layanan dapat menambahkan 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 dan telusuri meshes
.
Tidak diperlukan peran bawaan tambahan. Admin Jaringan Compute (roles/compute.networkAdmin
) yang sudah ada dan telah ditetapkan memiliki izin networkservices.*
secara default.
Anda mungkin perlu menambahkan izin yang dijelaskan sebelumnya ke peran kustom Anda.
Pertimbangan dan batasan
- Konsol Google Cloud tidak mendukung API perutean layanan.
- 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
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 dengan API perutean layanan.
- Terraform tidak didukung.
- API perutean layanan tidak kompatibel dengan API lama.
- Jika resource
TCPRoute
dilampirkan ke resourceMesh
, port yang digunakan untuk mencocokkan traffic TCP tidak dapat digunakan untuk menyalurkan apa pun kecuali traffic yang dijelaskan olehTCPRoute
ini.- Misalnya, deployment Anda mungkin menyertakan resource
TCPRoute
yang cocok dengan port "8000" dan resource HttpRoute. Jika keduanya dilampirkan ke resourceMesh
yang sama, traffic yang dirutekan oleh resourceHTTPRoute
tidak dapat menggunakan port 8000 bahkan saat alamat IP yang mendasarinya berbeda. Batasan ini berasal dari penerapan proxy Envoy, yang menetapkan prioritas ke rute yang cocok dengan port terlebih dahulu.
- Misalnya, deployment Anda mungkin menyertakan resource
- Resource
Gateway
tidak 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_ports
ke flag--service-proxy
. - Envoy yang di-deploy secara otomatis tidak mendukung pemberian nomor project yang berbeda dengan project VM.
Langkah selanjutnya
- Untuk mengetahui informasi cara mencantumkan resource rute yang terkait dengan resource
Mesh
atauGateway
, lihat Mencantumkan resourceRoute
. Fitur ini ada dalam Pratinjau. - Untuk informasi tentang API perutean layanan, baca dokumentasi untuk API layanan jaringan.