Есть ли способ запретить взаимодействие модулей между пространствами имен в Kubernetes без использования сетевой политики

Я настраиваю гибридный кластер (master-centos и 2 рабочих узла-окна 2019) с контейнером в качестве среды выполнения. Я не могу использовать какие-либо CNI, такие как ситцевая и плетеная, поскольку им нужен докер в качестве среды выполнения. Я могу использовать Flannel, но он плохо поддерживает сетевые политики. Есть ли способ предотвратить взаимодействие модулей между пространствами имен в Kubernetes БЕЗ использования сетевой политики?


person uttara bhosale    schedule 06.04.2021    source источник


Ответы (2)


Есть ли способ предотвратить взаимодействие модулей между пространствами имен в Kubernetes БЕЗ использования сетевой политики?

Сетевые политики были созданы именно для этой цели, и согласно документам вам нужен CNI, который их поддерживает. В противном случае они будут проигнорированы.

Сетевые политики реализуются сетевым плагином. Чтобы использовать сетевые политики, вы должны использовать сетевое решение, которое поддерживает NetworkPolicy. Создание ресурса NetworkPolicy без контроллера, который его реализует, не будет иметь никакого эффекта.

Если ваш единственный вариант - использовать фланель для сети, вы можете установить сетевую политику Calico для защиты связи кластера. Итак, в основном вы устанавливаете ситцево для политики и фланель для сети, обычно известной как Canal. Дополнительную информацию можно найти в документации по calico.

Вот также хороший ответ, как настроить calico с containerd, который может оказаться полезным в вашем случае.

person acid_fuji    schedule 06.04.2021

Поскольку Flannel является сетевым решением только уровня L2, поэтому нет поддержки NetworkPolicy (L3 / L4), вы можете реализовать безопасность на уровне обслуживания (любая форма авторизации, такая как пользователь / пароль, сертификат, saml, oauth и т. Д.).

Но без NetworkPolicy можно потерять брандмауэр, как безопасность, что может быть не тем, что вам нужно.

person bazeusz    schedule 08.04.2021
comment
привет @bazeusz, не могли бы вы подробнее рассказать об этих вариантах? Предположим, я хочу, чтобы модули пространства имен abc разговаривали с модулем sql того же пространства имен. Я, конечно, не хочу, чтобы модули xyz namepsace общались с модулем sql пространства имен abc. - person uttara bhosale; 12.04.2021
comment
@uttarabhosale после того, как еще одно продуманное правило маршрутизации не является вариантом, поскольку распределение адресов является динамическим, приведет к написанию самого плагина, но второй по-прежнему действителен, его можно выполнить с помощью любой формы аутентификации в службах (пользователь / пароль, сертификаты и т. д.) но без сетевых политик вы теряете более низкий уровень безопасности, что нехорошо. Отредактирую свой ответ, чтобы было понятнее. Ответ Томаса определенно правильный путь - person bazeusz; 14.04.2021