Why ingress rules are not followed? default backend is reached instead
I finally figured out what I was missing. I added kubernetes.io/ingress.class: haproxy
annotation and problem solved:
apiVersion: networking.k8s.io/v1beta1kind: Ingress metadata: name: ravendb namespace: default labels: app: ravendb annotations: ingress.kubernetes.io/ssl-passthrough: "true" kubernetes.io/ingress.class: haproxyspec: rules: - host: a.raven.aedas-prev.inercya.com http: paths: - backend: serviceName: ravendb-0 servicePort: 443 path: / - host: tcp-a.raven.aedas-prev.inercya.com http: paths: - backend: serviceName: ravendb-0 servicePort: 38888 path: / - host: b.raven.aedas-prev.inercya.com http: paths: - backend: serviceName: ravendb-1 servicePort: 443 path: / - host: tcp-b.raven.aedas-prev.inercya.com http: paths: - backend: serviceName: ravendb-1 servicePort: 38888 path: / - host: c.raven.aedas-prev.inercya.com http: paths: - backend: serviceName: ravendb-2 servicePort: 443 path: / - host: tcp-c.raven.aedas-prev.inercya.com http: paths: - backend: serviceName: ravendb-2 servicePort: 38888 path: /
Now HAproxy ingress works as expected, reverse proxying external traffic to internal services.