Kubernetes: сетевая политика - запретить все с разрешить все - PullRequest
0 голосов
/ 19 мая 2018

У меня есть политика запрета всех по умолчанию для всех модулей во всех пространствах имен.Что, если есть разрешить все, что добавлено в модуль в определенном пространстве имен.Что будет иметь приоритет?Есть ли какая-то логика и / или логика при комбинировании нескольких политик?

Спасибо

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

Поскольку мы не можем указывать приоритеты в сетевой политике, лучший способ решить вашу проблему - объединить две политики в одну политику, чтобы избежать противоречивых правил.

0 голосов
/ 09 апреля 2019

Соединения из белого списка сетевых политик, поэтому существует неявное ИЛИ - если соединение разрешено хотя бы одной сетевой политикой, то оно будет разрешено.

Более подробное объяснение (любезно thisguide ):

Каждая сетевая политика имеет поле podSelector, в котором выбирается группа (ноль или более) модулей.Когда модуль выбирается модулем сети, говорят, что к нему применяется политика сети.

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

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

Это поведение относится к понятию «изоляция»: модули «изолированы», если к ним применяется хотя бы одна сетевая политика;если политики не применяются, они «не изолированы».Сетевые политики не применяются на неизолированных модулях.Хотя это несколько нелогично, такое поведение облегчает запуск и запуск кластера - пользователь, который не понимает сетевые политики, может запускать свои приложения без необходимости их создания.

0 голосов
/ 20 мая 2018

Не совсем ясно из того, что я нашел, но документация намекает на любое разрешение превосходство над отклонение :

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

По сути, применение NetworkPolicy к любому модулю включает в себя неявную политику «запретить что-либо еще».Создав политику «запретить по умолчанию», вы можете изолировать все модули, так как они не предназначены для какой-либо политики без нее (нет политики = нет изоляции).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...