Вход для Traefik не работает за балансировщиком нагрузки aws - PullRequest
0 голосов
/ 14 мая 2018

После создания набора демонов traefik я создал службу в качестве loadbalancer на порту 80, который является прокси-портом Traefik, и узел автоматически был зарегистрирован на нем.Если я нажимаю на elb, я получаю прокси 404, который в порядке, потому что ни одна служба еще не зарегистрирована

Затем я создал службу нодпорта для веб-интерфейса.целевой порт 8080 внутри модуля и 80 на кластере.Я могу свернуть traefik ui изнутри кластера, и он перезапускает traefik UI

Затем я создал вход, так что когда я нажимаю elb / ui, он попадает в бэкэнд-сервис веб-интерфейса traefik, и он не работает.У меня также есть правильные аннотации в моем входе, но elb не перенаправляет путь к пользовательскому интерфейсу traefik в серверной части, который работает правильно

Что я здесь делаю неправильно?При необходимости я могу опубликовать все свои файлы yml

UPD

Мои файлы yaml:

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: traefik
  labels:
    app: traefik
spec:
  template:
    metadata:
      labels:
        app: traefik
    spec:
      containers:
      - image: traefik
        name: traefik
        args:
        - --api
        - --kubernetes
        - --logLevel=INFO
        - --web
        ports:
        - containerPort: 8080
          name: traefikweb
        - containerPort: 80
          name: traefikproxy


apiVersion: v1
kind: Service
metadata:
  name: traefik-proxy
spec:
  selector:
    app: traefik
  ports:
  - port: 80
    targetPort: traefikproxy
  type: LoadBalancer


apiVersion: v1
kind: Service
metadata:
  name: traefik-web-ui
spec:
  selector:
    app: traefik
  ports:
  - name: http
    targetPort: 8080
    nodePort: 30001
    port: 80
  type: NodePort


apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: default
  name: traefik-ing
  annotations:
    kubernetes.io/ingress.class: traefik
    #traefik.ingress.kubernetes.io/rule-type: PathPrefixStrip:/ui
spec:
  rules:
  - http:
      paths:
      - path: /ui
        backend:
          serviceName: traefik-web-ui
          servicePort: 80

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Если вы находитесь в Private_Subnets, используйте

kind: Service
metadata:
  name: traefik-proxy
> annotations:
>     "service.beta.kubernetes.io/aws-load-balancer-internal": "0.0.0.0/0"
spec:
  selector:
    app: traefik
  ports:
  - port: 80
    targetPort: traefikproxy
  type: LoadBalancer``` 

0 голосов
/ 15 мая 2018

Затем я создал вход, чтобы при нажатии на elb / ui он попадал в бэкэнд-службу веб-интерфейса traefik, и это не помогло. "

Как это не получилось?Вы получили ошибку 404, ошибку 500 или что-то еще?

Кроме того, для услуги traefik-web-ui вам не нужно устанавливать type: NodePort, это должно быть type: ClusterIP.

Когда вы настраиваете бэкэнды для вашего Ingress , единственным требованием является доступность внутри кластера, поэтому типа ClusterIP будет более чем достаточно для этого.

Ваша служба должна быть такой:

apiVersion: v1
kind: Service
metadata:
  name: traefik-web-ui
spec:
  selector:
    app: traefik
  ports:
  - name: http
    targetPort: 8080
    port: 80

Опция PathPrefixStrip может быть полезна, так как без нее запрос будет перенаправлен в пользовательский интерфейс с префиксом /ui, который вам определенно не нужен.

Все остальные конфигурации выглядятхорошо.

...