Ответ от ldez правильный, но есть несколько предостережений:
- Во-первых, эти аннотации работают только для traefik> = 1.6.x (более ранние версии могут поддерживать страницы с ошибками, но недля бекенда kubernetes)
- Во-вторых, бэкэнд traefik должен быть настроен через kubernetes.Вы не можете создать бэкэнд в конфигурационном файле и использовать его с kubernetes, по крайней мере, в traefik 1.6.x
Вот как выглядит все это.foo
- это просто имя, как объяснено в другом ответе, и может быть любым:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: frontend
namespace: "default"
annotations:
external-dns.alpha.kubernetes.io/target: "domain.com"
kubernetes.io/ingress.class: "traefik"
traefik.ingress.kubernetes.io/error-pages: |-
foo:
status:
- "404"
- "500"
# See below on where "error-pages" comes from
backend: error-pages
query: "/{{status}}.html"
spec:
rules:
# This creates an ingress on an non-existing host name,
# which binds to a service. As part of this a traefik
# backend "error-pages" will be created, which is the one
# we use above
- host: error-pages
http:
paths:
- backend:
serviceName: error-pages-service
servicePort: https
- host: frontend.domain.com
http:
# The configuration for your "real" Ingress goes here
# This is the service to back the ingress defined above
# Note that you can use anything for this, including an internal app
# Also: If you use https, the cert on the other side has to be valid
---
kind: Service
apiVersion: v1
metadata:
name: error-pages-service
namespace: default
spec:
ports:
- name: https
port: 443
type: ExternalName
externalName: my-awesome-errors.mydomain.test
Если вы используете эту конфигурацию и ваше приложение отправляет 404, тогда https://my-awesome-errors.mydomain.test/404.html
будет отображаться какстраница ошибки.