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-контроллера:

  1. Настройте окружение и установите утилиту kubectl для управления кластером Managed Kubernetes по инструкции Настройка окружения.
  2. Установите пакетный менеджер Helm.

Установка Ingress-контроллера

Рассмотрим установку базового Nginx-контроллера:

  1. Проверьте, какие сервисы уже существуют в созданном пространстве имен (Namespace):

    kubectl --namespace default get services
  2. Добавьте репозиторий ingress-nginx из Kubeapps Hub:

    helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
  3. Установите chart (поддерживает конфигурацию с Ingress-контроллером):

    helm install ingress-nginx/ingress-nginx --version --generate-name
  4. Проверьте сервисы еще раз, чтобы убедиться, что 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