#kubernetes #google-cloud-platform #google-kubernetes-engine #nginx-ingress
#kubernetes #google-облачная платформа #google-kubernetes-engine #nginx-вход
Вопрос:
Я собираюсь развернуть входной контроллер Nginx в нескольких зонах и хотел бы иметь возможность вводить метки региона / зоны в свои модули, используя переменные среды для маршрутизации с учетом зоны. При маршрутизации с учетом зоны модули, запущенные в зоне, отправляют трафик на внутренние серверы, работающие в зоне-a. Это существенно снизило бы стоимость между зонами.
Я изучил нисходящий API, однако, похоже, что это вводит метки / метаданные только из модуля / службы, а не с узла, на котором запущены эти модули.
Есть ли какое-либо возможное решение для внедрения зоны узла в модуль Nginx, чтобы я мог использовать переменную среды вместе с функциональностью map в Nginx для выбора правильного серверной части, расположенной выше по потоку.
Заранее благодарю вас
Ответ №1:
Одним из вариантов может быть то, что вы вводите имя узла через нисходящий API, а затем используете контейнер sidecar, который получает зону через Google Cloud API и, наконец, соответствующим образом вводит переменную среды.
Внедрение переменной среды из контейнера в другой в целом непросто. Во-первых, такой контейнер должен быть запущен перед основным контейнером — это может быть достигнуто в Kubernetes с помощью контейнеров инициализации. Во-вторых, вам необходимо ввести информацию. Одним из вариантов было бы использовать общий том (но скорее вам нужен способ просмотреть его или прочитать при запуске основного контейнера для заполнения переменных env). Другим вариантом было бы использовать configmaps, где контейнер sidecar / init заполняет configmap для использования основным контейнером — по-видимому, эта проблема уже решена, например, здесь.
Комментарии:
1. Спасибо за воспроизведение. Не могли бы вы, пожалуйста, подробнее рассказать о введении переменной среды из sidecar. Я могу запустить пользовательский скрипт на sidecar для извлечения значения зоны. Но мне неясно, как передать значение зоны из sidecar в основной контейнер в качестве переменной среды.
2. Действительно, в целом это не прямолинейно, но я пытаюсь уточнить.
3. Спасибо. Было бы здорово, если бы вы могли предоставить некоторые сведения об этом.
4. @Rakesh Я расширил ответ. Вы нашли это полезным?