【发布时间】:2020-02-06 01:36:05
【问题描述】:
我已经使用 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 是一个垃圾主机名。
下面是描述命令
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。我猜这是因为通配符主机,因为入口控制器路由请求基于主机名。我通过网络搜索,但可以找到任何关于此的内容。将不胜感激。
【问题讨论】:
-
这真的是
describe的完整输出吗?当然,一个问题是- http: ...,你不应该在那里拥有-。现在你有两个不同的规则,一个只设置了host,一个只设置了http。您可能想要一个同时设置http和host字段的规则。 -
感谢您的指出,这很有效。是的,这就是 describe 命令的完整输出。
标签: kubernetes traefik kubernetes-ingress traefik-ingress