我希望我的入口nginx在每个请求上都返回200
。 如果我可以访问nginx配置,我会做这样的事情:
location = /health {
return 200;
}
但是我不确定如何在入口配置YAML中执行此操作
考虑到 Kubernetes 的ingress
对象在使用 Nginx 控制器时,主要用于路由而不是单独处理请求。实际为它们提供服务的是部署在集群中的后端,这部分是返回状态代码的内容,而不是ingress
。
控制器具有类似于您想要的功能,但仅用于错误。这只会使ingress
添加一些标头,以便后端可以解释它们并返回一些非标准代码响应。
如果您修改此后端,则可能使它们200
响应。但是,我发现破坏性较小,更直接的是">捕获"ingress
中的所有传入请求,以将它们重定向到始终响应200
的自定义 Nginx 后端(您已经拥有 Nginx 配置(:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/use-regex: "true"
labels:
app: all-good
name: happy-ingress
spec:
rules:
- host: "*"
http:
paths:
- path: /(.*)
backend:
serviceName: ok-status-test
servicePort: 80
使用这种方法,您甚至可以向其添加非 200 的后端,并使用正则表达式匹配它们,因此ingress
可以完全重用。