свой выбор на haproxy от jcmoraisjr, подняли две реплики на выделенных нодах на hostNetwork (ноды изолировали от запуска других приложений через nodSelector и tain\toleration). Перед кластером подняли haproxy+keepalived с апстримом на ингресс ноды (80, 443). Вроде все ок, но в такой связке не получается использовать networkpolicy - рубит всякое обращение через ингрес, не помогает ни podSelector, ни namespace. чядн?
без твоих манифестов сложно что-то сказать
на калико встречал как раз сочетание про networkpolicy и hostnetwork - короче полиси не работают в таком случае и надо через HostEndpoints действовать
У меня банально стоит (контроллер тоже с hostNetwork: true) spec: ingress: - from: - namespaceSelector: matchLabels: name: ingress-nginx ... Работает
да, как раз калико... попадалось упоминание что в этом может быть проблема, но решение не встречал - спасибо, почитаю
https://pastebin.com/dMuQDCTq
https://github.com/projectcalico/calico/issues/4493 свежее
подскажите, какой cni используете?
спасибо - пошел читать)
У меня есть kube-router и cilium в кластерах. Такое правило работает на обоих вариантах cni
- ports: - port: 8080 Вы же разрешили только 8080 порт. сервисы/порты в этом namespace ожидают на этом порту подключений?
Поправка, это именно для подов List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list. Поды в namespace test точно слушают 8080 порт?
apiVersion: apps/v1 kind: Deployment ... spec: containers: - image: inanimate/echo-server imagePullPolicy: IfNotPresent name: echo ports: - containerPort: 8080 protocol: TCP ... --- apiVersion: v1 kind: Service ... spec: clusterIP: 172.30.36.210 ports: - name: http port: 8080 protocol: TCP targetPort: 8080 selector: app: echo sessionAffinity: None type: ClusterIP
если запускать поды ingress controller'а без hostNetwork и создать сервис с nodePort (соответственный апстрим на балансере на ингресс ноды и порт), то селекторы в networkpolicy работаю норм. Насколько верно использовать nodePort в такой конфигурации?
если под в hostNetwork - у него адрес узла. и надо указывать ipBlock в манифесте networkpolicy nodePort - это NAT, прием трафика на 30000+ порты, значит нужен внешний балансировщик, отказоустойчивый. думай сам. насколько тебе критично указать ipBlock с адресом узла, на который контроллер прибит
внешний балансировщик с keepalived имеется в любом случае. в случае hostNetwork для ipBlock работает адрес интерфейса tunl0, а не eth0. вопрос какое из решений надежнее/правильнее (работаю оба)?
Обсуждают сегодня