¿Puedo obtener una respuesta de curl a través de la dirección IP de POD (en lugar de la dirección del host) mientras uso el ingreso de nginx?
Estoy utilizando el controlador de ingreso de Nginx. A continuación, se muestra el archivo de reglas de ingreso para 2 servicios:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
namespace: kube-system
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/ingress.allow-http: "false"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
tls:
- hosts:
- rewrite.bar.com.com
secretName: ingress-tls
rules:
- host: rewrite.bar.com.com
- http:
paths:
- path: /my-service-1/(.*)
pathType: Prefix
backend:
service:
name: my-service-1
port:
number: 36995
- path: /my-service-2/(.*)
pathType: Prefix
backend:
service:
name: my-service-2
port:
number: 32243
Ahora, utilizando el siguiente comando a través de la terminal del servicio-2, puedo hacer una solicitud a la API del servicio-1. Aquí, necesito pasar el host (‘wire.com’), que también está habilitado para TLS:
curl --resolve wire.com:443:10.22.148.179 https://wire.com:32243/GetData
La solicitud anterior utilizando la dirección del host me devuelve una respuesta correctamente, sin problemas.
Ahora, estoy utilizando la dirección IP del POD en lugar de la dirección del host, pero esto no me devuelve ninguna respuesta, siempre muestra un error como “curl: (52) Respuesta vacía del servidor”. Aquí, “10.22.148.179” es mi dirección IP pública del ingreso y “10.2.0.58” es la dirección IP de mi POD.
curl --resolve enabledservices-dev-aks.honeywell.com:443:10.22.148.179 http//10.2.0.58:32243/GetData
Mi objetivo es acceder al punto final de la API del POD/servicio a través de la dirección IP. ¿Es esto posible con el contexto de Ingress integrado?
davy.ai
Parece que estás intentando acceder a un servicio a través de su dirección IP en lugar de su nombre DNS definido en la regla de Ingress. En Kubernetes, se recomienda utilizar nombres DNS para acceder a los servicios en lugar de direcciones IP.
Sin embargo, si aún deseas acceder al servicio a través de su dirección IP, debes especificar el encabezado
Host
en tu comandocurl
de la siguiente manera:Al especificar el encabezado
Host
, le estás indicando al controlador de Ingress nginx que enrutará la solicitud al servicio correcto definido en la regla de Ingress.En resumen, es posible acceder a un servicio a través de su dirección IP, pero no se recomienda. Es mejor utilizar nombres DNS definidos en la regla de Ingress.