Регулировать взаимодействие модулей по сети можно через создание политики сети NetworkPolicy. Но только если плагин сетевого взаимодействия поддерживает.
NetworkPolicy. — применяется к модулям по селектору меток, и определяют какие источники могут получать доступ к модулям, которые попали под выбор меток. Или куда этим модулям можно, а куда нельзя подключаться.
Запретим модулям взаимодействовать между собой
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny spec: podSelector:
пустой селектор модулей соответствует всем модулям
Когда создадим в определенном namespace, то внутри этого namespace модули перестанут взаимодействовать
Как разрешить подключения к модулю, только некоторым модулям
Например, разрешим подключения к модулю с базой данных, только веб серверу
Разрешаем модулям где app=webserver подключаться к модулям где app=database только к порту 5432
Эта политика сработает, даже если подключение будет через службу
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: postgres-netpolicy spec: podSelector: matchLabels: app: database ingress: - from: - podSelector: matchLabels: app: webserver ports: - port: 5432
Ограничение для всего namespace:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: shoppingcart-netpolicy spec: podSelector: matchLabels: app: shopping-cart ingress: - from: - namespaceSelector: matchLabels: tenant: manning ports: - port: 80
CIDR
Используется для того чтобы обеспечить фильтрацию не по меткам, а по маске подсети
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: ipblock-netpolicy spec: podSelector: matchLabels: app: shopping-cart ingress: - from: - ipBlock: cidr: 192.168.1.0/24
Лимитирование исходящего трафика
Разрешим app=webserver подключаться только к app=database
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: egress-net-policy spec: podSelector: matchLabels: app: webserver egress: - to: - podSelector: matchLabels: app: database ports: - port: 5432
0 Comment