Как разрешить внешний трафик и запретить связь между модулями, используя сетевую политику? - PullRequest
1 голос
/ 05 ноября 2019

Я настраиваю свое пространство имен по умолчанию в моем кластере kubernetes, чтобы разрешить входящий трафик от внешних узлов / хостов, но запретить любую возможную связь между модулями. У меня есть 2 модуля nginx, которые я хочу полностью изолировать внутри кластера. Оба модуля имеют службу типа nodePort, и они доступны извне.

Сначала я применяю следующую политику запрета сети по умолчанию:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny
spec:
  podSelector: {}
  policyTypes:
  - Ingress

Затем я пытаюсь разрешить внешний трафик. со следующей сетевой политикой:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-external
spec:
  podSelector: {}
  ingress:
    - from:
        - ipBlock:
            cidr: 192.168.0.0/16

Но, к сожалению, я не могу получить доступ к сервису ни снаружи, ни внутри моего кластера.

Запуск примера в: - macOS High Sierra v10.13.6- minikube v1.5.2 -> с сетевым плагином = cilium - kubectl v1.16.2

Как я мог решить эту проблему?

1 Ответ

1 голос
/ 05 ноября 2019

Если вы хотите разрешить любой входящий трафик для любого модуля, кроме трафика, исходящего из вашего кластера, вы можете использовать нотацию «кроме» в правиле, которое разрешает трафик со всех IP-адресов. Внизу замените 172.17.1.0/24 на кодер, содержащий ваши стручки:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all-internal
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  ingress:
  - from:
    - ipBlock:
        cidr: 0.0.0.0/0
        except:
        - 172.17.1.0/24
...