CoreHA

shturval-coreha - helm-чарт для сервиса CoreDNS для динамического добавления бэкендов в HAProxy. Сервис необходим, если вы используете внешний балансировщик для Ingress. По умолчанию сервис устанавливается в клиентские кластеры в отключенном состоянии. Для включения перейдите на страницу “Установленные сервисы” раздела “Сервисы и репозитории”, найдите “Модуль поиска узлов с запущенными hostport сервисами” и измените значение переключателя.

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

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

Обратите внимание! Конфигурация CoreHA дополнительно требует изменения спецификации модуля управления внешними подключениями (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
config:
  zoneName: <ваше значение параметра>

Спецификация модуля управления внешними подключениями

В графическом интерфейсе кластера в боковом меню откройте раздел Сервисы и репозитории и перейдите на страницу Установленные сервисы, найдите модуль управления внешними подключениями (shturval-ingress-controller).

В блоке “Спецификация сервиса” пропишите лейбл с ключом ingress.cluster/name.

Пример customvalues
controller:
  labels:
    ingress.cluster/name: <ваше значение параметра>
  hostPort:
    enabled: true
  service:
    nodePorts:
      http: <ваше значение параметра>
      https: <ваше значение параметра>
    type: NodePort
ПараметрОписаниеТип данныхПример
ingress.cluster/nameЗначение лейбла для использования при формировании DNS имениstringdefault-nginx
nodePorts.httpПорт для подключения по HTTPint30080
nodePorts.httpsПорт для подключения по HTTPSint30443

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

Пример конфигурации 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>:30080 check resolvers coredns-cluster init-addr none

haproxy (в примере отсутствует секция frontend и backend для 443 порта)

resolvers coreha-cluster-prod01-dc1
    nameserver ns1 api.cluster-prod01-dc1.shturval:1053
    accepted_payload_size 8192

backend ingress-http-cluster-prod01-dc1
    balance source
    mode tcp
    server-template ingress 2 default-nginx.ingress.cluster-prod01-dc1.shturval:30080 check resolvers coreha-cluster-prod01-dc1 init-addr none 

Чтобы проверить корректность настроек сервиса coreha, можно c балансировщика воспользоваться командой dig:

Команда
dig @api.cluster-prod01-dc1.shturval -p 1053 default-nginx.ingress.cluster-prod01-dc1.shturval
Пример вывода команды
;; 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

После завершения настроек Ingress контроллер будет работать на портах узла 30080/30443.