CoreHA
shturval-coreha - helm-чарт для сервиса CoreDNS для динамического добавления бэкендов в HAProxy. Сервис необходим, если вы используете внешний балансировщик для Ingress. По умолчанию сервис устанавливается в клиентские кластеры в отключенном состоянии. Для включения перейдите на страницу “Установленные сервисы” раздела “Сервисы и репозитории”, найдите “Модуль поиска узлов с запущенными hostport сервисами” и измените значение переключателя.
Если в кластере такой сервис отсутствует, перейдите на страницу “Доступные чарты” раздела “Сервисы и репозитории”. На вкладке “shturval” выберите чарт shturval-coreha
и нажмите “Установить”.
Выберите необходимую версию чарта, а также неймспейс kube-system
. После выбора версии чарта в правой части экрана отобразятся доступные “Параметры конфигурации для сервиса” (values). Пропишите в блоке “Спецификация сервиса” необходимые параметры в качестве custom values.
Обратите внимание! Конфигурация 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 |
Пример использования
values для helm чарта:
config:
zoneName: cluster-prod01-dc1.shturval
Спецификация модуля управления внешними подключениями
В разделе “Сервисы и репозитории” найдите модуль управления внешними подключениями (shturval-ingress-controller).
В блоке “Спецификация сервиса” пропишите лейбл с ключом ingress.cluster/name
. Значение лейбла, например, default-nginx
будет использоваться при формировании DNS имени.
controller:
labels:
ingress.cluster/name: default-nginx
Сама запись будет выглядеть как <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>:80 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:80 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