У меня Kubernetes работает в Google Cloud, и у меня есть одна служба, подключенная к модулю с сервером Nodejs, а другая служба, подключенная к модулю с NGINX. В модуле NGINX у меня есть блок местоположения, который я хотел бы глобально отклонить, за исключением случаев, когда он исходит из модуля Nodejs.
Как правильно сделать это в моем файле конфигурации NGINX?
То, что у меня сейчас, ниже, всегда запрещается блоком местоположения ... Я использую переменную среды для службы Nodejs, которая автоматически добавляется в модуль NGINX при его создании.
location /target {
deny all;
allow 1.2.3.4; #NODEJS_SERVICE_HOST;
return 200;
}
С точки зрения Kubernetes это не лучший подход - ограничение доступа через Под IP-адрес не гарантирует постоянство правила, поскольку после переназначения конкретного Pod'а его сетевой IP-адрес может быть изменен в соответствии с Kubernetes. сетевая модель концепция.
Вы можете подумать об использовании Обнаружение DNS механизм для установки функции преобразования имен между модулями K8s и соответствующими службами. Однако я не уверен, будет ли это эффективным решением, поэтому Nginx необходимо снабдить дополнительными модули, выполняя Поиск DNS для записей A, что может серьезно повлиять на производительность Pods.
По сути, Kubernetes приносит Сетевые политики, выполняя такие задачи. Я бы посоветовал вам ознакомиться с соответствующими пример для принятия сетевой политики в на основе этикеток ограничение более прямым способом.