#kubernetes #flannel #project-calico #calico #kubernetes-networkpolicy
Вопрос:
Мое правило, разрешающее DNS с сетевой политикой Calico, не работает. Использование CURL с DNS по-прежнему заблокировано !
Мой вариант использования : я хочу, чтобы все внешние сети были удалены, кроме связи со службой S3. Разрешение ТОЛЬКО IP-адреса S3 работает, так как все остальное заблокировано, кроме установленного мной IP-адреса. Но использование DNS, связанного с этим IP-адресом, также блокируется, и я не знаю почему.
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: allow-egress-external
namespace: demo
spec:
order: 2
selector:
color == 'red'
types:
- Egress
egress:
- action: Allow
protocol: UDP
destination:
ports:
- 53
Это должно позволить любым блокам с меткой color: red
взаимодействовать с DNS.
У меня также есть правило запрета, установленное следующим образом:
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: default-deny
namespace: demo
spec:
order: 1
selector: all()
types:
- Egress
И, наконец, правило, позволяющее проходить определенный IP-адрес:
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: allow-egress-external
namespace: demo
spec:
order: 3
selector:
color == 'red'
types:
- Egress
egress:
- action: Allow
destination:
nets:
- <some_ip>/32
Но когда я сворачиваю свой DNS, который должен разрешиться в «<some_ip>», <some_ip>запрос блокируется. Хотя керлинг <some_ip> напрямую работает.
Любая помощь будет признательна,
Thx
Правка 1
Например:
С политикой ВВЕРХ
- Авторизованный IP-адрес моей целевой службы
- Авторизованный поиск DNS
$ curl <targeted_dns> -v
* Expire in 0 ms for 6 (transfer 0x5638bf7edfb0)
* Expire in 1 ms for 1 (transfer 0x5638bf7edfb0)
* Expire in 0 ms for 1 (transfer 0x5638bf7edfb0)
* Expire in 1 ms for 1 (transfer 0x5638bf7edfb0)
* Expire in 0 ms for 1 (transfer 0x5638bf7edfb0)
* Expire in 0 ms for 1 (transfer 0x5638bf7edfb0)
* Expire in 1 ms for 1 (transfer 0x5638bf7edfb0)
[timeout for ever]
<targeted_dns> должен был быть разрешен, а затем полученный IP-адрес должен был быть разрешен для прохождения, как это было разрешено вручную.
Комментарии:
1. Не могли бы вы поделиться некоторыми журналами или подробностями о проблеме? От dns до прокси-сервера. Они были бы полезны.
2. @Катастрофа Я добавил раздел редактирования с выводом curl мой вариант использования вверху. Тнх
3. Здравствуйте, не могли бы вы подробнее рассказать о части связи с S3? Означает ли это, что вы используете управляемый кластер, такой как EKS, или вы создали кластер Kubernetes на AWS, или вы пытаетесь подключиться из локального местоположения. Также без каких-либо
Networkpolicies
он работает так, как ожидалось?4. @DawidKruk Эй, я хотел бы, чтобы модули могли взаимодействовать с S3. Вот почему я попытался разрешить разрешение IP и dns S3 (потому что использование IP не очень дружелюбно). Кластер управляется OVH (это облачный провайдер). И да, без сетевых политик я могу использовать DNS, но у меня также есть доступ ко всему Интернету, что не в порядке.