Как переопределить режим по умолчанию в контроллере входа HAProxy

#kubernetes #kubernetes-ingress #haproxy #kubernetes-networking #haproxy-ingress

Вопрос:

Я использую контроллер входа HAProxy в своей настройке EKS Kubernetes.

Недавно я попытался настроить экземпляр Redis на своем k8s.

Когда я попытался подключиться и выполнить любую команду из-за пределов кластера, я получил следующую ошибку:

 ❱❱❱ redis-cli -h redis-ingress.local  -p 80 info 
Error: Protocol error, got "H" as reply type byte
 

При дальнейшей отладке я обнаружил проблему, в которой необходимо запустить HAProxy TCP mode , и она не работает , так как установлен режим по умолчанию HTTP .

Чтобы решить эту проблему, я добавил в свой Redis-сервис следующую аннотацию, которая должна была решить проблему, но этого не произошло. Я все еще продолжаю получать ту же ошибку.

 annotations:
    haproxy.org/backend-config-snippet: |
      mode tcp
 

Я вошел в один из контейнеров HAProxy, чтобы проверить используемую конфигурацию, и обнаружил следующий блок:

 backend redis-service-redis 
  mode http
  balance roundrobin
  option forwardfor
  ###_config-snippet_### BEGIN
  mode tcp
  ###_config-snippet_### END
  server SRV_1 172.19.51.245:6379 check weight 128
  server SRV_2 127.0.0.1:6379 disabled check weight 128
 

Как я вижу, конфигурация из аннотации применяется, но она не перезаписывается mode .

У меня есть несколько вопросов

  • Как перезаписать HTTP или каков бы ни был глобальный режим, установленный для конкретного бэкенда/службы?
  • Если оба mode они указаны в backend (как в приведенном выше случае), какой из них отдает предпочтение?