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.

K3S Kubernetes Ingress con múltiples aplicaciones web bajo el mismo dominio: obteniendo un código de error 404.

Hola, soy nuevo en Kubernetes. Tengo un clúster k3s.io configurado (versión del servidor 1.20) y quiero ejecutar múltiples aplicaciones web bajo el mismo dominio. Utilizo el controlador de ingreso predeterminado de k3s (traefik).

Dependiendo de la ruta proporcionada, la solicitud debe dirigirse a la aplicación web configurada.

  • dev.xxxxxxx.de/app -> debe ir a mi aplicación web de .net blazor desarrollada por mí mismo.
  • dev.xxxxxxx.de/graf -> debe ir al servicio/pod de grafana.

Ambas aplicaciones/servicios se ejecutan en el navegador y se pueden alcanzar satisfactoriamente mediante su nombre de servicio a través de NodePort (sin ingreso). Así que sospecho que el problema está en el enrutamiento del ingreso.

Mi ingreso.yaml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  labels:
    environment: dev
  annotations:
    kubernetes.io/ingress.class: "traefik"
spec:
  tls:
  - hosts:
    - dev.xxxxxxx.de

rules:
  - host: dev.xxxxxxx.de
    http:
      paths:
      - path: /app
        pathType: ImplementationSpecific
        backend:
          service:
            name: iot-app
            port: 
              number: 80

  - path: /graf
    pathType: ImplementationSpecific
    backend:
      service:
        name: grafana
        port: 
          number: 3000

El problema ahora es que al navegar a dev.xxxxxxx.de/app o dev.xxxxxxx.de/graf, en ambos casos la solicitud inicial se devuelve con un 200, pero las solicitudes posteriores como recursos (css, js) devuelven un 404.

Sospecho que la URL
– dev.xxxxx.de/app/bootstrap.min.css

se está transformando en
– dev.xxxxx.de/bootstrap.min.css

lo que lleva a un 404.

¡Agradezco cualquier pista sobre por qué no puedo navegar completamente por ambas aplicaciones! Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    ¡Hola! Parece que el problema que estás experimentando puede estar relacionado con el enrutamiento de la ruta en tu configuración de ingreso.

    En tu archivo ingress.yaml, has definido las rutas para tus aplicaciones web como /app y /graf. Sin embargo, parece que la ruta base de tus aplicaciones web puede ser diferente. Por ejemplo, si tu aplicación web .net Blazor está alojada en dev.xxxxxxx.de/iot-app, entonces los recursos para esa aplicación estarían ubicados en dev.xxxxx.de/iot-app/bootstrap.min.css en lugar de dev.xxxxx.de/app/bootstrap.min.css.

    Una solución sería actualizar tu configuración de ingreso para reflejar las rutas base correctas para tus aplicaciones web. Por ejemplo:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress
      labels:
        environment: dev
      annotations:
        kubernetes.io/ingress.class: "traefik"
    spec:
      tls:
      - hosts:
        - dev.xxxxxxx.de
    
      rules:
      - host: dev.xxxxxxx.de
        http:
          paths:
          - path: /iot-app
            pathType: ImplementationSpecific
            backend:
              service:
                name: iot-app
                port: 
                  number: 80
          - path: /graf
            pathType: ImplementationSpecific
            backend:
              service:
                name: grafana
                port: 
                  number: 3000
    

    Con esta configuración, la ruta dev.xxxxxxx.de/iot-app se enrutaría a tu aplicación web .net Blazor, y dev.xxxxxxx.de/graf se enrutaría a Grafana.

    ¡Espero que esto ayuda! Avísame si tienes alguna otra pregunta.

Comments are closed.