#nginx #kubernetes #kubernetes-networkpolicy
#nginx #kubernetes #kubernetes-сетевая политика
Вопрос:
Я довольно новичок в сетевой политике Calico. Я создал следующую сетевую политику в своем кластере:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: nginxnp-po
namespace: default
spec:
podSelector:
matchLabels:
run: nginxnp
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
acces: frontend
ports:
- port: 80
Вот как я это прочитал: все модули, у которых есть селектор run=nginxnp
, доступны только через порт 80 из каждого модуля, у которого есть селектор access=frontend
.
Вот мой модуль nginx (с запущенным nginx в нем):
$ kubectl get pods -l run=nginxnp
NAME READY STATUS RESTARTS AGE
nginxnp-9b49f4b8d-tkz6q 1/1 Running 0 36h
Я создал контейнер busybox, подобный этому:
$ kubectl run busybox --image=busybox --restart=Never --labels=access=frontend -- sleep 3600
Я вижу, что она соответствует селектору access=frontend
:
$ kubectl get pods -l access=frontend
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 0 6m30s
Однако, когда я запускаю модуль busybox и пытаюсь wget модуля nginx, соединение по-прежнему отклоняется.
Я также попытался установить исходящее правило, которое разрешает трафик наоборот, но это также ничего не дало. Как я понял, сетевая политика: когда правило не установлено, ничего не блокируется. Следовательно, когда я не устанавливаю правило выхода, выход не должен блокироваться.
Если я удалю сетевую политику, она заработает. Любые указания высоко ценятся.
Комментарии:
1. в matchLabels есть опечатка =>
acces: frontend
это правильно?2. Нет, конечно, это не так. TLDR: не работайте над чем-либо, если вы устали. Я не был уверен, понял ли я сетевую политику, и хотя: конечно, мое понимание должно быть неправильным…
3. Вы можете использовать хороший инструмент от Tufin, чтобы визуализировать свои сетевые политики, прежде чем применять их здесь
Ответ №1:
В шаблоне сетевой политики есть опечатка acces: frontend
должно быть access: frontend
ingress:
- from:
- podSelector:
matchLabels:
acces: frontend