Настроить ingress-контроллер EdgeЦентр

Последние изменения: 25.01.2023

Что такое ingress-контроллер

Особенности ingress-контроллера EdgeЦентр
Создать сервис

Использовать ingress-контроллер EdgeЦентр

Посмотреть IP-адрес

Что такое ingress-контроллер

Перед тем как дать определение ingress-контроллеру, рассмотрим другие две сущности: сервис и ingress.

Что такое сервис

Сервис — это Kubernetes-абстракция, которая определяет логический набор подов и политику доступа к ним. Сервис предоставляет доступ к этим подам через единый IP-адрес. Поды могут уничтожаться, пересоздаваться или менять свой внутренний IP-адрес, но на них сохранится доступ с единого IP-адреса сервиса. Сервис распределяет входящий трафик по всем подам.

Что такое ingress

Ingress — это Kubernetes-объект в виде набора правил, которые управляют внешним трафиком между сервисами внутри кластера. Например, вы можете адресовать путь /login на определённый сервис в кластере. Таким образом, когда пользователь делает запрос на yourwebsite.com/login, трафик будет перенаправлен на сервис, который отвечает за логирование пользователей.

Чтобы направить внешний трафик к приложению, нужны три компонента:

  1. Поды с контейнерами, на которых работает приложение.

  2. Сервис, который направляет трафик к подам.

  3. Ingress, который направляет трафик из внешних сетей к одному или нескольким сервисам.

Для работы ingress нужен ingress-контроллер.

Что такое ingress-контроллер

Ingress-контроллер — Kubernetes-инструмент, который читает ingress-объекты и создаёт карту сервисов в кластере. В статье описано, как пользоваться ingress-контроллером EdgeЦентр. Если вы предпочитаете пользоваться ingress-контроллером Nginx, прочтите статью «Настроить ingress-контроллер nginx».

Особенности ingress-контроллера EdgeЦентр

EdgeЦентр предоставляет ingress-контроллер «из коробки». После применения ingress-манифеста контроллер автоматически создаёт балансировщик нагрузки. Балансировщик нагрузки создается для каждого ingress-объекта. Балансировщик нагрузки будет играть роль точки доступа для всего входящего трафика, а затем доставит его подам на основании правил, установленных в сервисах и ingress-объектах.

Например, если в кластере запущено приложение, сначала необходимо создать сервис, чтобы предоставить доступ к его подам, а затем создать ingress-объект, чтобы предоставить доступ из интернета.

Создать сервис

1. Подготовьте YAML-файл в любом кодовом или текстовом редакторе:

apiVersion: v1
kind: Service
metadata:
  name: service-grafana
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 3000
  selector:
    app: grafana

где:
service-grafana — имя сервиса,
80 — порт сервиса,
TCP — протокол, который прослушивает под,
3000 — порт пода,
grafana — имя приложения.

2. Выполните команду:

kubectl apply -f <имя YAML-файла>

Вы получите ответ:

service/<имя сервиса> created

Вы успешно создали сервис с типом по умолчанию ClusterIP. Подробную информацию о типах сервисов в Kubernetes смотрите в документации Kubernetes на официальном сайте.

Использовать ingress-контроллер EdgeЦентр

Ingress-контроллер EdgeЦентр доступен по умолчанию, поэтому для его работы требуется только создать ingress-объект.

1. Подготовьте YAML-файл в любом кодовом или текстовом редакторе:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hello-world
spec:
rules:
  - http:
    paths:
    - path: /about
      backend:
        serviceName: hello-world-about
        servicePort: 80
    - path: /login
      backend:
        serviceName: hello-world-login
        servicePort: 80

где:
hello-world — имя ingress-объекта,
/about — URL-путь,
hello-world-about — имя сервиса, который будет обрабатывать запросы по пути /about,
80 — порт сервиса, который будет обрабатывать запросы по пути /about,
/login — URL-путь,
hello-world-login — имя сервиса, который будет обрабатывать запросы по пути /login,
80 — порт сервиса, который будет обрабатывать запросы по пути /login.

2. Выполните команду:

kubectl apply -f <имя YAML-файла>

Вы получите ответ:

Ingress/<имя созданного ingress-объекта> created

Вы успешно создали ingress-объект для ingress-контроллера EdgeЦентр. Балансировщик нагрузки будет создан от вашего имени автоматически. Балансировщик будет отображаться в личном кабинете — в разделе Балансировщики нагрузки.

2e5b5ac6c8cecafaa5d37bafce1b6c25.png

Посмотреть IP-адрес созданного балансировщика нагрузки

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

kubectl get ingress <имя балансировщика нагрузки>

Вы получите ответ:

WRpVvYQ997HoClQUYRYrDYGfFLTvnWLzJ-Lvessk

IP-адрес балансировщика нагрузки будет указан в колонке ADDRESS.


Помогла ли вам статья?