es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna manera en la que podamos especificar dos servicios para una única ruta de contexto en el servicio virtual de Istio?

Tengo dos micro-servicios diferentes que se ejecutan en el mismo espacio de nombres, ambos tienen la misma ruta de contexto (por ejemplo, mi/ruta/de/contexto), además los controladores son diferentes en ambos, por ejemplo el servicio uno soporta – mi/ruta/de/contexto/servicio1 y el servicio 2 soporta mi/ruta/de/contexto/servicio2.
Ahora, cuando defino VS como este, siempre redirige al servicio1, ¿hay una forma posible de lograr esto?
a continuación se muestra mi VS:

apiVersion: networking.istio.io/v1alpha3 
kind: VirtualService 
metadata: 
  name: test-service 
  namespace: ns-ns 
spec: 
  gateways: 
    - gateway.ns-ns 
  hosts: 
    - '*' 
  http: 
    - match: 
      - uri: 
          prefix: /my/context/path 
      route: 
        - destination: 
            host: service1.ns-ns.svc.cluster.local 
            port: 
              number: 9000 
    - route: 
        - destination: 
            host: service2.ns-ns.svc.cluster.local 
            port: 
              number: 9000 

También intenté el VS a continuación, pero también parece redirigir al primer servicio.

apiVersion: networking.istio.io/v1alpha3 
kind: VirtualService 
metadata: 
  name: test-service 
  namespace: ns-ns 
spec: 
  gateways: 
    - gateway.ns-ns 
  hosts: 
    - '*' 
  http: 
    - match: 
      - uri: 
          prefix: /my/context/path 
      route: 
        - destination: 
            host: service1.ns-ns.svc.cluster.local 
            port: 
              number: 9000 
    - match: 
      - uri: 
          prefix: /my/context/path/service2 
      route: 
        - destination: 
            host: service2.ns-ns.svc.cluster.local 
            port: 
              number: 9000 

No estoy seguro si esto es posible o no, o si necesito separar la parte del contexto de ambos servicios.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible lograr esto. Necesitas separar la parte de contexto de ambos servicios para poder enrutar las solicitudes hacia el servicio correcto. Puedes hacer esto añadiendo una nueva sección match a la configuración de VirtualService. Por ejemplo:

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
    name: servicio-de-prueba
    namespace: ns-ns
    spec:
    gateways:
    – gateway.ns-ns
    hosts:
    – '*'
    http:
    – match:
    – uri:
    prefix: /mi/ruta/de/contexto/servicio1
    route:
    – destination:
    host: servicio1.ns-ns.svc.cluster.local
    port:
    number: 9000
    – match:
    – uri:
    prefix: /mi/ruta/de/contexto/servicio2
    route:
    – destination:
    host: servicio2.ns-ns.svc.cluster.local
    port:
    number: 9000

    Esta configuración enrutará las solicitudes a /mi/ruta/de/contexto/servicio1 hacia servicio1 y las solicitudes a /mi/ruta/de/contexto/servicio2 hacia servicio2.

Comments are closed.