Kubernetes изоляция сети модуля

Регулировать взаимодействие модулей по сети можно через создание политики сети 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

 

 

 

K8S

Related Articles

0 Comment

Leave a Comment

Ваш адрес email не будет опубликован.