我正在使用kubernetes ingress-nginx,这是我的Ingress规范。 http://example.com可以正常工作。但是当我转到https://example.com时,它仍然有效,但是指向带有Fake Ingress Controller证书的default-backend。如何禁用此行为?由于未配置TLS,因此我想完全禁用此特定入口上的https监听。
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: http-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: example.com
http:
paths:
- backend:
serviceName: my-deployment
servicePort: 80
我已经尝试过此nginx.ingress.kubernetes.io/ssl-redirect: "false"
注释。但这没有效果。
答案 0 :(得分:3)
我不知道可以轻松禁用TLS的ingress-nginx configmap值或ingress annotation。
您可以从入口控制器服务定义中删除端口443。
从https
数组中删除spec.ports
条目
apiVersion: v1
kind: Service
metadata:
name: mingress-nginx-ingress-controller
spec:
ports:
- name: https
nodePort: NNNNN
port: 443
protocol: TCP
targetPort: https
nginx仍将在TLS端口上侦听,但是群集之外的任何客户端都无法连接到它。
答案 1 :(得分:2)
重定向不涉及您的问题。
ingress-controller正在监听80和443这两个端口。当您配置仅具有80端口的入口时,如果到达443端口,则会重定向到默认后端,这是预期的行为。
一个解决方案是添加另一个只能在80端口监听的Nginx控制器。然后,您可以使用kubernetes.io/ingress.class: myingress
配置入口。
创建新的nginx控制器时,请更改守护程序的命令--ingress-class=myingress
。然后,它将仅处理用此类注释的入口。
如果使用头盔来部署它,只需覆盖controller.ingressClass
值。