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

Модуль поиска узлов с запущенными hostport сервисами (shturval-coreha) предназначен для динамического добавления бэкендов в HAProxy. Сервис необходим, если вы используете внешний балансировщик для Ingress.

Модуль не является критически важным для работы платформы, по умолчанию он устанавливается в кластеры в отключенном состоянии. Для включения перейдите в раздел Сервисы и репозитории и откройте страницу Установленные сервисы. Найдите Модуль поиска узлов с запущенными hostport сервисами и измените значение переключателя.

Если в кластере такой сервис отсутствует, перейдите в раздел Сервисы и репозитории и откройте страницу Доступные чарты. На вкладке shturval выберите чарт shturval-corehaи нажмите Установить.

Выберите необходимую версию чарта, а также неймспейс kube-system. После выбора версии чарта в правой части экрана отобразятся доступные “Параметры конфигурации для сервиса” (values). Пропишите в блоке “Спецификация сервиса” необходимые параметры в качестве customvalues.

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

Конфигурация helm chart shturval-coreha

Параметр Описание Пример
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 при установке helm chart
config:
  zoneName: <ваше значение параметра>
Параметр Описание Тип данных Пример
config.zoneName Имя dns-зоны string cluster-prod01-dc1.shturval

Изменения в модуле управления внешними подключениями

Когда необходимо настроить поиск подов Ingress Controller и в кластере работает Модуль поиска узлов с запущенными hostport сервисами (shturval-coreha), настройте Модуль управления внешними подключениями:

  1. Подготовьте ShturvalServicePatch для применения к спецификации (ssc) Модуля управления внешними подключениями (shturval-ingress-controller), где пропишите лейбл с ключом ingress.cluster/name в customvalues, как в примере ниже.
Пример ShturvalServicePatch
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
Параметр Описание Тип данных Пример
metadata.name Имя ShturvalServicePatch string shturval-ingress-coreha
ingress.cluster/name Значение лейбла для использования при формировании DNS имени * string default-nginx
nodePorts.http Порт для подключения по HTTP int 30080
nodePorts.https Порт для подключения по HTTPS int 30443

*Сама DNS запись будет выглядеть как <label_value>.<namespace>.<config.zoneName>, где namespace - это неймспейс подов (ingress), которые необходимо отслеживать. Пример DNS записи: default-nginx.ingress.cluster-prod01-dc1.shturval.

  1. В кластер загрузите с помощью импорта манифестов подготовленный ShturvalServicePatch.
Скриншот

corehapatch

Когда ShturvalServicePatch будет загружен, потребуется время для применения конфигурации. После завершения настроек Ingress контроллер будет работать на портах узла 30080/30443 и портах 80/443.

  1. Настройте конфигурацию HAProxy, как в приведенном примере ниже, используя свои значения параметров.
Пример конфигурации HAProxy
resolvers coredns-cluster
    nameserver ns1 <api-server-vip>:<config.dns_port>
    accepted_payload_size 8192

backend cluster-prod01-dc1-ingress-http
    balance source
    mode tcp
    server-template daemonset 2 <label_value>.<namespace>.<config.zoneName>:80 check resolvers coredns-cluster init-addr none
Параметр Описание Пример
api-server-vip Адрес API-сервера кластера 10.12.13.14
config.dns_port Порт DNS-сервера 1053
label_value Значение лейбла с ключом ingress.cluster/name в примененном ShturvalServicePatch default-nginx
namespace Неймспейс подов (ingress), которые необходимо отслеживать ingress
config.zoneName Значение параметра config.zoneName в спецификации (ssc) Модуля поиска узлов с запущенными hostport сервисами shturval-coreha cluster-prod01-dc1.shturval

Обратите внимание! В примере отсутствует секция frontend и backend для 443 порта.

  1. Чтобы проверить корректность настроек shturval-coreha, можно c балансировщика воспользоваться командой dig, использовав свои значения параметров.
Пример команды
dig @<api-server-vip> -p 1053 <label_value>.<namespace>.<config.zoneName>
Параметр Описание Пример
api-server-vip Адрес API-сервера кластера 10.12.13.14
config.zoneName Значение параметра config.zoneName в спецификации (ssc) Модуля поиска узлов с запущенными hostport сервисами shturval-coreha cluster-prod01-dc1.shturval
label_value Значение лейбла с ключом ingress.cluster/name в примененном ShturvalServicePatch default-nginx
namespace Неймспейс подов (ingress), которые необходимо отслеживать ingress
Пример вывода команды
;; ANSWER SECTION:
default-nginx.ingress.cluster-prod01-dc1.shturval. 15 IN A  172.18.104.93
default-nginx.ingress.cluster-prod01-dc1.shturval. 15 IN A  172.18.104.92
×