Kubernetes Ingress描述未显示主机名

时间:2019-10-08 18:10:14

标签: kubernetes traefik kubernetes-ingress traefik-ingress

我已经使用EC2(未使用EKS)在AWS中配置了2个节点Kubernetes集群。我已经使用Traefik 1.7版配置了Ingress控制器。我尝试使用主机在入口控制器中设置规则。但是当我在Ingress上进行描述时,我的主机始终设置为通配符。

下面是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: /

www.random.com是一个垃圾主机名。

下面是describe命令

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

我可以从EC2的外部IP上访问此应用程序的网页,但是Ingress控制器未根据主机进行任何过滤。因此,通过在标题中指定主机使用curl来访问此页面无效,即:curl -H "Host: www.random.com" http://<external_ip>。另外,我无法从外部IP访问Traefik GUI。我猜这是由于通配符的主机,因为Ingress控制器基于主机名路由请求。我通过网络搜索,但是在此附近却找不到任何东西。不胜感激。

1 个答案:

答案 0 :(得分:2)

您的入口似乎格式错误,您在规则下拥有一个数组,但是您的主机必须与http:是同一对象的一部分。

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

未测试,但这应该可以解决问题