Estoy tratando de entender el enrutamiento del tráfico de Istio. Instalé Istio en modo de demostración y me puse a jugar con las muestras. Las muestras hacen que instale algunas puertas de enlace (hice bookinfo-gateway y httpbin-gateway .
Pero parece que todo mi tráfico pasa por el puerto "http2" definido en istio-ingressgateway en el espacio de nombres istio-system .
La documentación hace referencia a esto:
Istio proporciona algunas implementaciones de proxy de puerta de enlace preconfiguradas (istio-ingressgateway e istio-egressgateway) que puede usar; ambas se implementan si usa nuestra instalación de demostración.
Pero cuando ejecuto: kubectl -n istio-system get service istio-ingressgateway -o yaml el resultado muestra kind: Service .
Las otras puertas de enlace que me hicieron las demostraciones muestran el kind: Gateway .
Así que me quedo confundido...
istio-ingressgateway (eso es realmente un servicio)?VirtualService con istio-ingressgateway ? ¿Es solo buscar todos los VirtualServices ?¿Hay alguna diferencia entre un servicio y una puerta de enlace?
Sí.
istio-ingressgateway es un servicio de kubernetes de tipo LoadBalancer (o NodePort , según su configuración) que sirve como punto de entrada a su clúster. El ingressgateway es el controlador de ingreso de istio y es completamente opcional.gateway de enlace es un recurso personalizado de istio, que sirve como entrada a su malla. Está vinculado a una puerta de entrada por el selector, por ejemplo, consulte https://github.com/istio/istio/blob/master/samples/httpbin/httpbin-gateway.yaml kind: Gateway [...] spec: selector: istio: ingressgateway¿Cómo usaría las puertas de enlace de aplicaciones de muestra en lugar de la puerta de enlace istio-ingress (eso es realmente un servicio)?
Necesita ambos (u otra forma de controlador de ingreso y enrutar todo el tráfico a través de la puerta de enlace de malla, más sobre eso, vea a continuación).
¿Cómo conecta istio mi VirtualService con istio-ingressgateway. ¿Es solo buscar todos los VirtualServices?
Vuelva a ver este archivo yaml: https://github.com/istio/istio/blob/master/samples/httpbin/httpbin-gateway.yaml
La puerta de enlace está vinculada a la puerta de entrada.
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: httpbin-gateway spec: selector: istio: ingressgateway [...] Un VirtualService como el del archivo está vinculado a una gateway de enlace.
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: httpbin spec: gateways: - httpbin-gateway [...] Entonces, si el tráfico usa su puerta de enlace, se considera el VirtualService .
Además de las puertas de enlace que configura, siempre está la puerta de enlace de malla. Entonces, si desea que el tráfico de su clúster interno use la configuración de istio, debe agregar la puerta de enlace de malla a su servicio virtual:
gateways: - httpbin-gateway - mesho crear un servicio virutal separado para eso. Si no establece ninguna puerta de enlace, se utilizará la puerta de enlace de malla, ya que es la predeterminada. Consulte: https://istio.io/latest/docs/reference/config/networking/virtual-service/#VirtualService -> la entrada de las puertas de enlace