Ingress
В Managed Kubernetes Ingress-контроллеры не предустанавливаются в кластеры. Для создания объектов Ingress нужно самостоятельно установить любой Ingress Controller.
Помимо самого приложения Ingress Controller будет создан сервис (Service) с типом LoadBalancer, то есть балансировщик нагрузки. Балансировщик будет входной точкой для доступа извне к приложениям в кластере. В таком случае при установке Ingress-контроллера нет необходимости дополнительно создавать внутренний балансировщик нагрузки.
Глоссарий
Термин | Определение |
---|---|
Ingress | Механизм, обеспечивающий маршрутизацию входящего трафика на уровне приложения (L7), предоставляемый через Ingress-контроллер |
Ingress-контроллер | Прокси-сервер, развернутый в кластере Managed Kubernetes. Специфика выбора контроллера зависит от требований приложений, размещенных в кластере Managed Kubernetes. Список существующих Ingress-контроллеров |
Правила маршрутизации (Routing rules) | Правила проксирования входящего трафика от внешнего источника до сервисов внутри кластера Managed Kubernetes |
Сервис (Service) | Служба Managed Kubernetes, развернутая в кластере и обеспечивающая функции сетевой балансировки нагрузки, объединяет несколько подов. У службы есть виртуальные IP-адреса, маршрутизируемые только в сети кластера |
Под (Pod) | Группа из одного или нескольких контейнеров и совместно используемых ресурсов для этих контейнеров. Каждый под кластера Kubernetes имеет уникальный IP-адрес |
Подготовка к установке Ingress-контроллера
Перед установкой Ingress-контроллера:
- Настройте окружение и установите утилиту
kubectl
для управления кластером Managed Kubernetes по инструкции Настройка окружения. - Установите пакетный менеджер Helm.
Установка Ingress-контроллера
Рассмотрим установку базового Nginx-контроллера:
Проверьте, какие сервисы уже существуют в созданном пространстве имен (Namespace):
kubectl --namespace default get services
Добавьте репозиторий ingress-nginx из Kubeapps Hub:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
Установите chart (поддерживает конфигурацию с Ingress-контроллером):
helm install ingress-nginx/ingress-nginx --version --generate-name
Проверьте сервисы еще раз, чтобы убедиться, что ingress-nginx-controller запущен:
kubectl --namespace default get services
Вывод должен выглядеть примерно так:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP nn.nn.n.n <none> 443/TCP 22s
В панели управления в разделе Облачная платформа на вкладке Балансировщики появится новый балансировщик нагрузки.
Примечание: можно установить другой Ingress-контроллер по официальной инструкции.
Пример манифеста для 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