Ringkasan Cloud Service Mesh

Dokumen ini ditujukan untuk administrator jaringan dan pemilik layanan yang ingin memahami Cloud Service Mesh dan kemampuannya. Ini adalah dokumen lama yang berlaku untuk konfigurasi yang menggunakan API load balancing.

Cloud Service Mesh adalah bidang kontrol terkelola untuk jaringan aplikasi. Cloud Service Mesh memungkinkan Anda memberikan layanan global yang sangat tersedia dengan kemampuan jaringan aplikasi lanjutan seperti pengelolaan traffic dan observabilitas.

Seiring bertambahnya jumlah layanan dan microservice dalam deployment, Anda biasanya mulai mengalami tantangan jaringan aplikasi umum seperti berikut:

  • Bagaimana cara membuat layanan saya tangguh?
  • Bagaimana cara mendapatkan traffic ke layanan saya, dan bagaimana layanan mengetahui serta berkomunikasi satu sama lain?
  • Bagaimana cara memahami apa yang terjadi saat layanan saya berkomunikasi satu sama lain?
  • Bagaimana cara mengupdate layanan saya tanpa berisiko mengalami pemadaman layanan?
  • Bagaimana cara mengelola infrastruktur yang memungkinkan deployment saya?
Layanan perlu berkomunikasi satu sama lain.
Layanan perlu berkomunikasi satu sama lain (klik untuk memperbesar)

Cloud Service Mesh membantu Anda mengatasi jenis tantangan ini dalam deployment berbasis layanan yang modern. Cloud Service Mesh mengandalkan infrastruktur yang dikelola Google Cloud sehingga Anda tidak perlu mengelola infrastruktur Anda sendiri. Anda berfokus pada pengiriman kode aplikasi yang memecahkan masalah bisnis Anda sekaligus memungkinkan Cloud Service Mesh mengelola kompleksitas jaringan aplikasi.

Mesh Layanan Cloud

Pola umum untuk mengatasi tantangan jaringan aplikasi adalah menggunakan mesh layanan. Cloud Service Mesh mendukung mesh layanan dan pola deployment lainnya yang sesuai dengan kebutuhan Anda.

Mesh layanan standar.
Mesh layanan standar (klik untuk memperbesar)

Dalam mesh layanan standar, hal berikut berlaku:

  • Anda men-deploy layanan ke cluster Kubernetes.
  • Setiap Pod layanan memiliki proxy khusus (biasanya Envoy) yang berjalan sebagai proxy sidecar.
  • Setiap proxy sidecar berkomunikasi dengan infrastruktur jaringan (bidang kontrol) yang diinstal di cluster Anda. Bidang kontrol memberi tahu proxy sidecar tentang layanan, endpoint, dan kebijakan di mesh layanan Anda.
  • Saat Pod mengirim atau menerima permintaan, permintaan tersebut akan ditujukan ke proxy sidecar Pod. Proxy sidecar menangani permintaan, misalnya, dengan mengirimkannya ke tujuan yang diinginkan.

Dalam diagram dalam dokumen ini dan dokumen Cloud Service Mesh lainnya, ikon merah jambu enam sisi mewakili proxy. Plane kontrol terhubung ke setiap proxy dan memberikan informasi yang diperlukan proxy untuk menangani permintaan. Panah di antara kotak menunjukkan alur traffic. Misalnya, kode aplikasi di Service A mengirim permintaan. Proxy menangani permintaan dan meneruskannya ke Service B.

Model ini memungkinkan Anda memindahkan logika jaringan dari kode aplikasi. Anda dapat berfokus untuk memberikan nilai bisnis sekaligus membiarkan infrastruktur menangani jaringan aplikasi.

Perbedaan Cloud Service Mesh

