Dari edge ke mesh multi-cluster: Aplikasi yang didistribusikan secara global yang diekspos melalui GKE Gateway dan Cloud Service Mesh

Arsitektur referensi ini menjelaskan manfaat mengekspos aplikasi secara eksternal melalui Gateway Google Kubernetes Engine (GKE) yang berjalan di beberapa cluster GKE dalam mesh layanan. Panduan ini ditujukan untuk administrator platform.

Anda dapat meningkatkan ketahanan dan redundansi layanan dengan men-deploy aplikasi secara konsisten di berbagai cluster GKE. Setiap cluster akan menjadi domain kegagalan tambahan. Misalnya, infrastruktur komputasi layanan dengan tujuan tingkat layanan (SLO) sebesar 99,9% saat di-deploy di satu cluster GKE mencapai SLO sebesar 99,9999% saat di-deploy di dua cluster GKE (1 - (0,001)2). Anda juga dapat memberi pengguna pengalaman saat permintaan masuk akan otomatis diarahkan ke gateway masuk mesh masuk yang paling jarang dan tersedia.

Jika Anda ingin mengetahui manfaat mengekspos aplikasi dengan layanan mesh yang berjalan pada satu cluster, lihat Dari edge ke mesh: Mengekspos aplikasi mesh layanan melalui Gateway GKE.

Arsitektur

Diagram arsitektur berikut menunjukkan cara data mengalir melalui traffic masuk dan mesh pada cloud:

Enkripsi TLS dari klien, load balancer, dan dari mesh.

Diagram sebelumnya menunjukkan skenario aliran data berikut:

  • Dari klien yang berhenti di Google Cloud load balancer menggunakan sertifikat TLS-nya sendiri yang dikelola Google.
  • Dari Google Cloud load balancer ke proxy masuk mesh menggunakan sertifikat TLS yang ditandatangani sendiri.
  • Dari proxy gateway masuk mesh hingga proxy file bantuan workload menggunakan mTLS yang mendukung mesh layanan.

Arsitektur referensi ini berisi dua lapisan masuk berikut:

  • Cloud ingress: dalam arsitektur referensi ini, Anda menggunakan Kubernetes Gateway API (dan pengontrol Gateway GKE) untuk memprogram lapisan load balancing HTTP(S) multi-cluster eksternal. Load balancer memeriksa proxy masuk mesh di beberapa region, yang mengirimkan permintaan ke cluster responsif terdekat. Rilis ini juga menerapkan kebijakan keamanan Google Cloud Armor.
  • Mesh ingress: Di mesh, Anda melakukan health check pada backend secara langsung sehingga Anda dapat menjalankan load balancing dan pengelolaan traffic secara lokal.

Jika Anda menggunakan lapisan masuk secara bersamaan, ada peran pelengkap untuk setiap lapisan. Untuk mencapai sasaran berikut, Google Cloud mengoptimalkan fitur yang paling sesuai dari lapisan masuk cloud dan lapisan masuk mesh:

  • Menyediakan latensi rendah.
  • Tingkatkan ketersediaan.
  • Gunakan fitur keamanan lapisan masuk cloud.
  • Gunakan fitur keamanan, otorisasi, dan kemampuan observasi dari lapisan masuk mesh.

Traffic masuk cloud

Jika disambungkan dengan mesh ingress, lapisan traffic masuk cloud paling baik digunakan untuk keamanan edge dan load balancing global. Karena terintegrasi dengan layanan berikut, lapisan ini unggul dalam menjalankan layanan tersebut di edge, di luar mesh:

  • Perlindungan DDoS
  • {i>Cloud Firewall<i}
  • Autentikasi dan otorisasi
  • Enkripsi

Logika pemilihan rute biasanya mudah dilakukan di lapisan traffic masuk cloud. Namun, untuk lingkungan multi-cluster dan multi-region, cara ini bisa lebih kompleks.

Karena fungsi penting load balancer yang terhubung ke internet, lapisan traffic masuk cloud kemungkinan dikelola oleh tim platform yang memiliki kontrol eksklusif atas cara aplikasi diekspos dan diamankan di internet. Kontrol ini membuat lapisan ini kurang fleksibel dan dinamis dibandingkan infrastruktur berbasis developer. Pertimbangkan faktor-faktor ini saat menentukan hak akses administratif ke lapisan ini dan cara Anda memberikan akses tersebut.

Ingress jaring

Jika disambungkan dengan cloud ingress, lapisan traffic masuk mesh menyediakan titik masuk bagi traffic untuk memasuki mesh layanan. Lapisan tersebut juga menyediakan mTLS backend, kebijakan otorisasi, dan pencocokan ekspresi reguler yang fleksibel.

