У меня есть простая конфигурация 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, эта конфигурация работала абсолютно нормально.
@Лукман, лол, это сработало. Благодарить. Это мой первый раз с Traefik и двухдневное изучение k8s :D
Для большей видимости сообщества опубликуйте комментарий выше в качестве ответа.
Как предложил @Lukman, чтобы избежать ошибки 404, убедитесь, что путь хоста — my-app.com/app/.
PathPrefix вместе с replacepath выберет службу в соответствии с в PathPrefix и будет обслуживать услугу с
/
вместо дает вам 404-е.
Дополнительную информацию можно найти в аналогичном выпуске на странице сообщества Reddit.
Пробовали
my-app.com/app/
?