Cloud Service Mesh berfungsi mirip dengan model tersebut, tetapi berbeda dalam hal yang penting. Semuanya dimulai dengan fakta bahwa Cloud Service Mesh adalah layanan yang dikelola Google Cloud. Anda tidak menginstalnya, tidak berjalan di cluster, dan Anda tidak perlu mengelolanya.

Dalam diagram berikut, Cloud Service Mesh adalah bidang kontrol. Ada empat layanan di cluster Kubernetes ini, masing-masing dengan proxy sidecar yang terhubung ke Cloud Service Mesh. Cloud Service Mesh memberikan informasi yang diperlukan proxy untuk merutekan permintaan. Misalnya, kode aplikasi di Pod yang milik Service A mengirimkan permintaan. Proxy sidecar yang berjalan bersama Pod ini menangani permintaan dan merutekannya ke Pod milik Service B.

Contoh mesh layanan dengan Cloud Service Mesh.
Contoh mesh layanan dengan Cloud Service Mesh (klik untuk memperbesar)

Di luar mesh layanan

Cloud Service Mesh mendukung lebih banyak jenis deployment daripada service mesh biasa.

Kubernetes multi-cluster

Dengan Cloud Service Mesh, Anda mendapatkan jaringan aplikasi yang berfungsi di seluruh cluster Kubernetes. Pada diagram berikut, Cloud Service Mesh menyediakan bidang kontrol untuk cluster Kubernetes di us-central1 dan europe-west1. Permintaan dapat dirutekan di antara tiga layanan di us-central1, di antara dua layanan di europe-west1, dan di antara layanan di dua cluster.

Contoh Kubernetes multi-cluster dengan Cloud Service Mesh.
Contoh Kubernetes multi-cluster dengan Cloud Service Mesh (klik untuk memperbesar)

Mesh layanan Anda dapat diperluas ke beberapa cluster Kubernetes di beberapa region Google Cloud. Layanan di satu cluster dapat berkomunikasi dengan layanan di cluster lain. Anda bahkan dapat memiliki layanan yang terdiri dari Pod di beberapa cluster.

Dengan load balancing global berbasis kedekatan Cloud Service Mesh, permintaan yang ditujukan untuk Service B akan diarahkan ke Pod terdekat yang dapat melayani permintaan tersebut. Anda juga mendapatkan failover yang lancar; jika Pod tidak aktif, permintaan akan otomatis dialihkan ke Pod lain yang dapat melayani permintaan, meskipun Pod ini berada di cluster Kubernetes yang berbeda.

Mesin virtual

Kubernetes semakin populer, tetapi banyak beban kerja yang di-deploy ke instance virtual machine (VM). Cloud Service Mesh juga menyelesaikan jaringan aplikasi untuk workload ini; workload berbasis VM Anda berinteraksi dengan workload berbasis Kubernetes.

Pada diagram berikut, traffic memasuki deployment Anda melalui Load Balancer Aplikasi eksternal. Traffic dirutekan ke Service A di cluster Kubernetes di asia-southeast1 dan ke Service D di VM di europe-west1.

Contoh VM dan Kubernetes dengan Cloud Service Mesh.
Contoh VM dan Kubernetes dengan Cloud Service Mesh (klik untuk memperbesar)

Google menyediakan mekanisme yang lancar untuk menyiapkan workload berbasis VM dengan Cloud Service Mesh. Anda hanya perlu menambahkan tanda ke template instance VM Compute Engine, dan Google akan menangani penyiapan infrastruktur. Penyiapan ini mencakup penginstalan dan konfigurasi proxy yang memberikan kemampuan jaringan aplikasi.

gRPC tanpa proxy

gRPC adalah framework RPC open source yang kaya fitur yang dapat Anda gunakan untuk menulis microservice berperforma tinggi. Dengan Cloud Service Mesh, Anda dapat menghadirkan kemampuan jaringan aplikasi (seperti penemuan layanan, load balancing, dan pengelolaan traffic) ke aplikasi gRPC. Untuk mengetahui informasi selengkapnya, lihat Cloud Service Mesh dan gRPC—layanan tanpa proxy untuk mesh layanan Anda.

