Открывайте другие порты, кроме HTTP и HTTPS, в Traefik Kubernetes Ingress

Я получил Traefik как Ingress в Kubernetes с такой конфигурацией: https://github.com/RedxLus/traefik-simple-kubernetes/tree/master/V1.7

И хорошо работает с HTTP и HTTPS, но я не знаю, как открыть другие порты для пересылки, например, Pod с Ingress с MySQL в порту 3306

Спасибо за каждый ответ!




Ответы (2)


Traefik не поддерживает его, если вы используете ресурс Ingress, и этот ресурс не поддерживает тип трафика L4, как указано в другом ответе.

Но если вы используете входной контроллер Nginx, есть обходной путь, используйте ConfigMap с параметрами входящего контроллера --tcp-services-configmap и --udp-services-configmap, как описано в здесь. Тогда ваша tcp-services ConfigMap будет выглядеть примерно так:

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
data:
  9000: "default/example-go:8080"

Преимущество этого заключается в наличии единой точки входа в кластер (это относится к любому входу, который будет использоваться для TCP / UDP), но недостатком являются накладные расходы на наличие дополнительного уровня по сравнению с простым наличием Kubernetes Служба (NodePort или LoadBalancer), которая уже прослушивает порты TCP / UDP.

person Rico    schedule 29.04.2020

Kubernetes Ingress API его не поддерживает. Но можно использовать Traefik в качестве TCP-прокси для желаемого варианта использования, но только если вы используете зашифрованные соединения TLS. В противном случае, на основе протокола уровня 4, невозможно различить разные имена хостов, и вам придется использовать одну точку входа для каждого маршрутизатора TCP. Проверьте эту проблему на GitHub.

person Arghya Sadhu    schedule 29.04.2020