Предоставление сервиса в Kubernetes с использованием обратного прокси nginx
Я новичок в Kubernetes и хотел понять, как я могу представить сервис, работающий в Kubernetes, для внешнего мира. Я выставил его с помощью NodePort на кластере. Так, например: служба предоставляет порт 31234 на хосте, и я могу получить доступ к службе с другого сервера через https://kubeserverip:31234/.
Чего я хочу добиться, так это обслуживать этот сервис через nginx (на другом сервере, вне контроля Kube) через URL, скажем, http://service.example.com/. Я попытался развернуть nginx с восходящим потоком, указывающим на сервис, но это не работает, и я получил ошибку шлюза.
Есть ли что-то, чего мне здесь не хватает? Или есть более аккуратный способ достижения этого.
У меня есть чистая установка кластера Kubernetes, и у меня нет доступа к балансировщику нагрузки gce или другим поставщикам LB.
Спасибо
2 ответа
Ты почти там! Следующим шагом будет настройка входного контроллера. Существует плагин контроллера NGINX Ingress, который вы можете проверить здесь.
Изменить: Вот пример конфигурации: https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example
Спасибо за указание в правильном направлении.
Основные шаги в целом были:
Создайте приложение и его определение сервиса.
Создайте пространство имен для входа.
- Создайте внутреннее развертывание и службу по умолчанию для перенаправления всех запросов, не определенных в правилах Ingress. Создайте их во входном пространстве
- Создайте развертывание входного контроллера nginx.
- Создайте правила RBAC.
- Наконец, создайте правило входа для приложений с путями и портами.
Нашел очень полезное руководство, которое объясняло вещи в деталях: https://akomljen.com/kubernetes-nginx-ingress-controller/