HAProxy с Kubernetes в настройке DR - PullRequest
0 голосов
/ 23 января 2019

У нас есть установка Kubernetes, размещенная в локальной сети, и мы пытаемся разрешить клиентам за пределами K8s подключаться к службам, размещенным в кластере K8s.

Для того, чтобы эта работа выполнялась с помощью HA Proxy (который работает за пределами K8s), у нас есть конфигурация бэкэнда HAProxy следующим образом -

   backend vault-backend
   ...
   ...
   server k8s-worker-1 worker1:32200 check
   server k8s-worker-2 worker2:32200 check
   server k8s-worker-3 worker3:32200 check

Теперь это решение работает, но имена рабочих и соответствующие порты узла жестко запрограммированы в этой конфигурации, что, очевидно, неудобно, так как и когда больше рабочихдобавлены (или удалены / изменены).

Мы натолкнулись на HAProxy Ingress Controller (https://www.haproxy.com/blog/haproxy_ingress_controller_for_kubernetes/), который звучит многообещающе, но (мы чувствуем) эффективно добавляет еще один слой HAProxy к миксу .. и таким образом, добавляет еще одну точку отказа.

Есть ли лучшее решение для реализации этого требования?

1 Ответ

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

Теперь это решение работает, но имена рабочих и соответствующие порты узлов жестко запрограммированы в этой конфигурации, что, очевидно, неудобно, когда добавляются (или удаляются / изменяются) дополнительные рабочие места.

Вы можете явно настроить NodePort для своего Kubernetes Сервиса , чтобы он не выбирал случайный порт и вы всегда использовали один и тот же порт на внешнем HAProxy:

apiVersion: v1
kind: Service
metadata:
  name: <my-nodeport-service>
  labels:
    <my-label-key>: <my-label-value>
spec:
  selector:
    <my-selector-key>: <my-selector-value>
  type: NodePort
  ports:
   - port: <service-port>
     nodePort: 32200

Мы столкнулись с HAProxy Ingress Controller (https://www.haproxy.com/blog/haproxy_ingress_controller_for_kubernetes/), который звучит многообещающе, но (мы чувствуем) эффективно добавляет еще один слой HAProxy к миксу ... и, таким образом, добавляет еще одну точку отказа.

Вы можете запустить вход HAProxy внутри кластера и удалить HAproxy вне кластера, но это действительно зависит от того, какой тип сервиса вы используете. Например, Kubernetes Ingress - это ресурс уровня 7. Здесь DR будет обрабатываться при наличии нескольких копий вашего входного контроллера HAProxy.

...