Установка сервиса лицензий
1. Перед у становкой
-
Ознакомьтесь с основной информацией:
-
Убедитесь, что выполнены необходимые предварительные шаги:
-
Соберите необходимые данные, заданные или полученные на предыдущих шагах:
Объект Значение Как получить значение Ключ лицензии на программный комплекс 2ГИС DEMO-KEY-DGCTL-AAAAAA-BBBBBB
См. Подготовка к установке Endpoint 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: ''
imagePullSecrets: [onpremise-registry-creds]
dgctlStorage:
host: artifacts.example.com
secure: false
region: ''
bucket: onpremise-artifacts
accessKey: AKIAIOSFODNN7EXAMPLE
secretKey: wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY
license:
type: ''
retryPeriod: 30s
softBlockPeriod: 2w
persistence:
host: artifacts.example.com
secure: false
region: ''
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
: endpoint вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС. Пример:HOST:PORT
. -
imagePullSecrets
: Kubernetes Secrets для доступа к реестру Docker, в котором находятся образы сервисов программного комплекса 2ГИС. -
dgctlStorage
: настройки хранилища артефактов установки.- Укажите общие настройки для доступа к хранилищу: endpoint, имя бакета и реквизиты для доступа.
secure
: использовать ли HTTPS для работы с S3-совместимым хранилищем. Значение по умолчанию:false
.region
: регион S3-хранилища.
-
license
: настройки сервиса лицензий.type
: тип лицензии (не версия). Скопируйте цифровое значение из файлаvalues/general.yaml
, который генерируется автоматически на этапе загрузки артефактов установки. Не изменяйте это значение вручную.retryPeriod
: через какой период времени повторить проверку лицензии, если предыдущая проверка не удалась.softBlockPeriod
: за какой период времени появляется уведомление об истечении срока лицензии. Поддерживаются дополнительные единицы измерения времени:d
для дней иw
для недель.
-
persistence
: настройки хранилища для состояний сервиса лицензий.-
host
: адрес endpoint в форматеhost:port
. -
secure
: использовать ли HTTPS для работы с S3-совместимым хранилищем. Значение по умолчанию:false
. -
region
: регион S3-хранилища. -
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.32.0 --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.32.0 --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.32.0 --atomic --values ./values-license.yaml license 2gis-on-premise/license
Что дальше?
-
Установите сервис API-ключей.
-
Узнайте, как обновить сервис лицензий.
-
Узнайте, как получить лицензию в частных случаях, когда стандартный способ получения недоступен.
-
Изучите рекомендации по обслуживанию системы: