Особенности ingress-контроллера EdgeЦентр
Создать сервис
Использовать ingress-контроллер EdgeЦентр
Посмотреть IP-адрес
Что такое ingress-контроллер
Перед тем как дать определение ingress-контроллеру, рассмотрим другие две сущности: сервис и ingress.
Что такое сервис
Сервис — это Kubernetes-абстракция, которая определяет логический набор подов и политику доступа к ним. Сервис предоставляет доступ к этим подам через единый IP-адрес. Поды могут уничтожаться, пересоздаваться или менять свой внутренний IP-адрес, но на них сохранится доступ с единого IP-адреса сервиса. Сервис распределяет входящий трафик по всем подам.
Что такое ingress
Ingress — это Kubernetes-объект в виде набора правил, которые управляют внешним трафиком между сервисами внутри кластера. Например, вы можете адресовать путь /login на определённый сервис в кластере. Таким образом, когда пользователь делает запрос на yourwebsite.com/login, трафик будет перенаправлен на сервис, который отвечает за логирование пользователей.
Чтобы направить внешний трафик к приложению, нужны три компонента:
Поды с контейнерами, на которых работает приложение.
Сервис, который направляет трафик к подам.
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Центр. Балансировщик нагрузки будет создан от вашего имени автоматически. Балансировщик будет отображаться в личном кабинете — в разделе Балансировщики нагрузки.
Посмотреть IP-адрес созданного балансировщика нагрузки
Для того, чтобы посмотреть IP-адрес балансировщика нагрузки, через который проходит трафик, перейдите в раздел Балансировщики нагрузки в личном кабинете или выполните команду:
kubectl get ingress <имя балансировщика нагрузки>
Вы получите ответ:
IP-адрес балансировщика нагрузки будет указан в колонке ADDRESS.