Установка сервиса лицензий
1. Перед установкой
-
Ознакомьтесь с основной информацией:
-
Убедитесь, что выполнены необходимые предварительные шаги:
-
Соберите необходимые данные, заданные или полученные на предыдущих шагах:
Объект Значение Как получить значение Ключ лицензии на программный комплекс 2ГИС DEMO-KEY-DGCTL-AAAAAA-BBBBBB
См. Подготовка к установке Эндпоинт S3-совместимого хранилища артефактов установки artifacts.storage.local
См. Получение артефактов установки Имя бакета для хранения артефактов onpremise-artifacts
См. Получение артефактов установки Идентификатор ключа для доступа к артефактам установки AKIAIOSFODNN7EXAMPLE
См. Получение артефактов установки Секрет ключа для доступа к артефактам установки wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY
См. Получение артефактов установки Реестр Docker для хранения образов сервисов docker.registry.local:5000
См. Получение артефактов установки Имя пользователя для реестра Docker registry
См. Получение артефактов установки Пароль для реестра Docker DOCKERregistryP@ssW0rd
См. Получение артефактов установки -
Убедитесь, что удовлетворены требования к ресурсам, приведенные в Helm-чарте. Подробнее о том, как это сделать, смотрите в документе Системные требования.
Примечание
Содержание Helm-чарта, описанное в данном разделе, актуально для последней версии On-Premise (см. Релизы). Чтобы изучить параметры для более ранних версий, откройте values.yaml в GitHub и введите номер нужной версии комплекса (например, 1.18.0) в переключателе тегов слева.
2. Установите сервис лицензий
-
Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь. Пример файла уже заполнен всеми необходимыми данными, собранными на предыдущих этапах.
values-license.yaml
dgctlDockerRegistry: '' dgctlStorage: host: artifacts.example.com secure: false bucket: onpremise-artifacts accessKey: AKIAIOSFODNN7EXAMPLE secretKey: wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY license: type: '' 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: host: artifacts.example.com secure: false bucket: onpremise-artifacts root: 'license_state' accessKey: AKIAIOSFODNN7EXAMPLE secretKey: wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY tpm: mountTPMDevice: false pvcBind: enable: false storageClassName: '' customCAs: bundle: '' # bundle: | # -----BEGIN CERTIFICATE----- # ... # -----END CERTIFICATE----- certsPath: '' resources: limits: DOMAIN/tpmrm: 1 affinity: {}
Где:
-
dgctlDockerRegistry
: эндпоинт вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС. Пример:HOST:PORT
. -
dgctlStorage
: настройки хранилища артефактов установки.- Укажите общие настройки для доступа к хранилищу: endpoint, имя бакета и реквизиты для доступа.
secure
: использовать ли HTTPS для работы с S3-совместимым хранилищем. Значение по умолчанию:false
.
-
license
: настройки сервиса лицензий.type
: тип лицензии (не версия). Скопируйте цифровое значение из файлаvalues/general.yaml
, который генерируется автоматически на этапе загрузки артефактов установки. Не изменяйте это значение вручную.retryPeriod
: через какой период времени повторить проверку лицензии, если предыдущая проверка не удалась.softBlockPeriod
: за какой период времени появляется уведомление об истечении срока лицензии. Поддерживаются дополнительные единицы измерения времени:d
для дней иw
для недель.
-
ingress
: конфигурация ресурса Ingress. При необходимости адаптируйте приведённую конфигурацию для соответствия используемому вами Ingress. -
persistence
: настройки хранилища для состояний сервиса лицензий.host
: адрес endpoint в форматеhost:port
.secure
: использовать ли HTTPS для работы с S3-совместимым хранилищем. Значение по умолчанию:false
.bucket
: имя S3-бакета.root
: корневая директория S3-бакета, в которой будут храниться файлы состояния.accessKey
: ключ доступа к S3-бакету.secretKey
: секретный ключ доступа к S3-бакету.
Важно:
При потере указанных данных текущая лицензия перестанет работать. Для получения новой лицензии см. Продвинутые способы получения лицензии.
-
tpm
: настройки для доступа к Trusted Platform Module (TPM). Только для типа лицензии 2 (license.type: 2
).-
mountTPMDevice
: способ предоставления доступа к TPM:-
true
: монтировать TPM внутрь пода Kubernetes. Включается привилегированный доступ к основному контейнеру. -
false
: использовать плагин для автоматического монтирования TPM-устройства внутрь пода Kubernetes. Вы можете использовать готовый плагин от 2ГИС или собрать и установить свой плагин в кластере Kubernetes.
-
-
pvcBind
: создать Persistent Volume Claim (PVC), чтобы привязать под сервиса лицензий к узлу кластера.enable
: использовать ли PVC. Значение по умолчанию:false
.storageClassName
: имя класса хранения (StorageClass) в Kubernetes.
-
-
customCAs
: настройки пользовательских сертификатов.bundle
: текстовое представление сертификата в формате X.509 PEM public-key.certsPath
: директория для монтирования сертификата внутри контейнера.
-
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.28.2 --atomic --values ./values-license.yaml license 2gis-on-premise/license
Примечание:
При первом запуске команда вернёт ошибку, что под сервиса лицензий не может быть запущен. Это ожидаемое поведение, переходите к следующим шагам.
3. Получите лицензию
Важно
Ниже описан стандартный способ получения лицензии. Если вам необходимо получить лицензию после обновления сертификата сервера Kubernetes API, смены ключа, типа лицензирования или в других частных случаях, см. Продвинутые способы получения лицензии.
Для операций с лицензиями используется конфигурационный файл утилиты 2GIS CLI. Подробнее о том, как именно проходит процесс получения лицензии см. в описании режима утилиты license
.
Процесс может быть запущен как на одном хосте с доступом к S3 и интернету, так и на двух отдельных хостах с разными доступами. Выполните следующие действия в зависимости от выбранной конфигурации хостов.
Использование одного хоста с доступом в S3 и интернет
-
Запросите лицензию:
docker run --rm \ -v $(pwd)/dgctl-config.yaml:/dgctl-config.yaml \ --user $(id -u):$(id -g) \ 2gis/dgctl:latest \ license --config=/dgctl-config.yaml
Если вы используете On-Premise версии 1.16.0 и ниже, добавьте аргумент
--with-license-v1
в конец команды. -
Снова установите сервис с помощью Helm:
helm upgrade --install --version=1.28.2 --atomic --values ./values-license.yaml license 2gis-on-premise/license
Использование двух хостов с разными доступами
При использовании двух хостов вам необходимо копировать файлы из S3-совместимого хранилища и в него. Для этого вы можете использовать утилиту 2GIS CLI (рекомендуется) или другой клиент для работы с S3.
-
На обоих хостах создайте директорию
COPY_DIR
для переноса файлов. -
Сформируйте файлы для запроса лицензии на хосте с доступом к S3:
-
Проверьте наличие всех необходимых файлов для запроса лицензии (если используете утилиту 2GIS CLI):
docker run --rm \ -v $(pwd)/dgctl-config.yaml:/dgctl-config.yaml \ --user $(id -u):$(id -g) \ 2gis/dgctl:latest \ license --config=/dgctl-config.yaml --dry-run
Если вы используете On-Premise версии 1.16.0 и ниже, добавьте аргумент
--with-license-v1
в конец команды. -
Скопируйте файлы для запроса лицензии из S3 в
COPY_DIR
.-
Если вы используете утилиту
dgctl
, выполните следующую команду:docker run --rm \ -v $(pwd)/dgctl-config.yaml:/dgctl-config.yaml \ -v $COPY_DIR:/data \ --user $(id -u):$(id -g) \ 2gis/dgctl:latest \ save --config=/dgctl-config.yaml --to-dir /data --only-license
Если вы используете On-Premise версии 1.16.0 и ниже, добавьте аргумент
--with-license-v1
в конец команды. -
Если вы используете сторонний клиент S3, скопируйте всё содержимое директории
license-dir
из S3 вCOPY_DIR
.
-
-
-
Скопируйте содержимое директории
COPY_DIR
с хоста с доступом к S3 на хост с доступом к интернету. -
Запросите лицензию на хосте с доступом к интернету:
-
Скопируйте файлы для запроса лицензии из
COPY_DIR
в S3:docker run --rm \ -v $(pwd)/dgctl-config.yaml:/dgctl-config.yaml \ -v $COPY_DIR:/data \ --user $(id -u):$(id -g) \ 2gis/dgctl:latest \ restore --config=/dgctl-config.yaml --from-dir /data --only-license
Если вы используете On-Premise версии 1.16.0 и ниже, добавьте аргумент
--with-license-v1
в конец команды. -
Отправьте запрос:
docker run --rm \ -v $(pwd)/dgctl-config.yaml:/dgctl-config.yaml \ --user $(id -u):$(id -g) \ 2gis/dgctl:latest \ license --config=/dgctl-config.yaml
Если вы используете On-Premise версии 1.16.0 и ниже, добавьте аргумент
--with-license-v1
в конец команды. -
Скопируйте файл с лицензией из S3 в
COPY_DIR
:docker run --rm \ -v $(pwd)/dgctl-config.yaml:/dgctl-config.yaml \ -v $COPY_DIR:/data \ --user $(id -u):$(id -g) \ 2gis/dgctl:latest \ save --config=/dgctl-config.yaml --to-dir /data --only-license
Если вы используете On-Premise версии 1.16.0 и ниже, добавьте аргумент
--with-license-v1
в конец команды.
-
-
Скопируйте содержимое директории
COPY_DIR
с хоста с доступом к интернету на хост с доступом к S3. -
Скопируйте файл с лицензией из
COPY_DIR
в S3:-
Если вы используете утилиту 2GIS CLI, выполните следующую команду:
docker run --rm \ -v $(pwd)/dgctl-config.yaml:/dgctl-config.yaml \ -v $COPY_DIR:/data \ --user $(id -u):$(id -g) \ 2gis/dgctl:latest \ restore --config=/dgctl-config.yaml --from-dir /data --only-license
Если вы используете On-Premise версии 1.16.0 и ниже, добавьте аргумент
--with-license-v1
в конец команды. -
Если вы используете сторонний клиент S3, скопируйте всё содержимое директории
license-dir
изCOPY_DIR
в S3.
-
-
Снова установите сервис с помощью Helm:
helm upgrade --install --version=1.28.2 --atomic --values ./values-license.yaml license 2gis-on-premise/license
Что дальше?
Установите другие продукты программного комплекса 2ГИС:
Узнайте, как обновить сервисы: