Kubernetes Ingress describe is not showing hostname

10/8/2019

I have configured 2 nodes Kubernetes cluster in AWS using EC2 (Not using EKS). I have configured an Ingress controller using Traefik version 1.7. I have tried setting up rules in the ingress controller using the host. But when I do describe on the Ingress, my host is set to wildcard always.

Below is the Ingress YAML

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-test
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: www.random.com
  - http:
      paths:
      - backend:
          serviceName: secondapp
          servicePort: 80
        path: /

Here www.random.com is a junk hostname.

Below is the describe command out

Name:             ingress-test
Namespace:        default
Address:
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host  Path  Backends
  ----  ----  --------
  *
        /   secondapp:80 (192.168.1.132:80)
Annotations:
  kubernetes.io/ingress.class:  traefik

I am able to hit the webpage for this app from the EC2's external IP, but the Ingress controller is not doing any filtering based on the host. So hitting this page using curl by specifying the host in the header has no effect, ie: curl -H "Host: www.random.com" http://<external_ip>. Also, I am not able to access the Traefik GUI from the external IP. I am guessing this is because of the wildcarded host, as Ingress controller routes request bases on the hostnames. I searched through the network but could find anything around this. Would appreciate any help.

-- rj99999
kubernetes
kubernetes-ingress
traefik
traefik-ingress

1 Answer

10/9/2019

Your ingress seems to be formatted incorrectly: you have an array under rules; however, your host needs to be part of the same object as your http:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-test
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: www.random.com
    # Note I removed the dash before http
    http:
      paths:
      - backend:
          serviceName: secondapp
          servicePort: 80
        path: /

This is untested but should resolve the problem

-- Spazzy757
Source: StackOverflow