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

Last reviewed 2024-06-30 UTC

Arsitektur referensi ini menjelaskan manfaat mengekspos aplikasi secara eksternal melalui Google Kubernetes Engine (GKE) Gateway 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 beberapa cluster GKE, dengan setiap cluster menjadi domain kegagalan tambahan. Misalnya, infrastruktur komputasi layanan dengan tujuan tingkat layanan (SLO) sebesar 99,9% saat di-deploy di satu cluster GKE akan mencapai SLO sebesar 99,9999% saat di-deploy di dua cluster GKE (1 - (0,001)2). Anda juga dapat memberikan pengalaman kepada pengguna saat permintaan masuk secara otomatis diarahkan ke gateway masuk mesh yang paling laten dan tersedia.

Jika Anda tertarik dengan manfaat mengekspos aplikasi yang mendukung mesh layanan yang berjalan di satu cluster, lihat Dari edge ke mesh: Mengekspos aplikasi mesh layanan melalui GKE Gateway.

Arsitektur

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

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

Diagram sebelumnya menunjukkan skenario aliran data berikut:

  • Dari klien yang dihentikan di load balancer Google Cloud menggunakan sertifikat TLS-nya sendiri yang dikelola Google.
  • Dari load balancer Google Cloud ke proxy traffic masuk mesh menggunakan sertifikat TLS yang ditandatangani sendiri.
  • Dari proxy gateway masuk mesh ke proxy sidecar beban kerja menggunakan mTLS yang mendukung mesh layanan.

Arsitektur referensi ini berisi dua lapisan ingress berikut:

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

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

  • Memberikan latensi rendah.
  • Meningkatkan ketersediaan.
  • Gunakan fitur keamanan lapisan ingress cloud.
  • Gunakan fitur keamanan, otorisasi, dan visibilitas dari lapisan ingres mesh.

Traffic masuk cloud

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

  • Perlindungan DDoS
  • Firewall cloud
  • Autentikasi dan otorisasi
  • Enkripsi

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

Karena fungsi penting load balancer yang terhubung ke internet, lapisan traffic masuk cloud kemungkinan akan 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 menyediakan akses tersebut.

Traffic masuk mesh

Jika dipasangkan dengan traffic masuk cloud, lapisan traffic masuk mesh menyediakan titik entri untuk traffic agar dapat memasuki mesh layanan. Lapisan ini juga menyediakan mTLS backend, kebijakan otorisasi, dan pencocokan ekspresi reguler yang fleksibel.

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

Produk dan fitur yang digunakan

Daftar berikut merangkum semua produk dan fitur Google Cloud yang digunakan oleh arsitektur referensi 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 menayangkan 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 memungkinkan Anda menjalankan dan menskalakan layanan.
  • 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 menggunakan fleet untuk mengelompokkan dan menormalisasi cluster Kubernetes secara logis.

Penggunaan satu atau beberapa fleet dapat membantu Anda meningkatkan pengelolaan dari cluster individual ke seluruh grup cluster. Untuk mengurangi hambatan pengelolaan cluster, gunakan prinsip fleet tentang kesamaan namespace. Untuk setiap cluster GKE dalam armada, pastikan Anda mengonfigurasi semua gateway ingress mesh dengan cara yang sama.

Selain itu, deploy layanan aplikasi secara konsisten sehingga pembaca saldo layanan di akun namespace terkait dengan layanan yang identik di setiap cluster GKE dalam fleet. Prinsip kesamaan dan kepercayaan yang diasumsikan dalam fleet adalah hal yang memungkinkan Anda menggunakan berbagai fitur berkemampuan fleet di GKE Enterprise dan Google Cloud.

Aturan perutean timur-barat dalam mesh layanan dan kebijakan traffic ditangani di lapisan traffic masuk mesh. Lapisan ingress mesh di-deploy di setiap cluster GKE dalam fleet. Konfigurasikan setiap gateway ingress mesh dengan cara yang sama, dengan mematuhi prinsip kesamaan namespace fleet.

Meskipun ada satu cluster konfigurasi untuk GKE Gateway, Anda harus menyinkronkan konfigurasi GKE Gateway di semua 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 yang tidak terbaru.

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 traffic 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 sidecar aplikasi. Traffic masuk mesh menentukan perlakuan traffic saat mencapai node di mesh, tetapi komponen eksternal harus menentukan cara traffic pertama kali muncul 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 GKE Gateway.

