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.

Dirección uniforme de servicio Istio para uso interno y externo.

Tengo la necesidad de propagar un encabezado a un servicio que contiene una dirección de devolución de llamada. ¿Cómo puedo obtener una combinación de host/puerto que funcione tanto dentro de la malla de servicios de Istio como fuera de ella, es decir, en un servicio externo? Por ejemplo, tengo un servicio S1 en el espacio de nombres N que llama a algún otro servicio S2 que puede o no estar en la malla de servicios. Quiero pasarle a S2 alguna dirección que pueda usar para devolver la llamada a S1. ¿Qué dirección debo usar?

-tl

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para propagar un encabezado a un servicio que contiene una dirección de devolución de llamada tanto dentro como fuera de la malla de servicios de Istio, el mejor enfoque sería utilizar el recurso VirtualService de Istio.

    En primer lugar, asegúrese de haber instalado Istio y habilitado la inyección automática del sidecar para su clúster de Kubernetes.

    A continuación, cree un VirtualService para el servicio S1 en el espacio de nombres N creando un archivo YAML con el siguiente contenido:

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: s1
    spec:
      hosts:
      - s1.namespace.svc.cluster.local
      http:
      - match:
        - uri:
            exact: /callback
        route:
        - destination:
            host: s1.namespace.svc.cluster.local
            subset: s1-v1 # asumiendo que hay varias versiones de S1
      exportTo:
      - "."
    

    En el archivo YAML anterior, modifique el campo hosts para que coincida con el nombre de host de S1 en su clúster de Kubernetes, y modifique los campos destination host y subset para que coincidan con el nombre de host real y el subset de S1.

    El campo exportTo asegura que este VirtualService también se aplique a servicios fuera de la malla de servicios de Istio.

    Ahora, cuando el servicio S1 llama al servicio S2, debe establecer la dirección de devolución de llamada como un encabezado HTTP, por ejemplo, `X-Callback-Url: http://s1.namespace.svc.cluster.local/callback`. El servicio S2 puede recuperar este encabezado y usarlo para devolver la llamada a S1.

    Si S2 también está dentro de la malla de servicios de Istio, entonces puede utilizar el recurso VirtualService para aplicar el mismo patrón. Si S2 está fuera de la malla de servicios de Istio, entonces debe utilizar un nombre de host o dirección IP externa en lugar del nombre de host de Kubernetes en el encabezado X-Callback-Url.

Comments are closed.