Traefik возвращает 404 для подкаталога

У меня есть простая конфигурация ingres:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app-ingress
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
    traefik.ingress.kubernetes.io/router.tls: "true"
    traefik.ingress.kubernetes.io/router.middlewares: default-compress@kubernetescrd

spec:
  ingressClassName: traefik
  rules:
  - host: my-app.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-app-public-service
            port:
              number: 80

      - path: /app
        pathType: Prefix
        backend:
          service:
            name: my-app-client-service
            port:
              number: 80

  - host: api.my-app.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-app-server-service
            port:
              number: 80
  tls:
  - hosts:
    - my-app.com
    - api.my-app.com
    secretName: my-app-cert

По какой-то причине api.my-app.com и my-app.com работают нормально, но my-app.com/app возвращает 404.

Сам сервис работает нормально, и доступ к нему можно получить через curl по IP-адресу службы k8s.

Раньше я использовал nginx, эта конфигурация работала абсолютно нормально.

Пробовали my-app.com/app/?

Lukman 29.08.2024 05:21

@Лукман, лол, это сработало. Благодарить. Это мой первый раз с Traefik и двухдневное изучение k8s :D

Andrew 29.08.2024 07:06
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
0
2
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для большей видимости сообщества опубликуйте комментарий выше в качестве ответа.

Как предложил @Lukman, чтобы избежать ошибки 404, убедитесь, что путь хоста — my-app.com/app/.

PathPrefix вместе с replacepath выберет службу в соответствии с в PathPrefix и будет обслуживать услугу с / вместо дает вам 404-е.

Дополнительную информацию можно найти в аналогичном выпуске на странице сообщества Reddit.

Другие вопросы по теме