Нужен ли мне сетевой плагин, например Calico, Flannel или Weave?
Независимо от того, какой сетевой плагин вам нужен, не все плагины поддерживают объект NetworkPolicy
API. В соответствии с пошаговым руководством по объявлению сетевой политики, следующее (вероятно, неполный) список плагинов, которые действительно поддерживают NetworkPolicy
:
Без подключаемого модуля, поддерживающего NetworkPolicy
, создание ресурса не будет иметь никакого эффекта.
Какой мне выбрать?
Что касается того, какой из них вы должны выбрать, stackoverflow - не место для того, чтобы просить такого совета. Что я могу порекомендовать, так это прочитать обзор / документацию по функциям для различных доступных опций. Возможно, попробуйте один или два разных плагина в локальном кластере разработки, чтобы понять, насколько сложно или легко их установить, поддерживать и обновлять.
Как разрешить весь сетевой трафик, но только в пределах определенного пространства имен?
Учитывая ваш пример настройки, я думаю, что следующие NetworkPolicy
ресурсы могут удовлетворить ваши потребности:
Для модулей в namespace-a
разрешить вход только из namspace-a
модулей, запрещая вход из любого другого источника. Выход неограничен:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: namespace-a
spec:
policyTypes:
- Ingress
podSelector: {}
ingress:
- from:
- namespaceSelector:
matchLabels:
name: namespace-a
Для модулей в namespace-b
разрешите вход только из namspace-b
модулей, запрещая вход из любого другого источника. Выход неограничен:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: namespace-b
spec:
policyTypes:
- Ingress
podSelector: {}
ingress:
- from:
- namespaceSelector:
matchLabels:
name: namespace-b
Обратите внимание, что это предполагает, что вы установили метки name: namespace-a
и name: namespace-b
в своих пространствах имен, примерно так:
apiVersion: v1
kind: Namespace
metadata:
name: namespace-a
labels:
name: namespace-a
other: labelname
Я указываю на это только для того, чтобы не запутать вас тем фактом, что метки, которые я показал выше, совпадают с вашими гипотетическими именами пространств имен. Метки могут быть произвольными и потенциально включать несколько пространств имен - например, у вас могут быть namespace-a
и namespace-c
оба с меткой other: labelname
, которая позволит вам выбрать несколько пространств имен, используя один namespaceSelector
в вашем NetworkPolicy
ресурсе.
person
Wayne Warren
schedule
21.02.2018