Men-deploy load balancing aplikasi eksternal di luar mesh dengan lapisan masuk mesh menawarkan keuntungan yang signifikan, terutama untuk pengelolaan traffic internet. Meskipun mesh layanan dan gateway masuk Istio memberikan perutean dan pengelolaan traffic lanjutan di mesh, beberapa fungsi dapat ditayangkan dengan lebih baik di edge jaringan. Memanfaatkan jaringan edge internet melalui Load Balancer Aplikasi eksternalGoogle Clouddapat memberikan manfaat terkait performa, keandalan, atau keamanan yang signifikan dibandingkan traffic masuk berbasis mesh.

Produk dan fitur yang digunakan

Daftar berikut merangkum semua Google Cloud produk dan fitur yang digunakan oleh arsitektur perujuk ini:

  • GKE Enterprise: Layanan Kubernetes terkelola yang dapat Anda gunakan untuk men-deploy dan mengoperasikan aplikasi dalam container dalam skala besar menggunakan infrastruktur Google. Untuk tujuan arsitektur referensi ini, setiap cluster GKE yang melayani aplikasi harus berada dalam fleet yang sama.
  • Fleet dan Gateway multi-cluster: Layanan yang digunakan untuk membuat aplikasi dalam container pada skala perusahaan menggunakan infrastruktur Google dan GKE Enterprise.
  • Google Cloud Armor: Layanan yang membantu Anda melindungi aplikasi dan situs dari denial of service dan serangan web.
  • Cloud Service Mesh: Mesh layanan yang terkelola sepenuhnya berdasarkan Envoy dan Istio
  • Load Balancer Aplikasi: Load balancer L7 berbasis proxy yang dapat digunakan untuk menjalankan dan menskalakan layanan Anda.
  • Certificate Manager: Layanan yang memungkinkan Anda memperoleh dan mengelola sertifikat TLS untuk digunakan dengan Cloud Load Balancing.

Fleet

Untuk mengelola deployment multi-cluster, GKE Enterprise dan Google Cloud gunakan fleet untuk mengelompokkan dan menormalisasi cluster Kubernetes secara logis.

Penggunaan satu atau beberapa fleet dapat membantu Anda meningkatkan pengelolaan dari cluster individual hingga seluruh kelompok cluster. Untuk mengurangi hambatan pengelolaan cluster, gunakan prinsip fleet kesamaan namespace. Untuk setiap cluster GKE secara terpisah, pastikan Anda mengonfigurasi semua gateway masuk mesh dengan cara yang sama.

Selain itu, deploy layanan aplikasi secara konsisten agar seimbang pembaca layanan di akun namespace berkaitan dengan layanan yang identik di setiap cluster GKE dalam fleet. Prinsip kesamaan dan kepercayaan yang diasumsikan dalam suatu fleet memungkinkan Anda menggunakan seluruh fitur yang kompatibel dengan fleet di GKE Enterprise dan Google Cloud.

Aturan pemilihan rute timur-barat dalam mesh layanan dan kebijakan traffic ditangani di lapisan masuk mesh. Lapisan masuk mesh di-deploy di tiap cluster GKE dalam fleet. Konfigurasikan setiap gateway masuk mesh dengan cara yang sama, yang mematuhi prinsip kemiripan namespace pada fleet.

Meskipun ada satu cluster konfigurasi untuk Gateway GKE, Anda harus menyinkronkan konfigurasi Gateway GKE di seluruh cluster GKE dalam fleet.

Jika Anda perlu menominasikan cluster konfigurasi baru, gunakan ConfigSync. ConfigSync membantu memastikan bahwa semua konfigurasi tersebut disinkronkan di semua cluster GKE dalam fleet, dan membantu menghindari rekonsiliasi dengan konfigurasi non-saat ini.

Gateway traffic masuk mesh

Istio 0.8 memperkenalkan gateway traffic masuk mesh. Gateway menyediakan serangkaian proxy khusus yang port-nya diekspos agar traffic muncul dari luar mesh layanan. Proxy masuk mesh ini memungkinkan Anda mengontrol perilaku eksposur jaringan secara terpisah dari perilaku perutean aplikasi.

Proxy juga memungkinkan Anda menerapkan perutean dan kebijakan ke traffic eksternal mesh sebelum sampai di file bantuan aplikasi. Ingress mesh menentukan perlakuan traffic saat mencapai node di mesh, tetapi komponen eksternal harus menentukan cara traffic pertama kali tiba di mesh.

Untuk mengelola traffic eksternal, Anda memerlukan load balancer yang berada di luar mesh. Untuk mengotomatiskan deployment, arsitektur referensi ini menggunakan Cloud Load Balancing yang disediakan melalui resource Gateway GKE.

Gateway GKE dan layanan multi-cluster

Ada banyak cara untuk memberikan akses aplikasi ke klien di luar cluster. Gateway GKE adalah implementasi dari Kubernetes Gateway API. Gateway GKE berkembang dan meningkatkan resource Ingress.

