Сетевая политика среди модулей

Мой сценарий похож на изображение ниже:

введите описание изображения здесь

Через пару дней, пытаясь найти способ заблокировать соединения между модулями на основе правила, я обнаружил Политика сети. Но у меня это не работает ни в Google Cloud Platform, ни в Local Kubernetes!

Мой сценарий довольно прост, мне нужен способ блокировать соединения между модулями на основе правила (например, пространства имен, метки рабочей нагрузки и т. Д.). На первый взгляд, я подумал, что это подойдет мне, но я не знаю, почему он не работает в Google Cloud, даже когда я создаю кластер с нуля с включенной опцией Network policy.


person natanaelfonseca    schedule 20.04.2021    source источник


Ответы (3)


Сетевая политика позволит вам делать именно то, что вы описали на картинке. Вы можете разрешить или заблокировать на основе меток или пространств имен.

Вам трудно помочь, если вы не объясните, что именно вы сделали, а что не работает. Обновите свой вопрос фактической сетевой политикой YAML, которую вы создали, и в идеале также отправьте kubectl get pod --show-labels из пространства имен с модулями.

Что вы подразумеваете под «локальными кубернетами», также неясно, но это во многом зависит от используемого вами сетевого CNI, поскольку он должен поддерживать сетевые политики. Например Calico или Cilium поддерживают это. Minikube в настройках по умолчанию, поэтому вам следует следовать, например, этому руководству: https://medium.com/@atsvetkov906090/enable-network-policy-on-minikube-f7e250f09a14

person Ondrej Bardon    schedule 20.04.2021

Вы можете использовать Istio Sidecar, чтобы решить эту проблему: https://istio.io/latest/docs/reference/config/networking/sidecar/

Другое решение Istio - использование AuthorizationPolicy: https://istio.io/latest/docs/reference/config/security/authorization-policy/

person Peter Claes    schedule 20.04.2021

Просто чтобы обновить, потому что я был вовлечен в проблему этого сообщения. Проблема была в стручках, в которые был введен istio. В этом случае все модули в пространстве имен, потому что для него istio-injection = enabled. Правило NetworkPolicy не вступало в силу, когда выбор был сделан селектором совпадений, выходом или входом, а задействованные модули уже работали до создания NetworkPolicy. Убив модуль и запустив его, модули, у которых была метка совпадала, получили доступ в обычном режиме. Я не знаю, есть ли способ сказать, чтобы обновить коляску внутри модулей, не перезагружая ее. Поды, запущенные после создания NetworkPolicy, не выявили проблемы этого сообщения.

person Erick André    schedule 23.04.2021