En un entorno de Kubernetes, Spring Cloud Gateway no descubre automáticamente los servicios de contenedores, ofrece un rendimiento inferior al de un gateway NGINX Ingress y requiere desarrollo personalizado para integrar funciones de observability y seguridad. En escenarios de migración a la nube o de nube híbrida, es posible terminar con una arquitectura de dos capas compuesta por un gateway Ingress y Spring Cloud Gateway. Esta configuración aumenta la complejidad de la red, el consumo de recursos y la sobrecarga operativa. Un gateway nativo de la nube combina las funciones de un gateway de tráfico tradicional y un gateway de microservices en un solo servicio. Esto simplifica su arquitectura, reduce costos y proporciona alto rendimiento, integración profunda y funcionalidad lista para usar. Este tema describe cómo migrar sus servicios de Spring Cloud Gateway a un gateway nativo de la nube de MSE.
Requisitos previos
Paso 1: Identificar el origen del servicio
Si su configuración cumple alguna de las siguientes condiciones, puede saltar a Step 2: Migrate Spring Cloud Gateway configurations.
Utiliza Container Service for Kubernetes (ACK) y usa Kubernetes Service para el descubrimiento de servicios.
Utiliza una instancia de MSE Nacos como registro y esta se ha actualizado a una versión compatible con Mesh Configuration Protocol (MCP).
No depende de un mecanismo de descubrimiento de servicios y utiliza nombres de dominio y direcciones IP fijas para sus servicios.
Si su configuración coincide con uno de los siguientes escenarios, realice los pasos de migración correspondientes para conectarse al gateway nativo de la nube:
-
Registro autogestionado
Adquiera un registro de MSE Nacos. Para obtener más información, consulte Create a Nacos engine.
Modifique sus configuraciones o código para registrar sus servicios en la instancia de MSE Nacos. Para obtener más información, consulte Java SDK.
Opcional: Si tiene una aplicación Java, puede migrar su registro con el agente de gobernanza de Microservices Engine (MSE). Para obtener más información, consulte Migrate service registries with MSE Sync.
-
Registro compartido de Enterprise Distributed Application Service (EDAS)
El gateway nativo de la nube admite registros de EDAS. Puede agregar directamente el registro como origen de servicio. Para obtener más detalles, consulte Add a service source.
-
Registro compartido de Serverless App Engine (SAE)
El gateway nativo de la nube admite registros de SAE. Puede agregar directamente el registro como origen de servicio. Para obtener más detalles, consulte Add a service source.
Paso 2: Migrar las configuraciones de Spring Cloud Gateway
A continuación se muestran ejemplos de configuraciones para Spring Cloud Gateway:
-
Registro asociado
spring: application: name: gateway-demo cloud: nacos: discovery: server-addr: nacos-server:8848 config: enabled: false -
Enrutamiento y otras configuraciones relacionadas
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
Las siguientes secciones muestran cómo asignar la configuración de Spring Cloud Gateway a operaciones en la consola de MSE:
-
Asignación de configuraciones de registro
Con un gateway nativo de la nube, las conexiones de registro se gestionan como orígenes de servicio. Cree un origen de servicio en la consola de MSE y asócielo con sus servicios para obtener actualizaciones dinámicas en tiempo real. Para obtener más detalles, consulte Add a service source. En el cuadro de diálogo Add service source, establezca Source type en MSE Nacos, seleccione el Cluster name correspondiente, introduzca
NACOSen Registry type y proporcione la Registry address. Requisito previo: En la configuración de parámetros, debe establecer MCPEnabled entrue. Una vez completada la configuración, haga clic en OK. -
Asignación de asociaciones de servicios
Agregue servicios mediante la importación de aquellos a los que desea suscribirse. Para obtener más información, consulte Add a service.
Establezca una versión adecuada para cada servicio agregado. Para obtener más información, consulte Manage service versions.
service-a: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule ConnectTimeout: 1000 ReadTimeout: 8000 MaxAutoRetries: 3 MaxAutoRetriesNextServer: 2 MaxTotalConnections: 20000 MaxConnectionsPerHost: 5000 -
Asignación de configuraciones de enrutamiento
Configure una regla de enrutamiento para el gateway. Para obtener más detalles, consulte Create a routing rule.
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=/sleepUn gateway nativo de la nube admite varias políticas de enrutamiento. Para obtener más información, consulte los siguientes temas:
Paso 3: Configurar la autenticación y autorización
El gateway nativo de la nube admite varios métodos estándar de autenticación y autorización. Para obtener más información, consulte los siguientes temas:
Paso 4: Consultar datos globales del gateway
Puede consultar los paneles de datos globales de su gateway nativo de la nube. Para obtener más información, consulte los siguientes temas:
Paso 5: Migrar el tráfico
Existen varias estrategias para migrar el tráfico de clientes:
Migración iterativa de clientes: Seleccione algunos escenarios de negocio, modifique sus direcciones de acceso y compruebe la migración.
Versión canary gradual en la capa de proxy: En su capa de proxy existente, cree un plan de cambios graduales. Según su división de servicios principales y no principales, cambie progresivamente el tráfico a la nueva dirección.
Cambio total mediante resolución DNS: Después de realizar pruebas canary suficientes, cambie el registro DNS a la dirección de endpoint del nuevo gateway nativo de la nube.
-
(Recomendado) Migración paso a paso:
Seleccione algunos escenarios de negocio para las pruebas de aceptación.
Migre gradualmente el tráfico de los escenarios principales mediante versiones canary iterativas.
Tras superar las pruebas de estrés, realice una migración completa mediante el cambio del registro DNS.
|
Estrategia de migración |
Costo |
Riesgo |
|
Migración iterativa de clientes |
Alto |
Bajo |
|
Versión canary gradual en la capa de proxy |
Medio |
Medio |
|
Cambio total mediante resolución DNS |
Bajo |
Alto |
|
Migración paso a paso |
Relativamente bajo |
Relativamente bajo |
Documentos relacionados
Para obtener más información sobre los gateways nativos de la nube, consulte Overview of cloud-native gateways.