我需要在kubernetes上的traefik ingress中设置自定义错误,这样当没有 endpoints 或状态为“404”或“[500-600]”时,它会重定向到另一个错误服务或另一个自定义错误消息我使用了注释,就像它在入口文件中的文档一样(注意:这是一个将注释作为yaml传递给values.yaml文件的helm模板输出)
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: "map[/:map[backend:hello-world status:[502 503]]]"
spec:
rules:
- host: frontend.domain.com
http:
paths:
- backend:
serviceName: frontend
servicePort: 3000
path: /
3 回答
ldez的答案是正确的,但有几点需要注意:
首先,这些注释仅适用于traefik> = 1.6.x(早期版本可能支持错误页面,但不适用于kubernetes后端)
其次,通过kubernetes配置traefik后端 must . 您无法在配置文件中创建后端并将其与kubernetes一起使用,至少在traefik 1.6.x中不能使用
这是完整的事情的样子 .
foo
只是一个名字,如另一个答案中所解释的那样,可以是任何名称:如果您使用此配置,并且您的应用程序发送了404,那么
https://my-awesome-errors.mydomain.test/404.html
将显示为错误页面 .正确的语法是:
https://docs.traefik.io/v1.6/configuration/backends/kubernetes/#general-annotations
请注意,目前,Helm Charts不支持此功能 .
Ingress不支持你们在那里使用的注释!仅使用Service支持注释,Ingress使用主机部分 .