Доступно с ограничениями в редакциях CE, BE, SE, SE+, EE, CSE Lite (1.73), CSE Pro (1.73)

Стадия жизненного цикла модуля: General Availability
У модуля есть требования для установки

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

Внимание. Включение и отключение модуля имеет особенности. Читайте подробнее в документации по настройке модуля.

Явно включить или выключить модуль можно одним из следующих способов:

  • С помощью веб-интерфейса Deckhouse. В разделе «Система» → «Управление системой» → «Deckhouse» → «Модули», откройте модуль stronghold, включите (или выключите) переключатель «Модуль включен». Сохраните изменения.

    Пример:

    Интерфейс включения и выключения модуля
  • С помощью Deckhouse CLI (d8).

    Используйте команду d8 system module enable для включения модуля, или d8 system module disable для выключения модуля (требуется Deckhouse CLI (d8), настроенный на работу с кластером).

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

    d8 system module enable stronghold
  • С помощью ModuleConfig stronghold.

    Установите spec.enabled в true или false в ModuleConfig stronghold (создайте его, при необходимости).

    Пример манифеста для включения модуля stronghold:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: stronghold
    spec:
      enabled: true

Как настроить модуль…

Настроить модуль можно одним из следующих способов:

  • С помощью веб-интерфейса Deckhouse.

    В разделе «Система» → «Управление системой» → «Deckhouse» → «Модули», откройте модуль stronghold, включите переключатель «Дополнительные настройки». Заполните необходимые поля формы на вкладке «Конфигурация», или укажите настройки модуля в формате YAML на вкладке «YAML», не включая секцию settings. Сохраните изменения.

    Пример:

    Интерфейс настройки модуля

    Вы также можете отредактировать объект ModuleConfig stronghold на вкладке «YAML» в окне настроек модуля («Система» → «Управление системой» → «Deckhouse» → «Модули», откройте модуль stronghold), указав версию схемы в параметре spec.version и необходимые параметры модуля в секции spec.settings.

  • С помощью Deckhouse CLI (d8) (требуется Deckhouse CLI (d8), настроенный на работу с кластером).

    Отредактируйте существующий ModuleConfig stronghold (подробнее о настройке Deckhouse читайте в документации), выполнив следующую команду:

    d8 k edit mc stronghold

    Внесите необходимые изменения в секцию spec.settings. При необходимости укажите версию схемы в параметре spec.version. Сохраните изменения.

    Вы также можете создать файл манифеста ModuleConfig stronghold, используя пример ниже. Заполните секцию spec.settings необходимыми параметрами модуля. При необходимости укажите версию схемы в параметре spec.version.

    Примените манифест с помощью следующей команды (укажите имя файла манифеста):

    d8 k apply -f <FILENAME>

    Пример файла манифеста ModuleConfig stronghold:

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

Как сменить канал обновлений модуля…

Для смены канала обновлений модуля воспользуйтесь инструкцией.

Требования

К версии Deckhouse: 1.76 и выше.

Параметры

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

  • settings
    объект
    • settings.diskSizeGigabytes
      целочисленный

      Размер диска для хранилища или размер PVC при указании параметра storageClass.

      Для HA-конфигураций поддерживается автоматическое увеличение и уменьшение размера PVC.

      Для одноузловых конфигураций поддерживается только увеличение размера PVC.

      При изменении этого параметра убедитесь, что указанное значение будет достаточным для хранения данных Stronghold.

      Модуль extended-monitoring автоматически мониторит процент использования дискового пространства.

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

    • settings.enableAuditLog
      булевый

      Включает журнал аудита (функция доступна только в EE).

      Доступен только при management.mode: Automatic.

      Пример:

      enableAuditLog: true
      
    • settings.enableUserInterface
      булевый
      Включает пользовательский интерфейс.

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

      Пример:

      enableUserInterface: false
      
    • settings.gatewayAPIGateway
      объект

      Ссылка на объект Gateway (из Gateway API), используемый для Stronghold.

      Необязательный параметр. По умолчанию используется глобальное значение modules.gatewayAPIGateway.

      Пример:

      name: public
      namespace: d8-alb
      
      • settings.gatewayAPIGateway.name
        строка

        Обязательный параметр

        Имя объекта Gateway.
      • settings.gatewayAPIGateway.namespace
        строка

        Обязательный параметр

        Неймспейс объекта Gateway.
    • settings.https
      объект

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

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

      Примеры:

      customCertificate:
        secretName: stronghold-tls
      mode: CustomCertificate
      
      certManager:
        clusterIssuerName: letsencrypt
      mode: CertManager
      
      • settings.https.certManager
        объект
        • settings.https.certManager.clusterIssuerName
          строка

          ClusterIssuer, используемый для Stronghold.

          Доступны letsencrypt, letsencrypt-staging, selfsigned, но вы можете определить свои.

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

      • settings.https.customCertificate
        объект

        По умолчанию: {}

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

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

          Secret должен быть в формате TLS.

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

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

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

        • CertManager — Stronghold будет работать по HTTPS и заказывать сертификат с помощью ClusterIssuer, заданного в параметре certManager.clusterIssuerName;
        • CustomCertificate — Stronghold будет работать по HTTPS, используя сертификат из namespace d8-system;

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

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

    • settings.ingress
      объект
      • settings.ingress.class
        строка

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

        Устарел. Используйте settings.ingressClass.

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

        Пример:

        class: public
        
    • settings.ingressClass
      строка

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

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

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

      Пример:

      ingressClass: public
      
    • settings.inlet
      строка

      Способ реализации подключения к Stronghold.

      Поддерживаются следующие типы инлетов:

      • Ingress — доступ через контроллер ingress-nginx;
      • ALB — доступ через AWS Application Load Balancer;
      • LoadBalancer — доступ через сервис с типом LoadBalancer;
      • NodePort — доступ через порты узлов с помощью сервиса с типом NodePort;
      • None — нет стандартного инлета. Для случаев, когда не нужен доступ снаружи, либо ввод трафика организуется другими способами.

      При использовании LoadBalancer, NodePort или None параметр https.mode должен быть установлен в CustomCertificate.

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

      Допустимые значения: Ingress, GatewayAPI, LoadBalancer, NodePort, None

    • settings.license
      строка

      Лицензионный ключ Stronghold EE.

      Оставьте пустым, чтобы использовать Stronghold CE.

      По умолчанию: ‘’

    • settings.loadBalancer
      объект
      Секция настроек для инлета LoadBalancer.
      • settings.loadBalancer.annotations
        объект

        Аннотации, которые будут проставлены сервису для гибкой настройки балансировщика.

        Внимание. Модуль не учитывает особенности указания аннотаций в различных облаках. Если аннотации для заказа балансировщика применяются только при создании сервиса, для обновления подобных параметров вам необходимо будет выключить и включить модуль.

      • settings.loadBalancer.clusterPort
        целочисленный
        Порт для безопасного подключения по mTLS для межкластерной коммуникации.

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

        Допустимые значения: 1 <= X <= 65535

      • settings.loadBalancer.httpsPort
        целочисленный
        Внешний порт для безопасного подключения по HTTPS на балансировщике, создаваемом через сервис типа LoadBalancer.

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

        Допустимые значения: 1 <= X <= 65535

      • settings.loadBalancer.loadBalancerClass
        строка
        Класс балансировщика входящих сетевых запросов (пробрасывается в параметр spec.loadBalancerClass заказанного сервиса с типом LoadBalancer).
      • settings.loadBalancer.sourceRanges
        массив строк

        Список адресов в формате CIDR, которым разрешен доступ к балансировщику.

        Внимание. Облачный провайдер может не поддерживать данную опцию и игнорировать ее.

        • Провайдеры поддерживающие опцию: AWS, Azure, GCP.
        • Провайдеры игнорирующие опцию: Yandex Cloud.

        Для остальных облачных провайдеров поведение может зависеть от особенностей реализации облака. Протестируйте работу опции перед использованием в production-среде.

        • settings.loadBalancer.sourceRanges.Элемент массива
          строка

          Шаблон: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$

    • settings.management
      объект

      По умолчанию: {}

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

        Список пользователей и групп, которые могут получить доступ к Stronghold как администраторы. Другие аутентифицированные пользователи будут получать доступ к Stronghold с политикой по умолчанию.

        Доступен только при management.mode: Automatic.

        Пример:

        administrators:
        - name: admins
          type: Group
        - name: security
          type: Group
        - name: manager@mycompany.tld
          type: User
        
        • settings.management.administrators.name
          строка
        • settings.management.administrators.type
          строка

          Допустимые значения: Group, User

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

        Режим управления Stronghold:

        • Automatic — включает автоинициализацию и автораспечатывание Stronghold. Токен root сохраняется в Kubernetes-секрете stronghold-keys. Интеграции с Dex и Kubernetes настраиваются автоматически. Поды автоматически перезапускаются при изменении конфигурации.
        • Manual — автоматическая инициализация отключена. Интеграции с Dex и Kubernetes не настраиваются.

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

        Допустимые значения: Automatic, Manual

        Примеры:

        mode: Automatic
        
        mode: Manual
        
    • settings.nodePort
      объект
      Секция настроек для инлета NodePort.
      • settings.nodePort.clusterPort
        целочисленный

        Порт для безопасного подключения по mTLS для межкластерной коммуникации через NodePort.

        Должен быть из диапазона, заданного аргументом kube-apiserver --service-node-port-range (по умолчанию 30000-32767).

        Допустимые значения: 30000 <= X <= 32767

        Пример:

        clusterPort: 30201
        
      • settings.nodePort.httpsPort
        целочисленный

        Порт для безопасного подключения по HTTPS через NodePort.

        Должен быть из диапазона, заданного аргументом kube-apiserver --service-node-port-range (по умолчанию 30000-32767).

        Допустимые значения: 30000 <= X <= 32767

        Пример:

        httpsPort: 30200
        
    • settings.nodeSelector
      объект

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

      Если значение не указано или указано false, Stronghold будет размещаться на control-plane узлах.

      Пример:

      node-role.kubernetes.io/stronghold: ''
      
    • settings.plugins
      массив объектов
      Список плагинов для загрузки в Stronghold. Каждый плагин проверяется по контрольной сумме SHA256.

      Пример:

      plugins:
      - ignoreFailure: false
        name: vault-plugin-secrets-github
        sha256: 72cb1f2775ee2abf12ffb725e469d0377fe7bbb93cd7aaa6921c141eddecab87
        url: https://github.com/martinbaillie/vault-plugin-secrets-github/releases/download/v2.3.2/vault-plugin-secrets-github-linux-amd64
      
      • settings.plugins.ca
        строка
        PEM-сертификат(ы) CA для проверки HTTPS-сервера для URL этого плагина. Если задано, доверяется только этот CA (не системные).
      • settings.plugins.ignoreFailure
        булевый
        Если true, ошибка загрузки или проверки этого плагина не останавливает запуск Stronghold, но функционал плагина не будет доступен.

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

      • settings.plugins.insecureSkipVerify
        булевый
        Если true, сертификат TLS сервера для URL этого плагина не проверяется.

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

      • settings.plugins.name
        строка
        Имя файла плагина после загрузки.
      • settings.plugins.sha256
        строка
        Контрольная сумма SHA256 файла. Загрузка отклоняется, если сумма не совпадает. Это заблокирует запуск Stronghold, если не указан параметр ignoreFailure.

        Шаблон: ^[a-fA-F0-9]{64}$

      • settings.plugins.url
        строка
        URL для загрузки бинарного плагина (http или https, домен, путь и имя файла). Если файл не доступен, это заблокирует запуск Stronghold, если не указан параметр ignoreFailure.

        Шаблон: ^https?://[a-zA-Z0-9][-a-zA-Z0-9.]*[a-zA-Z0-9](/[^/]+)*/[^/.]+$

    • settings.publishCluster
      объект

      Параметры публикации кластера.

      Публикация кластера предоставляет возможность организовать Performance и DR Replication между различными кластерами Stronghold. Подробнее в Репликация (Performance и DR). Доступно только в EE-редакции.

      При включённой публикации для инлетов с типом Ingress или GatewayAPI потребуется указать clusterIDs которые вы хотите опубликовать. Вы можете опубликовать только Performance Replication кластер, или только DR Replication кластер, или оба кластера одновременно. Идентифитор соответствующей группы можно посмотреть через API Stronghold или в UI на странице репликации.

      При использовании инлета Ingress для публикации кластера требуется ingressClass с типом контроллера LoadBalancerWithSSLPassthrough или HostPortWithSSLPassthrough.

      • settings.publishCluster.clusterIDs
        массив строк

        Идентификаторы кластеров, для которых публикуется кластер Stronghold.

        Обязателен при включённой публикации кластера с инлетом Ingress или GatewayAPI. Не должен задаваться для инлетов NodePort и LoadBalancer.

        Пример:

        clusterIDs:
        - 89f7566d-ed2b-02c9-4616-f07e87d3799d
        
        • settings.publishCluster.clusterIDs.Элемент массива
          строка

          Шаблон: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$

      • settings.publishCluster.enabled
        булевый
        Включает публикацию кластера.

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

    • settings.storageClass
      строка

      Имя StorageClass, которое будет использоваться.

      По умолчанию Stronghold хранит данные в local storage на master-узлах.

      При изменении этого параметра будет произведен поэтапный перенос данных Stronghold на новый StorageClass если используется HA конфигурация Stronghold.

      Для одноузловых конфигураций Stronghold этот параметр учитывается только при первом запуске Stronghold.

      Если вам нужно изменить StorageClass в одноузловой конфигурации Stronghold, вы можете сделать это через backup/restore и отключение/включение модуля. В этом случае не забывайте сохранить ключи распечатки (unseal keys), как это описано в документации.

      При изменении этого параметра убедитесь, что значение, указанное в diskSizeGigabytes, будет достаточным для хранения данных Stronghold.

      По умолчанию: ‘’

      Примеры:

      storageClass: ssd
      
      storageClass: ceph-rbd
      
    • settings.tolerations
      массив объектов

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

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

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