Описание Kubernetes Ingress не показывает имя хоста - PullRequest
0 голосов
/ 08 октября 2019

Я настроил кластер Kubernetes с 2 узлами в AWS, используя EC2 (не используя EKS). Я настроил контроллер Ingress, используя Traefik версии 1.7. Я попытался настроить правила во входном контроллере, используя хост. Но когда я делаю описание на 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

Я могу открыть веб-страницу для этого приложения с внешнего IP-адреса EC2, но контроллер Ingress не выполняет никакой фильтрации на основе хоста. Поэтому попадание на эту страницу с помощью curl путем указания хоста в заголовке не имеет никакого эффекта, например: curl -H "Host: www.random.com" http://<external_ip>. Кроме того, я не могу получить доступ к графическому интерфейсу Traefik с внешнего IP-адреса. Я предполагаю, что это из-за хоста с подстановочными символами, поскольку контроллер Ingress маршрутизирует базы запросов по именам хостов. Я искал через сеть, но мог найти что-нибудь вокруг этого. Буду признателен за любую помощь.

1 Ответ

2 голосов
/ 09 октября 2019

Ваш вход, кажется, отформатирован неправильно, у вас есть массив по правилам, но ваш хост должен быть частью того же объекта, что и ваш 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: /

без проверки, но это должно решить проблему

...