Layanan multi-cluster dan GKE Gateway

Ada banyak cara untuk memberikan akses aplikasi kepada klien yang berada di luar cluster. GKE Gateway adalah implementasi Kubernetes Gateway API. GKE Gateway mengembangkan dan meningkatkan resource Ingress.

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

Saat menggunakan GKE Gateway, 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 cakupan mesh layanan. Mesh layanan dapat mencakup beberapa cluster GKE atau dapat ditempatkan 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 regional multi-cluster.

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

Untuk mengetahui informasi selengkapnya tentang kedua pendekatan ini untuk men-deploy layanan aplikasi, lihat Memilih API load balancing multi-cluster Anda 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 yang mendasarinya 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 cross-site scripting.

Resource kebijakan ini menargetkan layanan backend dalam fleet yang ditampilkan di beberapa cluster. Dalam skenario multi-cluster, semua kebijakan tersebut harus mereferensikan 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. GKE Gateway memeriksa kondisi proxy traffic masuk mesh, dan sebagai gantinya, mesh akan memeriksa kondisi backend aplikasi.

  • Traffic masuk cloud: Dalam referensi arsitektur ini, Anda akan mengonfigurasi load balancer Google Cloud melalui GKE Gateway untuk memeriksa kondisi proxy traffic masuk mesh pada port health check yang terekspos. Jika proxy mesh tidak aktif, atau jika cluster, mesh, atau region tidak tersedia, load balancer Google Cloud mendeteksi kondisi ini dan tidak mengirim traffic ke proxy mesh. Dalam hal ini, traffic akan dirutekan ke proxy mesh alternatif di cluster atau region GKE yang berbeda.
  • Traffic masuk mesh: Dalam aplikasi mesh, Anda menjalankan health check secara langsung pada backend agar 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 spesifik Anda terkait 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. GKE Gateway terintegrasi dengan Pengelola Sertifikat untuk tujuan keamanan ini.

Klien internet melakukan autentikasi terhadap sertifikat publik dan terhubung ke load balancer eksternal sebagai hop pertama di Virtual Private Cloud (VPC). Anda dapat merujuk ke CertificateMap di definisi Gateway Certificate Manager. Hop berikutnya berada di antara Google Front End (GFE) dan proxy traffic 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 ingress mesh, Anda dapat menggunakan sertifikat yang ditandatangani sendiri atau sertifikat publik untuk mengenkripsi traffic. Anda dapat menggunakan sertifikat yang ditandatangani sendiri atau sertifikat publik karena GFE tidak melakukan autentikasi terhadapnya. 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 eksternal dan sertifikat TLS, panduan deployment untuk arsitektur referensi ini menggunakan Cloud Endpoints. Dengan menggunakan 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 Application Load Balancer 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 akan dienkripsi. Diagram arsitektur menunjukkan enkripsi HTTPS dari klien ke load balancer Google Cloud, dari load balancer ke proxy traffic masuk mesh, dan dari proxy traffic masuk ke proxy sidecar.

Keandalan dan ketahanan

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

Arsitektur referensi ini menggunakan Gateway GKE multi-cluster untuk merutekan traffic traffic masuk cloud 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 east-west 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 fleet, endpoint layanan dikumpulkan bersama dalam ClusterSet. Jika perlu memanggil layanan lain, layanan tersebut dapat menargetkan endpoint yang sehat untuk layanan kedua. Karena endpoint dipilih secara bergantian, endpoint yang dipilih dapat berada di zona atau wilayah yang berbeda.

Keuntungan utama menggunakan mesh layanan untuk traffic east-west, bukan menggunakan layanan multi-cluster, adalah 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 lain akan mencoba menjangkau endpoint layanan di zona yang sama terlebih dahulu, lalu mencoba di region yang sama dengan layanan panggilan. Terakhir, panggilan hanya menargetkan endpoint di region lain jika endpoint layanan di zona 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 Enterprise Google Kubernetes Engine (GKE). Selain itu, GKE Enterprise menyertakan banyak fitur yang memungkinkan Anda mengelola dan mengatur cluster, aplikasi, dan proses GKE 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 selanjutnya

Kontributor

Penulis:

Kontributor lainnya: