Предварительная версия. Функциональность может измениться, но основные возможности сохранятся. Совместимость с будущими версиями может потребовать ручных действий по миграции.

Настройка работы Git SSH через порт 22

По умолчанию в кластере Deckhouse используется встроенный Ingress-контроллер — d8-ingress-nginx. Этот контроллер предоставляет доступ к веб-интерфейсу (UI) через стандартные порты HTTP (80) и HTTPS (443). Однако d8-ingress-nginx не поддерживает проксирование TCP-портов.

Для проксирования внешнего TCP-трафика через порт 22 (Git SSH) предусмотрена специальная опция в конфигурации модуля. При её использовании разворачивается Haproxy с сервисом типа LoadBalancer. Haproxy перенаправляет трафик с порта 22 на соответствующий Git SSH Pod. Порты 80 и 443 продолжают обрабатываться d8-ingress-nginx, где происходит терминация TLS-трафика.

Особенности использования опции useOwnLoadBalancer

  1. Отдельный IP-адрес: При активации опции useOwnLoadBalancer для модуля Code выделяется отдельный IP-адрес, отличный от основного IP-адреса Deckhouse. Для этого адреса необходимо создать отдельную DNS-запись. По этой DNS-записи будут доступны:

    • Веб-интерфейс (UI) на портах 80 и 443.
    • Git SSH на порту 22.
  2. Игнорирование параметров: При включении опции useOwnLoadBalancer следующие параметры игнорируются:

    • spec.instanceSpec.network.gitSsh.hostname
    • spec.instanceSpec.network.gitSsh.service.type
    • spec.instanceSpec.network.gitSsh.service.nodePort

    Вместо этого сервис shell получает тип LoadBalancer, а Git SSH становится доступным по тому же домену, что и веб-сервис.

Пример конфигурации

Ниже приведён пример добавления Haproxy для проксирования Git SSH внутри ModuleConfig:

apiVersion: deckhouse.io/v1
kind: CodeInstance
metadata:
  name: code
spec:
...
  network:
    useOwnLoadBalancer: true
...

Схема работы Haproxy

Haproxy внутри кластера Deckhouse работает по следующей схеме: