Ringkasan API perutean 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 service mesh, serta yang men-deploy Cloud Service Mesh di Compute Engine dengan instance VM. Dokumen ini berlaku untuk deployment yang menggunakan klien gRPC dan Envoy. 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 Anda 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.
Mesh
resource- Konfigurasi keamanan dan pengelolaan traffic (east-west) service-to-service untuk proxy file bantuan Envoy dan klien gRPC tanpa proxy.
-
- Konfigurasi keamanan dan pengelolaan traffic untuk proxy Envoy yang bertindak sebagai gateway masuk, sehingga klien eksternal dapat terhubung ke mesh layanan (north-south).
Resource
Route
dengan jenis berikut:
Konsol Google Cloud tidak memberikan dukungan untuk API perutean layanan. Anda harus menerapkan 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 gRPC tanpa proxy dan Envoy. Model API perutean layanan memberikan beberapa manfaat utama.
Dalam diagram berikut, dua layanan di 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 serta perutean traffic mereka sendiri.
Keandalan yang ditingkatkan dengan model layanan mandiri
API perutean layanan menggunakan resource per-rute, per-protokol yang dapat dikonfigurasi dan dimiliki oleh pemilik layanan independen. Pendekatan ini memiliki beberapa keunggulan.
- Pemilik layanan memiliki otonomi atas cara mereka ingin mengonfigurasi kebijakan dan pengelolaan traffic untuk layanan yang mereka miliki.
- Mengupdate satu resource
Route
tidak memengaruhi resourceRoute
lainnya dalam 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 memperbarui perutean.
Mengaktifkan service mesh 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
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.
API perutean layanan juga memungkinkan Anda menghubungkan klien mesh layanan ke jaringan yang berbeda menggunakan Peering Jaringan VPC.
Merutekan traffic berdasarkan indikator nama server
Resource TLSRoute
memungkinkan Anda merutekan traffic yang dienkripsi TLS berdasarkan Server Name Indication (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 sidecar atau gateway.
Resource TLSRoute
yang dilampirkan ke resource Mesh
Deployment yang ditunjukkan dalam diagram berikut merutekan traffic mesh layanan apa pun
dengan ekstensi SNI yang 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 memengaruhi.
TLSRoute
dan resource Mesh
(klik untuk memperbesar)Resource TLSRoute
yang 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
dengan ekstensi SNI yang memiliki nilai serviceB
akan dirutekan ke
layanan backend serviceB
. Nilai ekstensi SNI dan nama layanan backend tidak saling memengaruhi. 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 penerusan TLS dalam mode ini. Perhatikan bahwa
ClientHello
terenkripsi tidak didukung.
TLSRoute
dan resource 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 terbatas (biru-hijau) saat mengupdate layanan. Pemisahan traffic juga memungkinkan Anda memigrasikan traffic secara terkontrol tanpa waktu non-operasional.
Intersepsi traffic
Saat Anda menggunakan API perutean layanan Mesh
dan resource Gateway
, 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 sumber dayanya, serta membantu Anda memahami cara kerja sumber daya API perutean layanan secara bersama-sama.
Resource Mesh
Resource Mesh
merepresentasikan instance mesh layanan. Anda menggunakannya untuk
membuat mesh layanan logis di project Anda. Setiap resource Mesh
harus memiliki
nama unik dalam project. Setelah resource Mesh
dibuat, namanya tidak dapat
diubah.
Mesh
dengan deployment gRPC tanpa proxy dan sidecar Envoy (klik untuk memperbesar)Resource Mesh
dirujuk dalam resource Route
untuk menambahkan rute bagi layanan yang merupakan bagian dari mesh.
Proxy Envoy dan klien gRPC tanpa proxy menerima konfigurasi dari
Cloud Service Mesh dengan bergabung ke service mesh yang diidentifikasi oleh 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 pemilihan rute ke layanan. Ada empat
jenis resource API Route
yang berbeda. Mereka menentukan protokol yang digunakan untuk
mengalihkan traffic ke layanan backend.
HTTPRoute
GRPCRoute
TCPRoute
TLSRoute
API tidak berisi Route
API secara harfiah. 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 mereferensikan 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.
Route
(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 pembagian traffic 70% / 30%
antara dua layanan backend.
Untuk menyederhanakan administrasi mesh layanan, Anda dapat mencantumkan semua Route
resource yang terlampir 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). TLSRoute
konfigurasi 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 merepresentasikan proxy Envoy yang bertindak sebagai gateway ingress, sehingga memungkinkan klien eksternal terhubung ke mesh layanan (traffic utara-selatan). Resource ini memiliki port pendengar beserta parameter scope
. Proxy
Envoy yang bertindak sebagai gateway masuk 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
memproses koneksi masuk dari klien di port 80.
Resource API Gateway
hanya mendukung bidang data proxy Envoy. Aplikasi 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
merepresentasikan 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
lebih resource Gateway
secara logis.
Misalnya, jika Anda ingin proxy Gateway
memproses di port 80 dan 443 untuk
menerima traffic HTTP dan HTTPS, Anda membuat dua resource Gateway
.
Konfigurasi satu resource Gateway
dengan port 80, untuk traffic HTTP, dan resource lainnya dengan 443, untuk traffic HTTPS. Berikan nilai yang sama pada kolom scope
di setiap item.
Cloud Service Mesh menggabungkan secara dinamis konfigurasi individual semua Gateway yang memiliki cakupan yang sama. 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
(klik untuk memperbesar)Berikut adalah pertimbangan utama untuk resource Gateway
:
- Parameter cakupan
Gateway
wajib ada. Tentukan cakupan dalam resourceGateway
dan dalam konfigurasi bootstrap proxy Envoy meskipun hanya ada satuGateway
. - Membuat resource
Gateway
tidak men-deploy layanan dengan proxy Envoy. Men-deploy proxy Envoy adalah langkah terpisah. - Resource
Gateway
memilikitype
yang merepresentasikan jenis deployment ingress. Kolom ini dicadangkan untuk penggunaan di masa mendatang. Satu-satunya nilai yang didukung saat ini 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 dalam mesh yang sama. Saat Anda membuat deployment tersebut, pertimbangkan hal berikut.
- Deployment sidecar 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 berwenang dapat langsung menambahkan konfigurasi perutean layanan mereka ke Mesh
atau Gateway
.
Mesh
dan Route
(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 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 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 pokok 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 perlu 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 standar tambahan yang diperlukan. Peran bawaan yang ada, yaitu Compute Network Admin
(roles/compute.networkAdmin
) 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 minimum generator bootstrap gRPC v0.14.0
- Resource
TLSRoute
hanya didukung dengan proxy Envoy yang di-deploy sebagai proxy sidecar atau gateway. - 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 dengan API lama.
- Saat resource
TCPRoute
dilampirkan ke resourceMesh
, port yang digunakan untuk mencocokkan traffic TCP tidak dapat digunakan untuk melayani apa pun kecuali traffic yang dijelaskan olehTCPRoute
ini.- Misalnya, deployment Anda dapat 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 meskipun 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 dapat 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 penyediaan nomor project yang berbeda dengan project VM.
Langkah berikutnya
- Untuk mengetahui informasi tentang mencantumkan resource rute yang terkait dengan resource
Mesh
atauGateway
, lihat Mencantumkan resourceRoute
. - Untuk mengetahui informasi tentang API perutean layanan, baca dokumentasi untuk API layanan jaringan.