Предоставление сервиса в 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

Спасибо за указание в правильном направлении.

Основные шаги в целом были:

  1. Создайте приложение и его определение сервиса.

  2. Создайте пространство имен для входа.

  3. Создайте внутреннее развертывание и службу по умолчанию для перенаправления всех запросов, не определенных в правилах Ingress. Создайте их во входном пространстве
  4. Создайте развертывание входного контроллера nginx.
  5. Создайте правила RBAC.
  6. Наконец, создайте правило входа для приложений с путями и портами.

Нашел очень полезное руководство, которое объясняло вещи в деталях: https://akomljen.com/kubernetes-nginx-ingress-controller/

Другие вопросы по тегам