OpenShift :: Как мы разрешаем трафик в модуль на пользовательском порту (не веб / не http) - PullRequest
0 голосов
/ 24 января 2019

Как нам разрешить трафик в pod через пользовательский порт (не веб / не http).

Например, рассмотрим порт 12121.

Я попытался выставить порт через маршрут,Но не удалось достать этот модуль из другого модуля в том же пространстве имен.

Поддерживается ли эта функция в OpenShift?

Если кто-то пробовал это раньше, пожалуйста, поделитесь, как вам это удалось.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

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

  • Если вам не важно, какой у вас номер порта, вы можетеиспользуйте сервис NodePort .NodePorts - это диапазон портов, определенных администратором кластера (по умолчанию 30000-32767), которые могут быть назначены службе и доступны на каждом узле в кластере, и он работает для трафика TCP и UDP.В этом примере указывается используемый NodePort, но если вы его не предоставите, сервисный контроллер назначит доступный.
apiVersion: v1
kind: Service
metadata:
  name: mysql
  labels:
    name: mysql
spec:
  type: NodePort
  ports:
    - port: 3306
      nodePort: 30306
      name: http
  selector:
    name: mysql

Документация OpenShift: https://docs.openshift.com/container-platform/3.11/dev_guide/expose_service/expose_internal_ip_nodeport.html

Есливам нужно указать конкретный порт, тогда вы можете:

  • Использовать сервис LoadBalancer , который позволит вам выставить порт на IP балансировщика нагрузки.Обратите внимание, что для этого требуется, чтобы кластер был настроен со списком IP-адресов, которые можно использовать (это конфигурация на главном компьютере), а IP-адреса маршрутизируются на узлы в кластере (это может быть достигнуто с помощью автоматизации OpenShift ipfailover).
apiVersion: v1
kind: Service
metadata:
  name: egress-2 
spec:
  ports:
  - name: db
    port: 3306 
  loadBalancerIP:
  type: LoadBalancer 
  selector:
    name: mysql 

Документация OpenShift: https://docs.openshift.com/container-platform/3.11/dev_guide/expose_service/expose_internal_ip_load_balancer.html

  • Менее идеально, вы можете использовать hostport и выставить порт непосредственно на хосте, на котором работает модуль.включен, но это работает, только если вы хотите направить трафик на хост без балансировки трафика.Этот метод идет вразрез с лучшими практиками, но может использоваться в качестве крайней меры.
apiVersion: v1
kind: Pod
metadata:
  name: mysql
spec:
  containers:
  - image: mysql
    name: mysql
    ports:
    - name: mysql
      containerPort: 3306
      hostPort: 3306
0 голосов
/ 24 января 2019

Вы можете настроить существующий router с помощью портов, которые вы хотите добавить, или добавить router с настроенными портами. Подробнее см. Настройка сервисных портов маршрутизатора .

  • Настройка роутера
    oc adm router --replicas=0 --ports='12121:12121,443:443' 
    oc set env dc/router ROUTER_SERVICE_HTTP_PORT=12121  \
                         ROUTER_SERVICE_HTTPS_PORT=443
    oc scale dc/router --replicas=1

    iptables -A INPUT -p tcp --dport 12121 -j ACCEPT
...