У меня есть одно приложение, работающее в нескольких кластерах K8s; Допустим, есть frontend-сервис и два backend-сервиса.
Я использую прокси-сервер NGINX для запросов от внешнего интерфейса к внутренним службам. Обычная версия NGINX, нет НГИНКС+.
Вот nginx.conf:
сервер {
....
set $back1 "<имя хоста k8s для службы backend1>";
set $back2 "<имя хоста k8s для службы backend2>";
местоположение / назад1 {
переписать ^/back1/(.*)$ /$1 break;
прокси_пароль http://$back1;
}
<и то же самое для серверной службы 2>
}
Итак, в основном, что происходит, так это то, что в моем внешнем приложении я устанавливаю адрес внутренней службы в локальный/назад1 и локальный/назад2, запросы попадают в NGINX, который удаляет те назад1 и назад2 префиксы и вызвать любую конечную точку, которую я укажу после в реальных внутренних службах в K8s.
Поскольку у меня есть несколько кластеров K8s, имена хостов серверных служб различаются, и мне нужно учитывать это в моей конфигурации NGINX.
Вопрос в том:
Есть ли способ для NGINX различать мои кластеры K8s?
Возможно, я могу передать переменную среды контейнеру, на котором запущена моя служба внешнего интерфейса, и создать если заявление в nginx.conf. Что-то вроде:
сервер {
если (${env} = "кластер1") {
установить $back1 = "<имя хоста кластера 1>"
}
если (${env} = "кластер2") {
установить $back1 = "<имя хоста кластера 2>"
}
}
Или, если я могу выполнить команду оболочки в конфигурации nginx, чтобы получить имя хоста и написать аналогичные блоки if.
Буду признателен за любую помощь в этом вопросе!