Saat Anda men-deploy resource Gateway GKE ke cluster GKE, pengontrol Gateway memantau resource Gateway API. Pengontrol merekonsiliasi resource Cloud Load Balancing untuk menerapkan perilaku jaringan yang ditentukan oleh resource Gateway.

Saat menggunakan Gateway GKE, jenis load balancer yang Anda gunakan untuk mengekspos aplikasi ke klien sangat bergantung pada faktor-faktor berikut:

  • Apakah layanan backend berada di satu cluster GKE atau didistribusikan di beberapa cluster GKE (dalam fleet yang sama).
  • Status klien (eksternal atau internal).
  • Kemampuan load balancer yang diperlukan, termasuk kemampuan untuk berintegrasi dengan kebijakan keamanan Google Cloud Armor.
  • Persyaratan rentang mesh layanan. Mesh layanan dapat mencakup beberapa cluster GKE atau dapat berada dalam satu cluster.

Di Gateway, perilaku ini dikontrol dengan menentukan GatewayClass yang sesuai. Saat merujuk ke class Gateway, class yang dapat digunakan dalam skenario multi-cluster memiliki nama class yang diakhiri dengan -mc.

Arsitektur referensi ini membahas cara mengekspos layanan aplikasi secara eksternal melalui Load Balancer Aplikasi eksternal. Namun, saat menggunakan Gateway, Anda juga dapat membuat Load Balancer Aplikasi internal multi-cluster regional.

Untuk men-deploy layanan aplikasi dalam skenario multi-cluster, Anda dapat menentukan komponen load balancerGoogle Cloud dengan dua cara berikut:

Untuk mengetahui informasi selengkapnya tentang kedua pendekatan ini dalam men-deploy layanan aplikasi, lihat Memilih multi-cluster load balancing API untuk GKE.

Multi Cluster Ingress mengandalkan pembuatan resource MultiClusterService. Gateway Multi-cluster mengandalkan pembuatan resource ServiceExport, dan merujuk ke resource ServiceImport.

Saat menggunakan Gateway multi-cluster, Anda dapat mengaktifkan kemampuan tambahan load balancer Google Cloud dasar dengan membuat Kebijakan. Panduan deployment yang terkait dengan arsitektur referensi ini menunjukkan cara mengonfigurasi kebijakan keamanan Google Cloud Armor untuk membantu melindungi layanan backend dari pembuatan skrip lintas situs.

Resource kebijakan ini menargetkan layanan backend di fleet yang ditampilkan di beberapa cluster. Dalam skenario multi-cluster, semua kebijakan tersebut harus merujuk resource ServiceImport dan grup API.

Health check

Salah satu kompleksitas penggunaan dua lapisan load balancing L7 adalah health check. Anda harus mengonfigurasi setiap load balancer untuk memeriksa kondisi lapisan berikutnya. Gateway GKE memeriksa respons proxy masuk mesh, dan sebagai gantinya, mesh memeriksa respons backend aplikasi.

  • Cloud ingress: Dalam arsitektur referensi ini, Anda mengonfigurasi Google Cloud load balancer melalui Gateway GKE untuk memeriksa respons proxy mesh masuk di port health check yang terekspos. Jika proxy mesh tidak aktif, atau jika cluster, mesh, atau region tidak tersedia, Google Cloud load balancer mendeteksi kondisi ini dan tidak mengirimkan traffic ke proxy mesh. Dalam hal ini, traffic akan dirutekan ke proxy mesh alternatif di cluster atau region GKE yang berbeda.
  • Mesh ingress: Dalam aplikasi mesh, Anda melakukan health check pada backend secara langsung sehingga Anda dapat menjalankan load balancing dan pengelolaan traffic secara lokal.

Pertimbangan desain

Bagian ini memberikan panduan untuk membantu Anda menggunakan arsitektur referensi ini untuk mengembangkan arsitektur yang memenuhi persyaratan khusus Anda demi keamanan dan kepatuhan, keandalan, dan biaya.

Keamanan, privasi, dan kepatuhan

Diagram arsitektur dalam dokumen ini berisi beberapa elemen keamanan. Elemen yang paling penting adalah cara Anda mengonfigurasi enkripsi dan men-deploy sertifikat. Gateway GKE terintegrasi dengan Certificate Manager untuk tujuan keamanan ini.

Klien internet melakukan autentikasi terhadap sertifikat publik dan terhubung ke load balancer eksternal sebagai langkah pertama di Virtual Private Cloud (VPC). Anda dapat merujuk ke Certificate Manager CertificateMap dalam definisi Gateway. Hop berikutnya adalah antara Google Front End (GFE) dan proxy masuk mesh. Hop tersebut dienkripsi secara default.

