2017-02-14 9 views
3

Есть ли возможность фильтровать оба пространства имен и ярлыки pod в то же время?Сетевая политика Kubernetes для фильтрации как на пространствах имен, так и на этикетках pod

Пример присутствует в документации на https://kubernetes.io/docs/user-guide/networkpolicies/#the-networkpolicy-resource

- from: 
- namespaceSelector: 
    matchLabels: 
    project: myproject 
- podSelector: 
    matchLabels: 
    role: frontend 

означает, что связь допускается для стручков с role=frontendили от namespace myproject.

Есть ли способ изменить это «или» на «и»?

ответ

1

Я думаю, вы неправильно поняли селекторов. В API Docs для NetworkPolicyPeer вы найдете эти описания:

namespaceSelector

Выбирает пространств имен с использованием кластера областью видимости-метки. Это соответствует всем контейнерам во всех пространствах имен, выбранных этим селектором меток. Это поле следует за семантикой селектора стандартных семантик. Если этот параметр опущен, этот селектор не выбирает пространства имен. Если он присутствует, но пустой, этот селектор выбирает все пространства имен.

podSelector

Это селектор, который выбирает этикетки Бобы в этом пространстве имен. Это поле следует за семантикой селектора стандартных семантик. Если это не предусмотрено, этот селектор не выбирает стручки. Если данный, но пустой, этот селектор выбирает все контейнеры в этом пространстве имен.

Поэтому комбинации из обоих селекторов на самом деле не реализуют логическую операцию, и они нацелены на разные области (текущее пространство имен по сравнению с другими пространствами имен).

Таким образом, единственное решение для вашей проблемы будет маркировать каждый стручок также с меткой связанных имен, которые вы можете выбрать в namespaceSelector

+0

Я не понимаю, как это будет работать. Не возражаете ли вы снова объяснить это? – Rafaesp

+0

В ваших блоках понадобится метка с пространством имён - так, что 'podSelector' может соответствовать этой метке тоже – pagid

+0

Но вы никогда не сможете выбрать стручок из другого пространства имен, верно? – Rafaesp

1

В настоящее время, есть еще не способ выбрать определенный стручок из другого пространства имен. Для этого существует открытая проблема https://github.com/kubernetes/kubernetes/issues/50451

+0

Благодарим вас за сообщение о проблеме. –