сетевая политика kubernetes для отключения всех соединений inte rnet для указанного c пространства имен на AWS - EKS - PullRequest
0 голосов
/ 30 января 2020

Я хочу отказать контейнеру в доступе к публикации c inte rnet.

После долгих исследований я нашел этот пример: внешний выход DENY traffi c:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: foo-deny-external-egress
spec:
  podSelector:
    matchLabels:
      app: foo
  policyTypes:
  - Egress
  egress:
  - ports:
    - port: 53
      protocol: UDP
    - port: 53
      protocol: TCP
   to:
    - namespaceSelector: {}

Но это не работает. Действительно, я пробежал wget https://google.com и получил положительный ответ. Любой намек выполняется

1 Ответ

1 голос
/ 30 января 2020

Сетевая политика отлично работает на ситце. Сетевая политика не влияет на кластер с использованием плагина фланелевой сети .

Как уже упоминалось на этой ссылке Flannel ориентирован на работу в сети. Для сетевой политики можно использовать другие проекты, такие как Calico.

Сетевая политика блокирует трафик c, как и ожидалось, в кластере с использованием Calico

У меня есть два кластеры, один из которых использует фланель, а другой - ситцевое, и тесты работают, как и ожидалось, на ситце.

Журналы:

$ kubectl apply -f networkpolicy.yaml
networkpolicy.networking.k8s.io/foo-deny-external-egress created


ubuntu@calico-master-1:~$ kubectl run busybox --image=busybox --restart=Never -- sleep 3600
pod/busybox created


$ kubectl get networkpolicy
NAME                       POD-SELECTOR   AGE
foo-deny-external-egress   run=busybox    30m

$ kubectl exec -it busybox -- /bin/sh
/ # wget https://google.com
Connecting to google.com (74.125.193.102:443)
wget: can't connect to remote host (74.125.193.102): Connection timed out

На кластере, использующем фланелевое создание, сетевая политика не действует

ubuntu@k8s-flannel:~$ kubectl exec -it busybox -- /bin/sh
/ # curl https://google.com
/bin/sh: curl: not found
/ # wget https://google.com
Connecting to google.com (216.58.207.238:443)
wget: note: TLS certificate validation not implemented
Connecting to www.google.com (172.217.20.36:443)
saving to 'index.html'
index.html           100% |*************************************************************************************************************************************************| 12498  0:00:00 ETA
'index.html' saved

Применить политику

$ kubectl apply -f networkpolicy.yaml
networkpolicy.networking.k8s.io/foo-deny-external-egress created

$ kubectl get networkpolicy
NAME                       POD-SELECTOR   AGE
foo-deny-external-egress   run=busybox    32m

Мы все еще можем получить доступ к сети снаружи, поскольку сетевая политика не работает на фланели .

$ kubectl exec -it busybox -- /bin/sh
/ # wget https://google.com
Connecting to google.com (172.217.22.174:443)
wget: note: TLS certificate validation not implemented
Connecting to www.google.com (172.217.20.36:443)
saving to 'index.html'
index.html           100% |*************************************************************************************************************************************************| 12460  0:00:00 ETA
'index.html' saved
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...