Установка сервиса лицензий
1. Перед установкой
-
Ознакомьтесь с основной информацией:
-
Убедитесь, что выполнены необходимые предварительные шаги:
-
Соберите необходимые данные, заданные или полученные на предыдущих шагах:
Объект Значение Как получить значение Ключ лицензии на программный комплекс 2ГИС DEMO-KEY-DGCTL-AAAAAA-BBBBBB
См. Подготовка к установке Эндпоинт S3-совместимого хранилища артефактов установки artifacts.storage.local
См. Получение артефактов установки Имя бакета для хранения артефактов dgctl-store
См. Получение артефактов установки Идентификатор ключа для доступа к артефактам установки AKIAIOSFODNN7EXAMPLE
См. Получение артефактов установки Секрет ключа для доступа к артефактам установки wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY
См. Получение артефактов установки Реестр Docker для хранения образов сервисов http://docker.registry.local:5000
См. Получение артефактов установки Имя пользователя для реестра Docker registry
См. Получение артефактов установки Пароль для реестра Docker DOCKERregistryP@ssW0rd
См. Получение артефактов установки -
Убедитесь, что удовлетворены требования к ресурсам, приведенные в Helm-чарте. Подробнее о том, как это сделать, смотрите в документе Системные требования.
2. Установите сервис лицензий
Для установки сервиса лицензий используется Helm-чарт. Описание всех параметров представлено в values.yaml.
Чтобы установить сервис лицензий:
-
Создайте конфигурационный файл
values-license.yaml
:values-license.yaml
dgctlDockerRegistry: '' dgctlStorage: host: artifacts.example.com secure: false bucket: onpremise-artifacts accessKey: AKIAIOSFODNN7EXAMPLE secretKey: wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY license: type: '' updatePeriod: 1h retryPeriod: 30s softBlockPeriod: 2w ingress: enabled: true className: nginx hosts: - host: license.example.com paths: - path: / pathType: Prefix tls: [] #- hosts: # - license.example.com # secretName: secret.tls persistence: type: s3 s3: host: artifacts.example.com bucket: onpremise-artifacts root: 'license_state' accessKey: AKIAIOSFODNN7EXAMPLE secretKey: wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY fs: storage: 10Mi storageClassName: '' tpm: securityContext: {} mountTPMDevice: false pvcBind: enable: false storageClassName: '' resources: limits: DOMAIN/tpmrm: 1 affinity: {}
Где:
-
dgctlDockerRegistry
: эндпоинт вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС. Пример:HOST:PORT
. -
dgctlStorage
: настройки хранилища артефактов установки.- Укажите общие настройки для доступа к хранилищу: endpoint, имя бакета и реквизиты для доступа.
secure
: использовать ли HTTPS для работы с S3-совместимым хранилищем. Значение по умолчанию:false
.
-
license
: настройки сервиса лицензий.type
: тип лицензии. Скопируйте цифровое значение из файлаvalues/general.yaml
, который генерируется автоматически на этапе загрузки артефактов установки. Не изменяйте это значение вручную.updatePeriod
: как часто проверять наличие лицензии. Значение в формате 'time.ParseDuration'.retryPeriod
: через какой период времени повторить проверку лицензии, если предыдущая проверка не удалась.softBlockPeriod
: за какой период времени появляется уведомление об истечении срока лицензии. Поддерживаются дополнительные единицы измерения времени:d
для дней иw
для недель.
-
ingress
: конфигурация ресурса Ingress. При необходимости адаптируйте приведённую конфигурацию для соответствия используемому вами Ingress. -
persistence
: настройки хранилища для состояний сервиса лицензий. В зависимости от выбранного типа хранилища используйте один из следующих блоков настроек:-
type: s3
: использовать S3-совместимое хранилище (значение по умолчанию).host
: адрес endpoint в форматеhost:port
.bucket
: имя S3-бакета.root
: корневая директория S3-бакета, в которой будут храниться файлы состояния.accessKey
: ключ доступа к S3-бакету.secretKey
: секретный ключ доступа к S3-бакету.
-
type: fs
: использовать Kubernetes Persistent Volume.storage
: объём хранилища, не менее 10Mi.storageClassName
: имя класса хранения (StorageClass) в Kubernetes.
Важно:
При потере указанных данных текущая лицензия перестанет работать. Обратитесь в службу поддержки On-Premise для получения новой лицензии.
-
-
tmp
: настройки для доступа к Trusted Platform Module (TPM). Только для типа лицензии 2 (license.type: 2
).-
mountTPMDevice
: способ предоставления доступа к TPM:-
true
: монтировать TPM внутрь пода Kubernetes. Если вы выбрали данный способ, добавьте следующие настройки:-
securityContext
: настройки контроля доступа к основному контейнеру. Настройки должны предоставлять доступ к хосту TPM (/dev/tpmrm0
).privileged: true
: включить привилегированный доступ к основному контейнеру. В этом случае сервис лицензий запускается в привилегированном режиме.
-
-
false
: использовать плагин для автоматического монтирования TPM-устройства внутрь пода Kubernetes. Вы можете использовать готовый плагин от 2ГИС или собрать и установить свой плагин в кластере Kubernetes.
-
-
pvcBind
: создать Persistent Volume Claim (PVC), чтобы привязать под сервиса лицензий к узлу кластера.-
enabled
: использование PVC зависит от выбранного типа хранилища состояния сервиса лицензий:true
: дляpersistence.type: s3
.false
: дляpersistence.type: fs
(Persistence Volume уже используется).
-
storageClassName
: имя класса хранения (StorageClass) в Kubernetes. Необходимо только приpersistence.type: s3
.
-
-
-
resources
: ограничения используемых ресурсов кластера. Добавьте этот блок настроек, если используете плагин для монтирования TPM-устройства.limits.DOMAIN/tpmrm: 1
: замените переменнуюDOMAIN
на имя домена ресурсов, сконфигурированное в настройках плагина.
-
affinity
: настройки affinity-правил для привязки подов сервиса лицензий к конкретным узлам кластера.Примеры настройки affinity-правил:
-
Расположить поды сервиса лицензий на разных узлах кластера (важно для всех типов лицензий, кроме 1):
affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - topologyKey: kubernetes.io/hostname labelSelector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - '' # конкретное значение этого параметра зависит от настроек вашего окружения
-
Ограничить набор узлов кластера, к которым получает доступ сервис лицензий (полезно для типа лицензии 2):
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node-1 # название узла кластера - node-2 # название узла кластера
Подробное описание параметров affinity вы можете найти в документации Kubernetes
-
-
-
Установите сервис с помощью Helm, используя подготовленный конфигурационный файл
values-license.yaml
:helm upgrade --install --version=1.14.0 --atomic --values ./values-license.yaml license 2gis-on-premise/license
Примечание:
При первом запуске команда вернёт ошибку, что под сервиса лицензий не может быть запущен. Это ожидаемое поведение, переходите к следующим шагам.
3. Получите лицензию
Процесс получения лицензии включает в себя запросы к S3-совместимому хранилищу и работу через интернет:
- Сервис лицензий генерирует файлы для запроса лицензии и размещает их в S3-совместимом хранилище.
- Утилита 2GIS CLI считывает эти файлы из S3, формирует из них запрос и отправляет его через интернет.
- По итогам обработки запроса возвращается лицензия, которую утилита 2GIS CLI записывает в S3-совместимое хранилище.
- Сервис лицензий считывает файл лицензии и обновляет своё состояние.
Процесс может быть запущен как на одном хосте с доступом к S3 и интернету, так и на двух отдельных хостах с разными доступами. Выполните следующие действия в зависимости от выбранной конфигурации хостов.
Для операций с лицензиями используется конфигурационный файл утилиты 2GIS CLI. Описание всех параметров представлено в Конфигурационном файле 2GIS CLI.
Использование одного хоста с доступом в S3 и интернет
-
Запросите лицензию:
dgctl license --version 2
-
Снова установите сервис с помощью Helm:
helm upgrade --install --version=1.14.0 --atomic --values ./values-license.yaml license 2gis-on-premise/license
Использование двух хостов с разными доступами
-
На обоих хостах создайте директорию
COPY_DIR
для переноса файлов. -
Сформируйте файлы для запроса лицензии на хосте с доступом к S3:
-
Проверьте наличие всех необходимых файлов для запроса лицензии:
dgctl license --version 2 --dry-run
-
Скопируйте файлы для запроса лицензии из S3 в
COPY_DIR
:dgctl save --to-dir $COPY_DIR --only-license
-
-
Скопируйте содержимое директории
COPY_DIR
с хоста с доступом к S3 на хост с доступом к интернету. -
Запросите лицензию на хосте с доступом к интернету:
-
Скопируйте файлы для запроса лицензии из
COPY_DIR
в S3:dgctl restore --from-dir $COPY_DIR --only-license
-
Отправьте запрос:
dgctl license --version 2
-
Скопируйте файл с лицензией из S3 в
COPY_DIR
:dgctl save --to-dir $COPY_DIR --only-licensе
-
-
Скопируйте содержимое директории
COPY_DIR
с хоста с доступом к интернету на хост с доступом к S3. -
Скопируйте файл с лицензией из
COPY_DIR
в S3:dgctl restore --from-dir $COPY_DIR --only-license
-
Снова установите сервис с помощью Helm:
helm upgrade --install --version=1.14.0 --atomic --values ./values-license.yaml license 2gis-on-premise/license
Что дальше?
Установите другие продукты программного комплекса 2ГИС:
Узнайте, как обновить сервисы: