Модуль stronghold переключается с базового Stronghold на Stronghold EE указанием лицензионного ключа в параметре spec.settings.license ресурса ModuleConfig stronghold. Переустанавливать модуль и переносить данные не требуется: секреты, политики, механизмы секретов и настроенные методы аутентификации сохраняются.

Stronghold EE лицензируется отдельно и доступен для использования только в коммерческих редакциях DKP. В DKP CE переключение на Stronghold EE невозможно. Подробнее — в разделе «Редакции».

После применения лицензионного ключа поды stronghold-* пересоздаются на образе Stronghold EE по очереди, поэтому доступность сервиса остаётся прежней. Тем не менее выполняйте переключение строго в окне обслуживания.

Перед переключением

  1. Убедитесь, что в кластере используется коммерческая редакция DKP:

    d8 k -n d8-system get configmap d8-deckhouse-version-info -o jsonpath='{.data.data\.json}'

    В json объекте должна быть указана редакция, отличная от CE. Пример вывода:

    { "channel":"Stable", "version":"v1.72.5", "edition":"EE" }
    

    Также редакцию и версию DKP можно посмотреть в веб-интерфейсе Deckhouse на главной странице панели управления кластером (https://console.<CLUSTER_DOMAIN>).

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

  2. Убедитесь, что модуль stronghold включён и находится в рабочем состоянии:

    d8 k get module stronghold
    d8 k get moduleconfig stronghold -o yaml

    Проверьте, что:

    • для модуля stronghold значения Enabled и Ready равны True;
    • объект ModuleConfig stronghold существует.
  3. Сохраните unseal-ключи и root-токен в защищённое хранилище:

    d8 k -n d8-stronghold get secret stronghold-keys -o yaml > stronghold-keys.yaml
    chmod 600 stronghold-keys.yaml
  4. Создайте снимок хранилища:

    export STRONGHOLD_ADDR=https://$(d8 k -n d8-stronghold get ing stronghold -o json | jq -r '.spec.rules[0].host')
    d8 stronghold login -method=oidc -path=oidc_deckhouse
    # Либо через root-токен:
    ## d8 stronghold login -method=token
    d8 stronghold operator raft snapshot save stronghold-$(date +%F_%H-%M).snap

    Проверить снимок можно с помощью команды:

    ls -lh ./stronghold-*.snap

    Полученные файлы храните за пределами кластера DKP.

Указание лицензионного ключа

  1. Получите лицензионный ключ Stronghold EE у поставщика продукта.

  2. Добавьте ключ в параметр spec.settings.license ресурса ModuleConfig stronghold:

    d8 k patch moduleconfig stronghold --type merge --patch '{"spec":{"version":1,"settings":{"license":"<STRONGHOLD_EE_LICENSE_KEY>"}}}'

    Тот же результат можно получить, отредактировав ModuleConfig командой d8 k edit mc stronghold. Пример итогового манифеста:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: stronghold
    spec:
      enabled: true
      version: 1
      settings:
        license: <STRONGHOLD_EE_LICENSE_KEY>
        management:
          mode: Automatic
          administrators:
          - type: Group
            name: admins

    Лицензионный ключ хранится в ModuleConfig в открытом виде. При необходимости ограничьте доступ к ресурсу средствами ролевой модели.

  3. Дождитесь пересоздания подов Stronghold:

    d8 k -n d8-stronghold get po -w

Проверка переключения

  1. Убедитесь, что ключ сохранился в конфигурации модуля:

    d8 k get moduleconfig stronghold -o jsonpath='{.spec.settings.license}'
  2. Проверьте поды stronghold:

    d8 k -n d8-stronghold get po

    Проверьте, что:

    • отсутствуют состояния ImagePullBackOff, ErrImagePull, CrashLoopBackOff;
    • поды stronghold-* находятся в состоянии Running и имеют готовность 2/2.
  3. Проверьте редакцию в стартовых строках баннера:

    d8 k -n d8-stronghold logs stronghold-0 | head -20

    В выводе должна быть указана версия с суффиксом ee. Например:

    Version: Stronghold v1.19.0+ee
    
  4. Убедитесь, что хранилище разблокировано:

    export STRONGHOLD_ADDR=https://$(d8 k -n d8-stronghold get ing stronghold -o json | jq -r '.spec.rules[0].host')
    d8 stronghold status

    В выводе значение Sealed должно быть равно false.

После переключения станут доступны возможности Stronghold EE: журнал аудита, пространства имён, репликация между кластерами, автоматические снимки, Managed Keys, управление ролями и политиками доступа через веб-интерфейс. Полный перечень отличий — в разделе «Редакции».

Возврат к базовому Stronghold CE

После удаления лицензионного ключа возможности Stronghold EE перестанут работать. Заранее отключите их использование, иначе модуль может не запуститься. В частности, установите enableAuditLog: false, остановите репликацию между кластерами и удалите созданные пространства имён.

  1. Удалите параметр spec.settings.license целиком:

    d8 k patch moduleconfig stronghold --type json --patch '[{"op":"remove","path":"/spec/settings/license"}]'
  2. Дождитесь пересоздания подов и убедитесь, что в баннере указана версия без суффикса ee:

    d8 k -n d8-stronghold logs stronghold-0 | head -20

Дополнительные ресурсы