Модуль поиска узлов с запущенными 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), настройте Модуль управления внешними подключениями:
- Подготовьте 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.
- В кластер загрузите с помощью импорта манифестов подготовленный ShturvalServicePatch.
Скриншот

Когда ShturvalServicePatch будет загружен, потребуется время для применения конфигурации. После завершения настроек Ingress контроллер будет работать на портах узла 30080/30443 и портах 80/443.
- Настройте конфигурацию 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 порта.
- Чтобы проверить корректность настроек
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