Блокировать разрешение внешнего IP-адреса в kubernetes
Я создал службу nginx pod и nginx clusterIP и назначил externalIP для этой службы, как показано ниже.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
test-nginx ClusterIP 10.110.93.251 192.168.0.10 443/TCP,80/TCP,8000/TCP,5443/TCP 79m
В одном из модулей моего приложения я пытаюсь выполнить приведенную ниже команду и получить ее полное доменное имя.
>>> import socket
>>> socket.getfqdn('192.168.0.10')
'test-nginx.test.svc.cluster.local'
Он возвращает мне fqdn службы nginx вместо fqdn моей хост-машины. Есть ли способ заблокировать разрешение DNS только для внешнего IP? или есть какое-то другое решение этой проблемы?
1 ответ
Вы присвоили внешний ip
ClusterIP
service в Kubernetes, поэтому вы можете получить доступ к своему приложению из-за пределов кластера, но вы обеспокоены тем, что поды имеют доступ к этому внешнему IP-адресу, и хотите заблокировать разрешение DNS.
Это не лучший подход к вашей проблеме, у Kubernetes есть несколько способов предоставить сервисы без ущерба для безопасности; для того, что вы хотите, возможно, лучшим вариантом является реализация Ingress .
Как вы можете видеть на диаграмме, Ingress направляет входящий трафик к нужному сервису на основе настроенных правил, изолируя внешний мир от вашего сервиса и пропуская только определенный трафик. Вы также можете реализовать такие функции, как завершение TLS для вашего HTTPS. трафика, и он выполняет балансировку нагрузки по умолчанию.
Более того, если вас больше всего беспокоит безопасность вашего кластера, вы можете взглянуть на Istio Service mesh .