Предварительная версия. Функциональность может измениться, но основные возможности сохранятся. Совместимость с будущими версиями может потребовать ручных действий по миграции.
Внимание! Убедитесь что cert-manager issuer и модуль используют один и тот же Ingress class когда вносите изменения в сетевую конфигурацию модуля
Настройка работы 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-трафика.
Само подписные сертификаты (сертификаты выпущенные внутренним УЦ)
Чтобы использовать само подписные сертификаты в различных подключениях (HTTPS, rediss, SMTPS и т.д.), создайте secret или configmap в пространстве d8-code
с необходимыми сертификатами и объявите в CR:
...
spec:
network:
certificates:
customCAs:
- secret: custom-tls-ca
keys:
- ca.crt
- tls.crt
- secret: more-custom-CAs
keys:
- custom-ca-1.crt
- configMap: custom-CA-cm
- configMap: more-custom-CAs-cm
keys:
- custom-ca-2.crt
- custom-ca-3.crt
...
Особенности использования опции ownLoadBalancer
Внимание! ownLoadBalancer НЕ ПОДДЕРЖИВАЕТ следующие режимы:
HostPort
,HostPortWithSSLPassthrough
,HostPortWithProxyProtocol
иHostWithFailover
-
Отдельный IP-адрес: При активации опции
ownLoadBalancer.enabled
для модуля Code выделяется отдельный IP-адрес, отличный от основного IP-адреса Deckhouse. Для этого адреса необходимо создать отдельную DNS-запись. По этой DNS-записи будут доступны:- Веб-интерфейс (UI) на портах 80 и 443.
- Git SSH на порту 22.
-
Игнорирование параметров: При включении опции
ownLoadBalancer.enabled
следующие параметры игнорируются:spec.network.gitSsh.hostname
spec.network.gitSsh.service.type
spec.network.gitSsh.service.nodePort
Вместо этого сервис
shell
получает типLoadBalancer
, а Git SSH становится доступным по тому же домену, что и веб-сервис.
Пример конфигурации
Ниже приведён пример добавления Haproxy для проксирования Git SSH внутри ModuleConfig:
apiVersion: deckhouse.io/v1
kind: CodeInstance
metadata:
name: code
spec:
...
network:
ownLoadBalancer:
enable: true
...
Схема работы Haproxy
Haproxy внутри кластера Deckhouse работает по следующей схеме: