Модуль поиска узлов с запущенными hostport сервисами (shturval-coreha)

О сервисе

Параметр Значение
Название в интерфейсе Модуль поиска узлов с запущенными hostport сервисами
Системное название (идентификатор) shturval-coreha
Назначение в кластере Динамическое добавление бэкендов в HAProxy: отслеживание подов Ingress с hostPort и формирование DNS-записей для балансировщика.
Критический Нет
Публичный репозиторий — (компонент в поставке платформы «Штурвал»)
Зависимости shturval-ingress-controller
Неймспейс kube-system

Назначение

shturval-coreha предназначен для динамического добавления бэкендов во внешний балансировщик (HAProxy). Сервис нужен, если вы используете внешний балансировщик для Ingress. По умолчанию устанавливается в кластер в отключённом состоянии. Для включения: Сервисы и репозиторииУстановленные сервисы → найдите сервис по названию выше и измените режим. Если сервиса нет в списке — установите его с страницы Доступные чарты (чарт shturval-coreha), выбрав неймспейс kube-system.

Обратите внимание! при настройке поиска подов Ingress Controller потребуется также внести изменения в Модуль управления внешними подключениями (shturval-ingress-controller).

Где настраивать

Сервисы и репозиторииУстановленные сервисы → найдите Модуль поиска узлов с запущенными hostport сервисами (shturval-coreha) → Управлять. При необходимости переопределения параметров чарта, примените изменения через ShturvalServicePatch.

Параметры конфигурации (customvalues)

Параметр Описание Пример / по умолчанию
config.zoneName Имя DNS-зоны для записей cluster-prod01-dc1.shturval
config.labelKey Ключ лейбла, по которому отслеживаются поды; значение ключа участвует в формировании DNS-имени ingress.cluster/name
config.dns_port Порт DNS-сервера модуля 1053
config_name Имя конфигурационного файла CoreDNS shturval-coreha-config
strictHostPort Строгая выборка подов с hostPort false
Пример customvalues для shturval-coreha
config:
  zoneName: cluster-prod01-dc1.shturval

Связка с Ingress и HAProxy

Когда в кластере работает shturval-coreha и нужно настроить поиск подов Ingress Controller:

  1. ShturvalServicePatch для shturval-ingress-controller — задайте лейбл ingress.cluster/name и при необходимости включите hostPort, NodePort (например, 30080/30443).
Пример ShturvalServicePatch для ingress-controller
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
  name: <имя ресурса>
spec:
  shturvalServiceConfigName: shturval-ingress-controller
  customvalues:
    controller:
      labels:
        ingress.cluster/name: <ваше значение параметра>
      hostPort:
        enabled: true # При включении поды ингресс контроллера также будут использовать на узлах кластера 80 и 443 порты
      service:
        nodePorts:
          http: "<ваше значение параметра>"
          https: "<ваше значение параметра>"
        type: NodePort

DNS-запись формируется как <label_value>.<namespace>.<config.zoneName> (например, default-nginx.ingress.cluster-prod01-dc1.shturval).

  1. Загрузите ShturvalServicePatch в кластер (импорт манифестов или kubectl).
Скриншот ShturvalServicePatch для ingress-controller

ShturvalServicePatch для связки shturval-coreha и Ingress Controller

  1. Настройте HAProxy — используйте resolver с указанием на API-сервер кластера и порт DNS (например, 1053), backend с server-template по DNS-имени.
Пример фрагмента конфигурации HAProxy
resolvers coredns-cluster
    nameserver ns1 <api-server-vip>:1053
    accepted_payload_size 8192

backend cluster-prod01-dc1-ingress-http
    balance source
    mode tcp
    server-template daemonset 2 default-nginx.ingress.cluster-prod01-dc1.shturval:80 check resolvers coredns-cluster init-addr none
  1. Проверка — с узла с доступом к API-серверу кластера: dig @<api-server-vip> -p 1053 default-nginx.ingress.cluster-prod01-dc1.shturval (должны вернуться IP подов Ingress).

Как развернуть этот сервис — Как развернуть новый сервис.