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

Внимание! Убедитесь что 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

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

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