Enkripsi tingkat network antara GFE dan backend-nya diterapkan secara otomatis. Jika persyaratan keamanan Anda menentukan bahwa pemilik platform mempertahankan kepemilikan kunci enkripsi, Anda dapat mengaktifkan HTTP/2 dengan enkripsi TLS antara gateway cluster (GFE) dan traffic masuk mesh (instance proxy envoy).

Saat mengaktifkan HTTP/2 dengan enkripsi TLS antara gateway cluster dan mesh ingress, Anda dapat menggunakan penandatanganan sendiri atau sertifikat publik untuk mengenkripsi traffic. Anda dapat menggunakan sertifikat publik atau yang ditandatangani sendiri karena GFE tidak mengautentikasi terhadap sertifikat tersebut. Lapisan enkripsi tambahan ini ditunjukkan dalam panduan deployment yang terkait dengan arsitektur referensi ini.

Untuk membantu mencegah kesalahan penanganan sertifikat, jangan gunakan kembali sertifikat publik. Gunakan sertifikat terpisah untuk setiap load balancer di mesh layanan.

Untuk membantu membuat entri DNS dan sertifikat TLS eksternal, panduan deployment untuk arsitektur referensi ini menggunakan Cloud Endpoints. Dengan Cloud Endpoints, Anda dapat membuat subdomain cloud.goog yang tersedia secara eksternal. Dalam skenario tingkat perusahaan, gunakan nama domain yang lebih sesuai, dan buat data A yang mengarah ke alamat IP Load Balancer Aplikasi global di penyedia layanan DNS Anda.

Jika mesh layanan yang Anda gunakan mewajibkan TLS, semua traffic antara proxy sidecar dan semua traffic ke traffic masuk mesh dienkripsi. Diagram arsitektur menunjukkan enkripsi HTTPS dari klien ke Google Cloud load balancer, dari load balancer ke proxy masuk mesh, dan dari proxy masuk ke proxy file bantuan.

Keandalan dan ketahanan

Keuntungan utama dari pola edge-to-mesh multi-cluster dan multi-regional adalah bahwa pola ini dapat menggunakan semua fitur mesh layanan untuk load balancing timur-barat, seperti traffic antar-layanan aplikasi.

Arsitektur referensi ini menggunakan Gateway GKE multi-cluster untuk merutekan traffic cloud-ingress yang masuk ke cluster GKE. Sistem memilih cluster GKE berdasarkan kedekatannya dengan pengguna (berdasarkan latensi), serta ketersediaan dan kondisinya. Saat traffic mencapai gateway masuk Istio (traffic masuk mesh), traffic akan dirutekan ke backend yang sesuai melalui mesh layanan.

Pendekatan alternatif untuk menangani traffic timur-barat adalah melalui layanan multi-cluster untuk semua layanan aplikasi yang di-deploy di seluruh cluster GKE. Saat menggunakan layanan multi-cluster di seluruh cluster GKE dalam satu perangkat, endpoint layanan dikumpulkan bersama dalam ClusterSet. Jika layanan perlu memanggil layanan lain, layanan tersebut dapat menargetkan endpoint yang responsif untuk layanan kedua. Karena endpoint dipilih secara bergilir, endpoint yang dipilih dapat berada di zona yang berbeda atau region yang berbeda.

Keuntungan utama menggunakan mesh layanan untuk traffic timur-barat dibandingkan menggunakan layanan multi-cluster adalah bahwa mesh layanan dapat menggunakan load balancing lokalitas. Load balancing lokalitas bukan fitur layanan multi-cluster, tetapi Anda dapat mengonfigurasinya melalui DestinationRule.

Setelah dikonfigurasi, panggilan dari satu layanan ke layanan lainnya akan terlebih dahulu mencoba menjangkau endpoint layanan di zona yang sama, lalu mencoba di region yang sama dengan layanan panggilan. Terakhir, panggilan hanya menargetkan endpoint di region lain jika endpoint layanan di zona yang sama atau region yang sama tidak tersedia.

Pengoptimalan biaya

Saat mengadopsi arsitektur multi-cluster ini secara luas di seluruh perusahaan, Cloud Service Mesh dan Gateway multi-cluster disertakan dalam edisi Google Kubernetes Engine (GKE) Enterprise. Selain itu, GKE Enterprise menyertakan banyak fitur yang dapat Anda gunakan untuk mengelola dan mengatur cluster GKE, aplikasi, serta proses lainnya dalam skala besar.

Deployment

Untuk men-deploy arsitektur ini, lihat Dari edge ke mesh multi-cluster: Men-deploy aplikasi yang didistribusikan secara global melalui GKE Gateway dan Cloud Service Mesh.

Langkah berikutnya

Kontributor

Penulis:

Kontributor lainnya: