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.

¿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?

Tags:  ,

Answer

  1. Avatar for 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 comando curl de la siguiente manera:

    curl -H "Host: rewrite.bar.com.com" http://10.2.0.58:32243/GetData
    

    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.

Comments are closed.