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.
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.