Di lingkungan Kubernetes, Spring Cloud Gateway tidak dapat secara otomatis menemukan layanan kontainer, memiliki kinerja lebih rendah dibandingkan gateway NGINX Ingress, dan memerlukan pengembangan kustom untuk mengintegrasikan fitur observabilitas serta keamanan. Dalam skenario migrasi cloud atau cloud hibrida, Anda mungkin berakhir dengan arsitektur dua lapis yang terdiri atas gateway Ingress dan Spring Cloud Gateway. Konfigurasi ini meningkatkan kompleksitas jaringan, konsumsi sumber daya, dan beban operasional. Gateway cloud-native menggabungkan fungsi gateway trafik tradisional dan gateway layanan mikro dalam satu layanan, sehingga menyederhanakan arsitektur, mengurangi biaya, serta menyediakan kinerja tinggi, integrasi mendalam, dan fungsionalitas siap pakai. Topik ini menjelaskan cara memigrasikan layanan Anda dari Spring Cloud Gateway ke gateway cloud-native MSE.
Prasyarat
Langkah 1: Identifikasi sumber layanan
Jika konfigurasi Anda memenuhi salah satu kondisi berikut, Anda dapat langsung melanjutkan ke Langkah 2: Migrasi konfigurasi Spring Cloud Gateway.
-
Anda menggunakan Container Service for Kubernetes (ACK) dan memanfaatkan Kubernetes Service untuk penemuan layanan.
-
Anda menggunakan instans MSE Nacos sebagai registri dan telah ditingkatkan ke versi yang mendukung Mesh Configuration Protocol (MCP).
-
Anda tidak bergantung pada mekanisme penemuan layanan dan menggunakan nama domain serta alamat IP tetap untuk layanan Anda.
Jika konfigurasi Anda sesuai dengan salah satu skenario berikut, lakukan langkah migrasi yang sesuai untuk menghubungkan ke gateway cloud-native:
-
Registri yang dikelola sendiri
-
Beli registri MSE Nacos. Untuk informasi selengkapnya, lihat Buat mesin Nacos.
-
Ubah konfigurasi atau kode Anda agar mendaftarkan layanan ke instans MSE Nacos. Untuk informasi selengkapnya, lihat Java SDK.
-
Opsional: Jika Anda memiliki aplikasi Java, Anda dapat memigrasikan registri dengan agen governance Microservices Engine (MSE). Untuk informasi selengkapnya, lihat Migrasi registri layanan dengan MSE Sync.
-
-
Registri bersama dari Enterprise Distributed Application Service (EDAS)
Gateway cloud-native mendukung registri EDAS. Anda dapat langsung menambahkan registri tersebut sebagai sumber layanan. Untuk detailnya, lihat Tambahkan sumber layanan.
-
Registri bersama dari Serverless App Engine (SAE)
Gateway cloud-native mendukung registri SAE. Anda dapat langsung menambahkan registri tersebut sebagai sumber layanan. Untuk detailnya, lihat Tambahkan sumber layanan.
Langkah 2: Migrasi konfigurasi Spring Cloud Gateway
Berikut adalah contoh konfigurasi untuk Spring Cloud Gateway:
-
Registri terkait
spring: application: name: gateway-demo cloud: nacos: discovery: server-addr: nacos-server:8848 config: enabled: false -
Konfigurasi routing dan lainnya yang terkait
spring: cloud: gateway: default-filters: - AddResponseHeader=X-Response-Default-Foo, Default-Bar routes: - id: websocket_test uri: ws://localhost:9000 order: 9000 predicates: - Path=/echo - id: default_path_to_service-a uri: lb://service-a order: 10000 predicates: - Path=/sleep service-a: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule ConnectTimeout: 1000 ReadTimeout: 8000 MaxAutoRetries: 3 MaxAutoRetriesNextServer: 2 MaxTotalConnections: 20000 MaxConnectionsPerHost: 5000 hystrix: command: service-a: execution: isolation: thread: timeoutInMilliseconds: 60000 strategy: SEMAPHORE semaphore: maxConcurrentRequests: 60000
Bagian berikut menunjukkan cara memetakan pengaturan Spring Cloud Gateway Anda ke operasi pada Konsol MSE:
-
Pemetaan konfigurasi registri
Dengan gateway cloud-native, Anda mengelola koneksi registri sebagai sumber layanan. Anda dapat membuat sumber layanan di Konsol MSE dan mengaitkannya dengan layanan Anda untuk pembaruan dinamis secara real-time. Untuk detailnya, lihat Tambahkan sumber layanan. Di kotak dialog Add service source, atur Source type ke MSE Nacos, pilih Cluster name yang sesuai, masukkan
NACOSuntuk Registry type, dan berikan Registry address. Prasyarat: Dalam pengaturan parameter, Anda harus mengatur MCPEnabled ketrue. Setelah menyelesaikan konfigurasi, klik OK. -
Pemetaan asosiasi layanan
-
Tambahkan layanan dengan mengimpor layanan yang ingin Anda berlangganan. Untuk informasi selengkapnya, lihat Tambahkan layanan.
-
Atur versi yang sesuai untuk setiap layanan yang ditambahkan. Untuk informasi selengkapnya, lihat Kelola versi layanan.
service-a: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule ConnectTimeout: 1000 ReadTimeout: 8000 MaxAutoRetries: 3 MaxAutoRetriesNextServer: 2 MaxTotalConnections: 20000 MaxConnectionsPerHost: 5000 -
-
Pemetaan konfigurasi routing
Konfigurasikan aturan routing untuk gateway. Untuk detailnya, lihat Buat aturan routing.
spring: cloud: gateway: routes: - id: websocket_test uri: ws://localhost:9000 order: 9000 predicates: - Path=/echo - id: default_path_to_service-a uri: lb://service-a order: 10000 predicates: - Path=/sleepGateway cloud-native mendukung berbagai kebijakan routing. Untuk informasi selengkapnya, lihat topik-topik berikut:
Langkah 3: Konfigurasikan autentikasi dan otorisasi
Gateway cloud-native mendukung beberapa metode autentikasi dan otorisasi standar. Untuk informasi selengkapnya, lihat topik-topik berikut:
Langkah 4: Lihat data gateway global
Anda dapat melihat dasbor data global untuk gateway cloud-native Anda. Untuk informasi selengkapnya, lihat topik-topik berikut:
Langkah 5: Migrasi trafik
Berikut adalah beberapa strategi untuk memigrasikan trafik klien:
-
Migrasi klien iteratif: Pilih beberapa skenario bisnis, ubah alamat aksesnya, lalu verifikasi migrasi tersebut.
-
Rilis canary bertahap di lapisan proxy: Di lapisan proxy yang sudah ada, buat rencana perubahan bertahap. Berdasarkan pembagian layanan inti dan non-inti Anda, alihkan trafik secara bertahap ke alamat baru.
-
Peralihan penuh melalui resolusi DNS: Setelah pengujian canary yang cukup, alihkan rekaman DNS ke alamat titik akhir gateway cloud-native yang baru.
-
(Direkomendasikan) Migrasi bertahap:
-
Pilih beberapa skenario bisnis untuk pengujian penerimaan.
-
Secara bertahap migrasikan trafik untuk skenario inti melalui rilis canary iteratif.
-
Setelah uji stres berhasil, lakukan migrasi penuh dengan mengalihkan rekaman DNS.
-
|
Strategi migrasi |
Biaya |
Risiko |
|
Migrasi klien iteratif |
Tinggi |
Rendah |
|
Rilis canary bertahap di lapisan proxy |
Sedang |
Sedang |
|
Peralihan penuh melalui resolusi DNS |
Rendah |
Tinggi |
|
Migrasi bertahap |
Relatif rendah |
Relatif rendah |
Dokumen terkait
Untuk informasi selengkapnya tentang gateway cloud-native, lihat Ikhtisar gateway cloud-native.