Модуль не включен по умолчанию в каком-либо наборе модулей.

Как явно включить или отключить модуль…

Чтобы явно включить или выключить модуль cilium-hubble, установите spec.enabled в true или false в ModuleConfig/cilium-hubble (создайте, при необходимости), или воспользуйтесь командой deckhouse-controller module в поде d8-system/deckhouse.

Пример включения модуля:

  • с помощью ресурса ModuleConfig:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: cilium-hubble
    spec:
      enabled: true
    
  • с помощью команды deckhouse-controller (требуется kubectl, настроенный на работу с кластером):

    kubectl -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module enable cilium-hubble
    

Пример выключения модуля:

  • с помощью ресурса ModuleConfig:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: cilium-hubble
    spec:
      enabled: false
    
  • с помощью команды deckhouse-controller (требуется kubectl, настроенный на работу с кластером):

    kubectl -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module disable cilium-hubble
    

Модуль останется отключенным вне зависимости от параметра ciliumHubbleEnabled:, если не включен модуль cni-cilium.

Чтобы настроить модуль, используйте ресурс ModuleConfig с именем cilium-hubble (подробнее о настройке Deckhouse…).

Пример ресурса ModuleConfig/cilium-hubble для настройки модуля:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: cilium-hubble
spec:
  version: 2
  enabled: true
  settings: # <-- Параметры модуля из раздела "Параметры" ниже.

Параметры

Версия схемы: 2

  • settings
    объект
    • settings.auth
      объект

      Опции, связанные с аутентификацией и авторизацией доступа к веб-интерфейсу Hubble.

      • settings.auth.allowedUserGroups
        массив строк

        Список групп, пользователям которых разрешен доступ к веб-интерфейсу Hubble.

        Используется, если включен модуль user-authn или задан параметр externalAuthentication.

      • settings.auth.externalAuthentication
        объект

        Параметры для подключения внешней аутентификации (используется механизм NGINX Ingress external-auth, работающий на основе модуля Nginx auth_request.

        Внешняя аутентификация включается автоматически, если включен модуль user-authn.

        • settings.auth.externalAuthentication.authSignInURL
          строка

          URL, куда будет перенаправлен пользователь для прохождения аутентификации (если сервис аутентификации вернул код ответа HTTP, отличный от 200).

          Пример:

          authSignInURL: https://example.com/dex/sign_in
          
        • settings.auth.externalAuthentication.authURL
          строка

          URL сервиса аутентификации.

          Если пользователь прошел аутентификацию, сервис должен возвращать код ответа HTTP 200.

          Пример:

          authURL: https://example.com/dex/auth
          
      • settings.auth.whitelistSourceRanges
        массив строк

        Список адресов (CIDR), которым разрешен доступ к веб-интерфейсу Hubble.

        Пример:

        whitelistSourceRanges:
        - 1.1.1.1/32
        
    • settings.debugLogging
      булевый

      Включает отладочный уровень логирования для компонентов Hubble.

      По умолчанию: false

    • settings.https
      объект

      Тип используемого сертификата.

      При использовании этого параметра полностью переопределяются глобальные настройки global.modules.https.

      Примеры:

      https:
        mode: Disabled
      
      https:
        mode: OnlyInURI
      
      https:
        mode: CustomCertificate
        customCertificate:
          secretName: foobar
      
      https:
        mode: CertManager
        certManager:
          clusterIssuerName: letsencrypt
      
      • settings.https.certManager
        объект

        Настройки для certmanager.

        • settings.https.certManager.clusterIssuerName
          строка

          Тип ClusterIssuer’а, используемого для заказа SSL-сертификата (в данный момент доступны letsencrypt, letsencrypt-staging, selfsigned, но возможно определить свои).

          По умолчанию: "letsencrypt"

          Примеры:

          clusterIssuerName: letsencrypt
          
          clusterIssuerName: letsencrypt-staging
          
          clusterIssuerName: selfsigned
          
      • settings.https.customCertificate
        объект

        Настройки для использования пользовательского сертификата.

        • settings.https.customCertificate.secretName
          строка

          Имя Secret’а в пространстве имен d8-system, который будет использоваться для веб-интерфейса Hubble.

          Secret должен быть в формате kubernetes.io/tls.

      • settings.https.mode
        строка

        Режимы работы HTTPS:

        • CertManager — доступ по HTTPS с заказом сертификата согласно ClusterIssuer’у, заданному в параметре certManager.clusterIssuerName.
        • CustomCertificate — доступ по HTTPS с использованием сертификата из пространства имен d8-system.
        • Disabled — доступ только по HTTP.
        • OnlyInURI — доступ по HTTP, подразумевая, что перед веб-интерфейсом стоит внешний HTTPS-балансер, который терминирует HTTPS и все ссылки в user-authn будут генерироваться с HTTPS-схемой. Балансировщик должен обеспечивать перенаправление с HTTP на HTTPS.

        По умолчанию: "CertManager"

        Допустимые значения: Disabled, CertManager, CustomCertificate, OnlyInURI

    • settings.ingressClass
      строка

      Класс Ingress-контроллера, который используется для Hubble.

      Опциональный параметр, по умолчанию используется глобальное значение modules.ingressClass.

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$

    • settings.nodeSelector
      объект

      Структура, аналогичная spec.nodeSelector пода Kubernetes.

      Если значение не указано или указано false, будет использоваться автоматика.

    • settings.tolerations
      массив объектов

      Структура, аналогичная spec.tolerations пода Kubernetes.

      Если значение не указано или указано false, будет использоваться автоматика.

      • settings.tolerations.effect
        строка
      • settings.tolerations.key
        строка
      • settings.tolerations.operator
        строка
      • settings.tolerations.tolerationSeconds
        целочисленный
      • settings.tolerations.value
        строка

Аутентификация

По умолчанию используется модуль user-authn. Также можно настроить аутентификацию через externalAuthentication (см. ниже). Если эти варианты отключены, модуль включит basic auth со сгенерированным паролем.

Посмотреть сгенерированный пароль можно командой:

kubectl -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module values cilium-hubble -o json | jq '.ciliumHubble.internal.auth.password'

Чтобы сгенерировать новый пароль, нужно удалить Secret:

kubectl -n d8-cni-cilium delete secret/hubble-basic-auth

Внимание! Параметр auth.password больше не поддерживается.