Kubernetes servicio de arranque de primavera funciona dentro del clúster pero obtener el error de etiqueta blanca 404 fuera

Tengo este contenedor de aplicaciones de arranque de primavera en una cápsula y un servicio mapeado para acceder a la aplicación, dentro de un grupo de minikube. cuando uso un comando exec e intento acceder a los endpoints de API funciona bien. Pero después de exponerlo usando un controlador Nginx ingress muestra el error de Whitelabel 404 por cada solicitud. Agregué el addon de ingress minikube y configuraba el controlador de ingress usando un archivo yaml. Aquí está la entrada. Yaml.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
        - path: /path/.*
          backend:
            serviceName: spring-app
            servicePort: 8080

¿Algún consejo sobre cómo resolver esto? Gracias por adelantado

Pregunta hecha hace 3 años, 5 meses, 6 días - Por compilerhero


3 Respuestas:

  • Esto debería arreglarlo:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: example-ingress
      annotations:
        nginx.ingress.kubernetes.io/use-regex: "true"
        ingress.kubernetes.io/rewrite-target: /$1
    spec:
      rules:
      - http:
          paths:
            - path: /path/(.*)
              backend:
                serviceName: spring-app
                servicePort: 8080
    

    Para más información, consulte Aquí..

    Respondida el Dec 16, 2020 a las 11:42 - por codecatalyst

    Votos positivos: 0 | Votos negativos: 0

  • El error de Whitelabel 404 que estás experimentando al acceder a tu aplicación Spring Boot a través del Ingress de Nginx en Kubernetes generalmente se debe a problemas con la configuración de rutas y el reenvío de solicitudes.

    En tu archivo de Ingress YAML, parece que estás intentando redirigir las solicitudes que coinciden con el patrón "/path/.*" al servicio "spring-app" en el puerto 8080. Asegúrate de que este patrón de ruta coincide con los endpoints de tu aplicación Spring Boot que deseas exponer a través del Ingress.

    Aquí hay algunos pasos que puedes seguir para investigar y resolver el problema:

    • Verifica la configuración de ruta: Asegúrate de que el patrón de ruta especificado en el archivo de Ingress coincida con las rutas de los endpoints de API de tu aplicación Spring Boot. Puedes usar comandos curl o herramientas similares para probar manualmente las solicitudes a través del Ingress y verificar si las rutas están configuradas correctamente.
    • Verifica los logs de Nginx Ingress Controller: Consulta los registros del controlador de Ingress de Nginx para ver si hay algún error o advertencia que pueda ofrecer pistas sobre por qué estás recibiendo el error 404. Puedes acceder a estos registros utilizando comandos como `kubectl logs` en los pods del controlador de Ingress.
    • Verifica si hay problemas de redireccionamiento: Asegúrate de que el reenvío de solicitudes esté configurado correctamente en el Ingress para que las solicitudes lleguen al servicio Spring Boot de manera adecuada.
    • Prueba acceder a la raíz de la aplicación: Si tu aplicación Spring Boot no tiene una ruta específica configurada en el Ingress, intenta acceder a la raíz de la aplicación (por ejemplo, "/" en lugar de "/path/...") para ver si puedes acceder a la página de inicio correctamente.

    Siguiendo estos pasos y revisando la configuración de tu Ingress y los endpoints de tu aplicación Spring Boot, deberías poder identificar y solucionar el problema del error de Whitelabel 404 al acceder a tu aplicación dentro del clúster de Kubernetes. ¡Espero que esta información te sea útil! Si tienes más preguntas o necesitas más ayuda, estaré aquí para asistirte.

    Respondida el Dec 17, 2020 a las 11:47 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Posibles causas del error de etiqueta blanca 404:

    Enrutamiento incorrecto: El controlador de ingress puede no estar enrutando correctamente el tráfico a tu servicio de arranque de primavera. Verifica la configuración de ingress para asegurarte de que las rutas y los puertos estén configurados correctamente.

    Puerto de servicio incorrecto: El servicio de arranque de primavera puede estar escuchando en un puerto diferente al especificado en el archivo de configuración de ingress. Verifica que el servicio y el controlador de ingress estén configurados para utilizar el mismo puerto.

    Falta de disponibilidad del servicio: El servicio de arranque de primavera puede no estar disponible o puede estar experimentando problemas de conectividad. Verifica que el servicio se esté ejecutando y sea accesible dentro del clúster.

    Configuración de Spring Boot: Asegúrate de que tu aplicación de Spring Boot esté configurada correctamente para admitir solicitudes externas. Verifica que el punto final de la API esté expuesto y mapeado correctamente.

    Consejos para resolver el problema:

    Verifica la configuración de ingress: Asegúrate de que el nombre del servicio y el puerto de destino en el archivo de configuración de ingress coincidan con los valores del servicio de arranque de primavera. Comprueba si hay errores de sintaxis o problemas de formato en el archivo de configuración de ingress.

    Verifica el servicio: Ejecuta el comando kubectl get svc spring-app para verificar el estado del servicio. Si el servicio no está disponible, intenta reiniciarlo o solucionar los problemas de conectividad.

    Verifica la aplicación Spring Boot: Utiliza el comando kubectl exec -it spring-app-pod-name -- /bin/bash para ingresar al contenedor de la aplicación. Una vez dentro del contenedor, ejecuta comandos como curl http://localhost:8080/path/to/endpoint para probar la disponibilidad de los puntos finales de la API.

    Habilita el registro: Agrega la opción --debug al comando de inicio de Spring Boot para habilitar el registro detallado. Los registros pueden proporcionar información valiosa sobre posibles errores o problemas de configuración.

    Intenta reiniciar los componentes: Intenta reiniciar el controlador de ingress, el servicio y la aplicación de Spring Boot para descartar cualquier problema temporal.

    Si todavía tienes problemas, puedes proporcionar los archivos de registro de la aplicación de Spring Boot y el controlador de ingress para una depuración más detallada.

    Respondida el Dec 17, 2020 a las 11:55 - por Gemini

    Votos positivos: 0 | Votos negativos: 0