Как использовать HAProxy в качестве контроллера входящего трафика в среде Kubernetes

Kak Ispol Zovat Haproxy V Kacestve Kontrollera Vhodasego Trafika V Srede Kubernetes



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

Что такое входной контроллер?

Входной контроллер — это компонент, который позволяет пользователям управлять и контролировать доступ к службам в их кластере Kubernetes. Входной контроллер состоит из двух ключевых элементов:

  1. Входной ресурс – Это объект API Kubernetes, который определяет правила маршрутизации трафика сервисов в кластере на основе указанного имени хоста и путей.
  2. Входной контроллер – Это программный компонент, такой как HAProxy, Traefik или NGINX, который реализует правила, указанные во входном ресурсе. Он настраивает балансировщик нагрузки для обработки трафика на основе изменений, внесенных во входящие объекты.

Как использовать HAProxy в качестве контроллера входящего трафика в среде Kubernetes

Поняв, что такое входной контроллер и зачем он вам нужен, следующая задача — описать шаги по его использованию. В нашем случае мы настроили HAProxy в качестве входящего контроллера, выполнив указанные шаги.







Н/Б: Убедитесь, что ваш кластер Kubernetes запущен и работает. Затем действуйте следующим образом.



Шаг 1. Запустите кластер Kubernetes
Существуют разные способы настройки и запуска кластера Kubernetes. Для этого руководства мы используем Minikube. Это инструмент, который предлагает упрощенный способ развертывания Kubernetes внутри виртуальной машины или Docker, особенно если Kubernetes установлен локально на вашем компьютере.



Обратитесь к Документация Миникуба о командах установки, которые будут использоваться для вашей платформы. В этом случае мы запускаем стабильную архитектуру Linux «x64» и выполняем следующие команды:





$ локон -ЭТО https: // Storage.googleapis.com / миникуб / релизы / последний / миникубе-linux-amd64
$ судо установить миникубе-linux-amd64 / usr / местный / мусорное ведро / миникуб

Первая команда получает последний стабильный двоичный файл Minikube, а вторая команда устанавливает и перемещает двоичный файл по указанному пути.

После установки Minikube запустите его, чтобы запустить кластер.



$ запуск миникуба

Затем для доступа к кластеру у вас должен быть установлен kubectl. Однако вы можете использовать версию kubectl, доступную в Minikube. Например, чтобы проверить детали запущенных модулей, вы выполняете команду «kubectl» следующим образом:

$ миникубе кубектл -- получить капсулы

Таким образом, вам не потребуется устанавливать kubectl. Знак (–) означает, что команды предназначены для kubectl, а не Minikube.

Шаг 2. Создайте пространство имен
Второй шаг предполагает создание выделенного пространства имен для входного контроллера. Мы назвали пространство имен «haproxy-controller».

$ minikube kubectl создать пространство имен haproxy-контроллера

Шаг 3. Создайте и разверните контроллер входа HAProxy
Способ создания входного контроллера зависит от того, чего вы хотите достичь. Например, вы можете создать входной контроллер HAProxy для маршрутизации HTTP-трафика в зависимости от запрошенного имени хоста. В таком случае начните с доступа к вашему DNS-серверу и создания записи «A», чтобы сопоставить целевое имя хоста с вашим кластером.

Получив правильную запись «A», создайте YAML-файл входного контроллера, как показано на следующем изображении. В первом разделе мы создали ресурс развертывания, который использует в качестве примера образ контейнера Docker «jmalloc/echo-server».

Во втором разделе файла YAML мы создали ресурс службы, который сопоставляется на основе имени хоста, запрошенного во входном контроллере, созданном на шаге 4.

Сохраните файл и разверните его в своем кластере с помощью kubectl. Мы ссылаемся на Minikube kubectl, выполнив для нашего случая следующую команду. Наш входной контроллер HAProxy — «linuxhint-jmaildeployment.yaml».

$ миникубе кубектл -- применять < имя файла >

Как только вы получите вывод, показывающий, что служба создана, вы можете дополнительно убедиться, что она развернута, с помощью следующей команды:

$ миникубе кубектл -- получить капсулы --namespace хапрокси-контроллер

Убедитесь, что вы используете правильное пространство имен, созданное на шаге 1. Вы получите выходные данные, подтверждающие, что служба доступна, что означает, что развертывание прошло успешно.

Шаг 4. Создайте и разверните входящий ресурс
Создайте еще один файл YAML, который действует как входной ресурс и содержит правила того, как HAProxy должен маршрутизировать ваш трафик. Убедитесь, что вы используете правильное доменное имя (хост), на которое вы ориентируетесь, и настройте имя и желаемый порт для приема входящего трафика.

Сохраните входной файл ресурсов HAProxy и разверните его, как мы это делали с контроллером.

$ миникубе кубектл -- применять < имя файла >

Мы назовем наш входной ресурс «linuxhint-ingresscontroller.yaml».

Вот и все! С помощью следующей команды вы можете убедиться, что ваш входной контроллер HAProxy работает, проверив порт, назначенный NodePort.

$ миникубе кубектл -- получить сервис haproxy-kubernetes-ingress --namespace хапрокси-контроллер

В данном случае ему присвоен порт 32448. Вы можете получить доступ к созданному сервису, используя порт, и проверить его статус.

Благодаря этому вам удалось использовать HAProxy в качестве входного контроллера в среде Kubernetes.

Заключение

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