Трафик Ингресс не открывает порт - PullRequest
0 голосов
/ 16 мая 2019

Я настраиваю среду разработки для приложения, которое мы продаем.

Поскольку мы используем эту среду для активной разработки, необходимо создать ее более или менее аналогично данной среде у клиента.Заказчик использует Kubernetes и traefik.То же самое мы делаем в Dev.

К счастью, мы получили оригинальные файлы YAML для пользовательской среды, поэтому мы могли просто использовать их с небольшими изменениями.

После настройки Ingress иTraefik Ingress Controller, я предполагаю, что kubernetes откроет данный порт в Системе, чтобы приложение могло быть доступно извне.Но это не так, ничего не слушается на портах 443 и 80.

Я дважды проверил конфигурацию (так как у нас есть доступ к клиентскому кластеру, я могу сравнить их env и env) - но все выглядитточно так же, несмотря на IP-адреса и имя пространства имен.

В логах модуля контроллера traefik я не вижу здесь ничего плохого.Только я вижу некоторые ошибки сертификата TLS.Иногда в моих тестах я видел, что при открытии порта 80 было отказано в разрешении на «привязку», но в настоящее время это не так.

Я (и клиент) определил файл toml traefik как карту конфигурации и добавил его как том на /opt / conf / traefik.toml для стручка.Этот путь указан как параметр для модуля и в соответствии с журналом использует файл.

Сервер, на котором работает kubernetes, - это компьютер Ubuntu Server 18.04 Hyper-V на Windows Server 2016хост.Kubernetes был развернут с использованием apt-get (not snap), а кластер был настроен с помощью kubeadm.

Вот конфигурация кластера:

root@srv-app-003:~# kubeadm config view
apiServer:
  extraArgs:
    authorization-mode: Node,RBAC
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta1
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: ""
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.14.1
networking:
  dnsDomain: cluster.local
  podSubnet: 192.168.0.0/16
  serviceSubnet: 10.96.0.0/12
scheduler: {}

Вот конфигурация узла:

root@srv-app-003:~# kubectl get nodes -o wide
NAME          STATUS   ROLES    AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
srv-app-003   Ready    master   12d   v1.14.1   192.168.6.203   <none>        Ubuntu 18.04.2 LTS   4.15.0-48-generic   docker://18.9.2

В развертывании есть 4 модуля, которые все работают без проблем (также я могу локально свернуть сайт прямо из модулей).

Я поместил некоторые важные файлы yaml здесь: https://gitlab.com/group15/my-awesome-project

Скажите, если вам нужно больше (учетные записи служб, роли (связывание) и т. Д.) *

Основная цель - запустить среду разработки и получить доступ к ней через HTTP (s) внутриСеть 192.168.6.0.Я еще не запустил его.Пожалуйста, помогите мне, я делаю что-то не так?

1 Ответ

0 голосов
/ 16 мая 2019

Мне кажется, проблема в ваших определениях портов. В предоставляемом вами развертывании определены только 8080 и 9443. Кроме того, они не отображаются на порт хоста.

Я бы предложил вам развернуть Traefik с помощью рулевой диаграммы . Это отличный способ обеспечить надежное и простое развертывание сложных приложений kubernetes.

Если вы посмотрите на эту диаграмму, вы увидите здесь , что порты определены как "порт" И "hostPort". Вот пример того, что генерирует helm для контроллера nginx (это действительно близко к тому, что нужно traefik):

      name: ingress-nginx-controller
      ports:
      - containerPort: 80
        hostPort: 80
        name: http
        protocol: TCP
      - containerPort: 443
        hostPort: 443
        name: https
        protocol: TCP
...