Dalam diagram berikut, aplikasi gRPC merutekan traffic ke layanan yang berbasis di cluster Kubernetes di satu region dan ke layanan yang berjalan di VM di region yang berbeda. Dua layanan menyertakan proxy sidecar, dan yang lainnya tanpa proxy.

Contoh aplikasi gRPC tanpa proxy dengan Cloud Service Mesh.
Contoh aplikasi gRPC tanpa proxy dengan Cloud Service Mesh (klik untuk memperbesar)

Cloud Service Mesh mendukung layanan gRPC tanpa proxy. Layanan ini menggunakan library gRPC open source versi terbaru yang mendukung API xDS. Aplikasi gRPC Anda dapat terhubung ke Cloud Service Mesh dengan menggunakan xDS API yang sama dengan yang digunakan Envoy.

Setelah aplikasi Anda terhubung, library gRPC akan menangani fungsi jaringan aplikasi seperti penemuan layanan, load balancing, dan pengelolaan traffic. Fungsi ini terjadi secara native di gRPC, sehingga proxy layanan tidak diperlukan—itulah sebabnya aplikasi gRPC ini disebut tanpa proxy.

Ingress dan gateway

Untuk banyak kasus penggunaan, Anda perlu [menangani traffic yang berasal dari klien yang tidak dikonfigurasi oleh Cloud Service Mesh. Misalnya, Anda mungkin perlu memasukkan traffic internet publik ke microservice. Anda mungkin juga ingin mengonfigurasi load balancer sebagai proxy terbalik yang menangani traffic dari klien sebelum meneruskannya ke tujuan.

Dalam diagram berikut, Load Balancer Aplikasi eksternal memungkinkan traffic masuk untuk klien eksternal, dengan traffic dirutekan ke layanan di cluster Kubernetes. Load Balancer Aplikasi internal merutekan traffic internal ke layanan yang berjalan di VM.

Cloud Service Mesh dengan Cloud Load Balancing untuk ingress.
Cloud Service Mesh dengan Cloud Load Balancing untuk traffic masuk (klik untuk memperbesar)

Cloud Service Mesh berfungsi dengan Cloud Load Balancing untuk memberikan pengalaman masuk yang dikelola. Anda menyiapkan load balancer eksternal atau internal, lalu mengonfigurasi load balancer tersebut untuk mengirim traffic ke microservice Anda. Dalam diagram sebelumnya, klien internet publik menjangkau layanan Anda melalui Application Load Balancer eksternal. Klien, seperti microservice yang berada di jaringan Virtual Private Cloud (VPC) Anda, menggunakan Load Balancer Aplikasi internal untuk menjangkau layanan Anda.

Untuk beberapa kasus penggunaan, Anda mungkin ingin menyiapkan Cloud Service Mesh untuk mengonfigurasi gateway. Gateway pada dasarnya adalah reverse proxy, biasanya Envoy yang berjalan di satu atau beberapa VM, yang memproses permintaan masuk, menanganinya, dan mengirimnya ke tujuan. Tujuan dapat berada di region Google Cloud atau cluster Google Kubernetes Engine (GKE). Bahkan, ini dapat berupa tujuan di luar Google Cloud yang dapat dijangkau dari Google Cloud menggunakan konektivitas hibrida. Untuk mengetahui informasi selengkapnya tentang kapan harus menggunakan gateway, lihat Traffic masuk untuk mesh Anda.

Dalam diagram berikut, VM di region europe-west1 menjalankan proxy yang bertindak sebagai gateway ke tiga layanan yang tidak menjalankan proxy. Traffic dari Load Balancer Aplikasi eksternal dan Load Balancer Aplikasi internal dirutekan ke gateway, lalu ke tiga layanan.

Cloud Service Mesh yang digunakan untuk mengonfigurasi gateway.
Cloud Service Mesh yang digunakan untuk mengonfigurasi gateway (klik untuk memperbesar)

Beberapa lingkungan

Baik Anda memiliki layanan di Google Cloud, di lokal, di cloud lain, atau semuanya, tantangan jaringan aplikasi dasar Anda tetap sama. Bagaimana cara Anda mendapatkan traffic ke layanan ini? Bagaimana cara layanan ini berkomunikasi satu sama lain?

Pada diagram berikut, Cloud Service Mesh merutekan traffic dari layanan yang berjalan di Google Cloud ke Service G, yang berjalan di cloud publik lain, dan ke Service E dan Service F, yang keduanya berjalan di pusat data lokal. Service A, Service B, dan Service C menggunakan Envoy sebagai proxy sidecar, sedangkan Service D adalah layanan gRPC tanpa proxy.

Cloud Service Mesh digunakan untuk komunikasi di seluruh lingkungan.
Cloud Service Mesh yang digunakan untuk komunikasi di seluruh lingkungan (klik untuk memperbesar)

Saat menggunakan Cloud Service Mesh, Anda dapat mengirim permintaan ke tujuan di luar Google Cloud. Hal ini memungkinkan Anda menggunakan Cloud Interconnect atau Cloud VPN untuk merutekan traffic secara pribadi dari layanan di dalam Google Cloud ke layanan atau gateway di lingkungan lain.

Menyiapkan Cloud Service Mesh

Penyiapan Cloud Service Mesh terdiri dari dua langkah. Setelah Anda menyelesaikan proses penyiapan, infrastruktur Anda akan menangani jaringan aplikasi, dan Cloud Service Mesh akan terus memperbarui semuanya berdasarkan perubahan pada deployment Anda.

Men-deploy aplikasi

Pertama, Anda men-deploy kode aplikasi ke container atau VM. Google menyediakan mekanisme yang memungkinkan Anda menambahkan infrastruktur jaringan aplikasi (biasanya proxy Envoy) ke instance VM dan Pod. Infrastruktur ini disiapkan untuk berkomunikasi dengan Cloud Service Mesh dan mempelajari layanan Anda.

Mengonfigurasi Cloud Service Mesh

Selanjutnya, Anda mengonfigurasi layanan global dan menentukan cara traffic harus ditangani. Untuk mengonfigurasi Cloud Service Mesh, Anda dapat menggunakan konsol Google Cloud (untuk beberapa fitur dan konfigurasi), Google Cloud CLI, Traffic Director API, atau alat lain, seperti Terraform.

Setelah Anda menyelesaikan langkah-langkah ini, Cloud Service Mesh siap mengonfigurasi infrastruktur jaringan aplikasi Anda.

Infrastruktur menangani jaringan aplikasi

Saat aplikasi mengirimkan permintaan ke my-service, infrastruktur jaringan aplikasi Anda (misalnya, proxy sidecar Envoy) akan menangani permintaan tersebut sesuai dengan informasi yang diterima dari Cloud Service Mesh. Hal ini memungkinkan permintaan untuk my-service dirutekan dengan lancar ke instance aplikasi yang dapat menerima permintaan.

Pemantauan dan update berkelanjutan

Cloud Service Mesh memantau instance aplikasi yang membentuk layanan Anda. Pemantauan ini memungkinkan Cloud Service Mesh menemukan bahwa layanan berfungsi dengan baik atau kapasitas layanan telah berubah—misalnya, saat Pod Kubernetes baru dibuat. Berdasarkan informasi ini, Cloud Service Mesh terus memperbarui infrastruktur jaringan aplikasi Anda.

Fitur

Fitur Cloud Service Mesh memberikan kemampuan jaringan aplikasi ke microservice Anda. Beberapa sorotan dibahas di bagian ini.

Bidang kontrol, health check, dan load balancing yang dikelola sepenuhnya

Anda ingin menghabiskan waktu untuk memberikan nilai bisnis, bukan mengelola infrastruktur. Cloud Service Mesh adalah solusi terkelola sepenuhnya, sehingga Anda tidak perlu menginstal, mengonfigurasi, atau mengupdate infrastruktur. Anda mendapatkan manfaat dari infrastruktur yang sama dengan yang digunakan Google untuk health check dan load balancing global.

Dibuat berdasarkan produk open source

Cloud Service Mesh menggunakan bidang kontrol yang sama (xDS API) yang digunakan oleh project open source populer seperti Envoy dan Istio. Untuk melihat versi API yang didukung, lihat API bidang kontrol xDS.

Infrastruktur yang memberikan kemampuan jaringan aplikasi—Envoy atau gRPC, bergantung pada kasus penggunaan Anda—juga open source, sehingga Anda tidak perlu khawatir terikat dengan infrastruktur eksklusif.

Skala

Dari solusi jaringan aplikasi satu kali hingga deployment mesh layanan yang masif dengan ribuan layanan, Cloud Service Mesh dibuat untuk memenuhi persyaratan penskalaan Anda.

Penemuan layanan dan pelacakan endpoint dan backend Anda

Saat aplikasi Anda mengirim permintaan ke my-service, infrastruktur Anda akan menangani permintaan tersebut dengan lancar dan mengirimkannya ke tujuan yang benar. Aplikasi Anda tidak perlu mengetahui apa pun tentang alamat IP, protokol, atau kompleksitas jaringan lainnya.

Load balancing dan failover global

Cloud Service Mesh menggunakan load balancing global dan health check Google untuk menyeimbangkan traffic secara optimal berdasarkan lokasi klien dan backend, kedekatan backend, respons, dan kapasitas. Anda meningkatkan ketersediaan layanan dengan membuat traffic otomatis beralih ke backend yang sehat dengan kapasitas. Anda dapat menyesuaikan load balancing untuk mendistribusikan traffic guna mendukung kebutuhan bisnis Anda dengan benar.

Pengelolaan traffic

Pengelolaan traffic lanjutan, termasuk perutean dan manipulasi permintaan (berdasarkan nama host, jalur, header, cookie, dan lainnya), memungkinkan Anda menentukan cara traffic mengalir di antara layanan. Anda juga dapat menerapkan tindakan seperti percobaan ulang, pengalihan, dan pemisahan traffic berbasis bobot untuk deployment canary. Pola lanjutan seperti injeksi error, pencerminan traffic, dan deteksi outlier memungkinkan kasus penggunaan DevOps yang meningkatkan ketahanan Anda.

Kemampuan observasi

Infrastruktur jaringan aplikasi Anda mengumpulkan informasi telemetri, seperti metrik, log, dan trace, yang dapat digabungkan secara terpusat di Google Cloud Observability. Setelah informasi ini dikumpulkan, Anda dapat memperoleh insight dan membuat pemberitahuan sehingga jika terjadi masalah, Anda akan diberi tahu.

Kontrol Layanan VPC

Anda dapat menggunakan Kontrol Layanan VPC untuk memberikan keamanan tambahan bagi resource dan layanan aplikasi Anda. Anda dapat menambahkan project ke perimeter layanan yang melindungi resource dan layanan (seperti Cloud Service Mesh) dari permintaan yang berasal dari luar perimeter. Untuk mempelajari Kontrol Layanan VPC lebih lanjut, lihat ringkasan Kontrol Layanan VPC.

Untuk mempelajari lebih lanjut cara menggunakan Cloud Service Mesh dengan Kontrol Layanan VPC, lihat halaman Produk yang didukung.

Langkah selanjutnya

Ini adalah dokumen lama yang terutama berlaku untuk API load balancing. Sebaiknya Anda tidak mengonfigurasi Cloud Service Mesh menggunakan API load balancing.