Ingress и Ingress Controller
Ingress — объект Kubernetes, который определяет правила маршрутизации внешнего трафика, балансировки нагрузки и SSL-терминации. Ingress Controller представляет собой прокси-сервер в кластере Managed Kubernetes и маршрутизирует трафик на основе правил, которые определены в Ingress.
В Managed Kubernetes Ingress Controller не предустанавливается в кластер, его необходимо установить самостоятельно. Выбор контроллера зависит от требований приложений, размещенных в кластере Managed Kubernetes. Cписок возможных контроллеров можно посмотреть в инструкции Ingress Controllers документации Kubernetes.
Мы рассмотрим установку Ingress Controller Traefik с помощью Helm-чарта.

Установить Ingress Controller Traefik
Вместе с Ingress Controller будет автоматически создан балансировщик нагрузки с публичным IP-адресом. По умолчанию создается балансировщик нагрузки типа Базовый с резервированием, но вы можете выбрать тип балансировщика нагрузки и настроить для него другие параметры — подробнее о параметрах балансировщика нагрузки в инструкции Настроить балансировщик нагрузки. Балансировщик будет входной точкой для доступа к приложениям в кластере, поэтому дополнительно создавать внутренний балансировщик нагрузки не нужно.
Без настройки балансировщика нагрузки
С настройкой балансировщика нагрузки
-
Убедитесь, что в пуле выделена квота минимум на один публичный IP-адрес.
-
Добавьте репозиторий
traefikв Helm:helm repo add traefik https://traefik.github.io/charts -
Обновите список репозиториев:
helm repo update -
Установите Ingress Controller:
helm install traefik traefik/traefik -
Убедитесь, что Ingress Controller установлен:
kubectl get podsВ ответе появится информация об Ingress Controller:
NAME READY STATUS RESTARTS AGE
traefik-78d5c6f95b-2xk9p 1/1 Running 0 51sБудет создан новый балансировщик нагрузки. Он появится в панели управления: в верхнем меню нажмите Продукты и выберите Облачные серверы → раздел Балансировщики → вкладка Балансировщики.
-
Убедитесь, что в пуле выделена квота минимум на один публичный IP-адрес.
-
Добавьте репозиторий
traefikв Helm:helm repo add traefik https://traefik.github.io/charts -
Получите значен ия по умолчанию и сохраните их в файл
values.yaml:helm inspect values traefik/traefik > values.yaml -
В блок
annotationsфайлаvalues.yamlдобавьте необходимые параметры для балансировщика — подробнее о параметрах балансировщика нагрузки в инструкции Настроить балансировщик нагрузки.Например, если балансировщику нагрузки необходимо выделить приватный IP-адрес вместо публичного IP-адреса, который назначается по умолчанию, добавьте аннотацию
service.beta.kubernetes.io/openstack-internal-load-balancer: "true".Фрагмент манифеста с блоком
annotations:apiVersion: v1
kind: Service
metadata:
annotations:
meta.helm.sh/release-name: traefik
meta.helm.sh/release-namespace: default
service.beta.kubernetes.io/openstack-internal-load-balancer: "true" -
Сохраните изменения.
-
Установите Ingress Controller:
helm install traefik traefik/traefik --generate-name -f values.yaml -
Убедитесь, что Ingress Controller установлен:
kubectl get podsВ ответе появится информация об Ingress Controller:
NAME READY STATUS RESTARTS AGE
traefik-78d5c6f95b-2xk9p 1/1 Running 0 51sБудет создан новый балансировщик нагрузки. Он появится в панели управления: в верхнем меню нажмите Продукты и выберите Облачные серверы → раздел Балансировщики → вкладка Балансировщики.
Создать Ingress
Пример манифеста:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /testpath
pathType: Prefix
backend:
service:
name: test
port:
number: 80