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.

Comportamiento extraño del puerto de la puerta de Istio

Tengo dificultades para entender cómo se utiliza exactamente el puerto Istio Gateway. Me refiero a la línea 14 en el siguiente ejemplo:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: gateway
spec:
  selector:
    istio: ingressgateway
  servers:
    - port:
        number: 8169
        name: http-test1
        protocol: HTTP
      hosts:
        - ''*''

De la documentación de Istio:

El puerto en el que el proxy debe escuchar para conexiones entrantes. Por lo tanto, si aplicas el archivo yaml anterior y revisas los puertos TCP de escucha del pod de ingreso de Istio, verás que el puerto 8169 es el que se está utilizando (ver el resultado a continuación):

kubectl -n=istio-system exec istio-ingressgateway-8577c57fb6-p8zl5 -- ss -nl | grep 8169
tcp   LISTEN 0      4096               0.0.0.0:8169        0.0.0.0:*

Pero aquí viene la parte complicada. Si antes de aplicar el Gateway, cambias el servicio istio-ingressgateway de la siguiente manera:

apiVersion: v1
kind: Service
metadata:
  name: istio-ingressgateway
...
  - name: http5
    nodePort: 31169
    port: 8169
    protocol: TCP
    targetPort: 8069
...

Y luego aplicas el Gateway, el puerto real utilizado no es 8169, sino 8069. Parece que el recurso Gateway primero verifica si hay un puerto coincidente en el servicio istio-ingressgateway y utiliza el targetPort del servicio en su lugar.

kubectl -n=istio-system exec istio-ingressgateway-8577c57fb6-p8zl5 -- ss -nl | grep 8169
<resultado vacío="">
kubectl -n=istio-system exec istio-ingressgateway-8577c57fb6-p8zl5 -- ss -nl | grep 8069
tcp   LISTEN 0      4096               0.0.0.0:8069        0.0.0.0:*

¿Alguien puede explicar por qué sucede esto? Agradezco de antemano cualquier ayuda.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual el puerto actual utilizado no es 8169, sino 8069 cuando se modifica el servicio istio-ingressgateway, es porque el recurso Gateway verifica un puerto coincidente en el servicio y utiliza el targetPort del servicio en lugar del puerto original especificado en el Gateway. Este comportamiento permite una mayor flexibilidad y una gestión más fácil de las asignaciones de puertos entre el Gateway y otros recursos en la malla de servicios de Istio. Es importante tener en cuenta que la especificación del puerto en el Gateway sigue siendo necesaria, ya que define el puerto lógico en el que el Gateway espera que llegue el tráfico.

Comments are closed.