Предварительная версия. Функциональность может измениться, но основные возможности сохранятся. Совместимость с будущими версиями может потребовать ручных действий по миграции.
Настройка работы 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
-
Отдельный IP-адрес: При активации опции
useOwnLoadBalancer
для модуля Code выделяется отдельный IP-адрес, отличный от основного IP-адреса Deckhouse. Для этого адреса необходимо создать отдельную DNS-запись. По этой DNS-записи будут доступны:- Веб-интерфейс (UI) на портах 80 и 443.
- Git SSH на порту 22.
-
Игнорирование параметров: При включении опции
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 работает по следующей схеме: