Создание Ingress
Правила Ingress (Kubernetes Ingress) открывают HTTP/HTTPS маршруты снаружи кластера для внутренней маршрутизации (Kubernetes Service), что позволяет контролировать внешний доступ к вычислительным компонентам.
Создайте Ingress для управления внешним HTTP/HTTPS доступом к Service.
При создании нескольких ingress в одном и том же namespace разные ingress НЕ ДОЛЖНЫ иметь одинаковые Domain, Protocol и Path (то есть дублирование точек доступа не допускается).
Содержание
Метод реализации
Правила Ingress зависят от реализации Ingress Controller, который отвечает за отслеживание изменений в Ingress и Service. После создания нового правила Ingress внутри Ingress Controller автоматически создаётся правило переадресации, соответствующее правилу Ingress. Когда Ingress Controller получает запрос, он сопоставляет правило переадресации с правилом Ingress и распределяет трафик по указанным внутренним маршрутам, как показано на схеме ниже.
Для протокола HTTP Ingress поддерживает только порт 80 в качестве внешнего порта. Для протокола HTTPS Ingress поддерживает только порт 443 в качестве внешнего порта. Балансировщик нагрузки платформы автоматически добавит порты 80 и 443 для прослушивания.
Быстрый старт
Далее мы используем community-версию Ingress-NGINX, чтобы продемонстрировать, как получить доступ к вашему приложению с помощью контроллера NGINX.
-
Разверните контроллер
Ingress-NGINX.После выполнения этой команды автоматически создаются следующие ресурсы:
Если вы хотите изменить адрес реестра по умолчанию, можно скачать YAML-файл с помощью
curl, изменить его и затем применить.Ожидайте запуска Pod
ingress-nginx-controller-xxx. -
Локальное тестирование
-
Создайте простой веб-сервер и связанный с ним сервис:
-
Создайте ресурс ingress. В этом примере используется хост, который сопоставляется с
localhost: -
Пробросьте локальный порт к контроллеру ingress:
-
Получите доступ к вашему развертыванию с помощью curl:
Примечание: Этот параметр временно разрешает доменное имя demo.local в IP 127.0.0.1 и используется на порту 8080. При посещении http://demo.local:8080 вы фактически посещаете http://127.0.0.1:8080 . С другой стороны, следует настроить
hosts:В итоге вы должны увидеть HTML-ответ с текстом вроде "Welcome to nginx!".
После этого вы можете получить доступ к сайту по адресу
http://demo.local:8080/.
INFOТип по умолчанию для
ingress-nginx-controller—LoadBalancer. Если полеEXTERNAL-IPпоказываетpending, это означает, что вашему Kubernetes кластеру не удалось создать балансировщик нагрузки.Если вы интегрируетесь с провайдером, который поддерживает указание IP-адресов балансировщика нагрузки для Service через (специфичные для провайдера) аннотации, рекомендуется использовать этот способ.
-
-
Онлайн-тестирование
Когда у вашего
ingress-nginx-controller(Service типа LoadBalancer) появляетсяEXTERNAL-IP, вы можете создать ресурс ingress. В следующем примере предполагается, что вы настроили DNS-запись дляwww.developer.io:Вы можете получить доступ к
http://www.developer.ioи увидеть тот же вывод.
Предварительные требования
-
В текущем namespace должен быть доступен Service.
-
Убедитесь у администратора, что для проекта, связанного с текущим namespace, выделено используемое доменное имя.
-
Для доступа к домену через HTTPS необходимо предварительно сохранить HTTPS-сертификат в виде TLS-секрета.
Пример Ingress:
- Для получения дополнительных настроек смотрите nginx-configuration.
- Используется контроллер
ingress-nginx. - Если вы хотите запускать ingress только локально, предварительно настройте
hosts.
Создание Ingress через веб-консоль
-
Зайдите в Container Platform.
-
В левой навигационной панели выберите Network > Ingress.
-
Нажмите Create Ingress.
-
Используйте инструкции ниже для настройки параметров.
-
Нажмите Create.
Создание Ingress через CLI
Если у ingress отсутствует Ingress Class, все ALB-инстансы, выделенные этому проекту, будут обрабатывать этот ingress.