Ingress контроллеры

В кластере Managed Kubernetes нет необходимости дополнительно создавать внутренний балансировщик нагрузки при установке Ingress контроллера.

Глоссарий

Термин Определение
Ingress Механизм, обеспечивающий маршрутизацию входящего трафика на уровне приложения (L7), предоставляемый через Ingress контроллер
Ingress контроллер Прокси-сервер, развернутый в кластере Managed Kubernetes.
Специфика выбора контроллера зависит от требований приложений, размещенных в кластере Managed Kubernetes.
Список существующих Ingress контроллеров
Правила маршрутизации (Routing rules) Правила проксирования входящего трафика от внешнего источника до сервисов внутри кластера Managed Kubernetes
Сервис (Service) Служба Managed Kubernetes, развернутая в кластере и обеспечивающая функции сетевой балансировки нагрузки, объединяет несколько подов.
У службы есть виртуальные IP-адреса, маршрутизируемые только в сети кластера
Под (Pod) Группа из одного или нескольких контейнеров и совместно используемых ресурсов для этих контейнеров.
Каждый под кластера Kubernetes имеет уникальный IP-адрес

Подготовка к установке Ingress контроллера

Установите утилиту для управления кластером Managed Kubernetes kubectl.

Установите пакетный менеджер Helm.

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

Для установки Ingress контроллера:

  1. Перейдите в панели управления в раздел Облачная платформа.
  2. Откройте вкладку Kubernetes.
  3. В списке кластеров Kubernetes откройте нужный кластер.
  4. В карточке кластера перейдите на вкладку Настройки.
  5. Скачайте kubeconfig.yaml, нажав кнопку Скачать kubeconfig.
  6. Экспортируйте в переменную KUBECONFIG путь к скачанному файлу:

    export KUBECONFIG=/<путь>/kubeconfig.yaml
  7. Проверьте, какие сервисы уже существуют в созданном пространстве имен (namespace):

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

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

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

После выполнения этих действий в панели управления в разделе Облачная платформа на вкладке Балансировщик должен появиться новый балансировщик нагрузки.

Манифест для создания сервиса

kind: Service
apiVersion: v1
metadata:
  name: test-depl
  labels:
    app: test-depl
  annotations:
    service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
spec:
  type: LoadBalancer
  selector:
    app: test-depl
  ports:
  - name: http
    port: 80
    targetPort: 80

Использование IP-адреса в сети кластера

Для создания балансировщика, который использует IP-адрес в сети кластера вместо плавающего IP-адреса, добавьте в аннотацию строчку:

service.beta.kubernetes.io/openstack-internal-load-balancer

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

Для установки базового Nginx-контроллера выполните следующую команду:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.34.1/deploy/static/provider/cloud/deploy.yaml

Для просмотра подов введите:

kubectl get pods

Вывод должен выглядеть примерно так:

NAME                           READY   STATUS    RESTARTS   AGE
kubernetes-bootcamp-nnn-nnnn   1/1     Running   0          27m

Для просмотра сервисов введите:

kubectl get services

Вывод должен выглядеть примерно так:

NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   nn.nn.n.n    <none>        443/TCP   53m

Обратите внимание! При установке Ingress контроллера в кластер будет создан сервис с типом LoadBalancer, то есть будет создан балансировщик нагрузки, который будет входной точкой для доступа извне к приложениям в кластере.

Официальная инструкция по установке Ingress контроллера

Также установить Ingress контроллер можно по официальной инструкции.