Лицензия библиотек в Docker и Kubernetes и на машинах без интернета
Библиотеки libscanner — чтение DataMatrix (dmr), универсальное чтение кодов (unir) и генерация DataMatrix (dmgen) — работают по лицензии. Обычная лицензия привязана к оборудованию машины. В контейнере такая привязка не работает: контейнер пересоздаётся, переезжает на другой хост, их запускают десятками. Для этого есть лицензия «на экземпляры». Ниже — как устроены оба вида и как работать без интернета.
Два вида лицензии
| На машины | На экземпляры | |
|---|---|---|
| Что считается | Машины: лицензия привязана к оборудованию (материнская плата, процессор, системный диск) | Сколько процессов с библиотекой работает одновременно — контейнеров, подов, виртуальных машин |
| Где работает | Обычный компьютер или сервер | Где угодно: Docker, Kubernetes, облачные группы машин, обычный сервер |
| Активация | Ключом по сети или файлом без интернета | Не нужна: ключ передаётся контейнеру, остальное библиотека делает сама |
| Без связи с сервером лицензий | До 14 дней, а при активации файлом «на весь срок» — до конца оплаченного срока | 7 дней с последнего отчёта |
Вид задаёт тариф, а не среда: ключ «на экземпляры» работает и на обычном сервере, а ключ «на машины» в контейнере не активируется — библиотека так и скажет: в контейнере нужна лицензия на экземпляры. Перевести купленную лицензию с машин на экземпляры можно через поддержку.
Лицензия на экземпляры: Docker и Kubernetes
Ключ передаётся контейнеру переменной окружения или секретом. Активировать и отвязывать ничего не нужно: контейнеры можно пересоздавать, масштабировать и переносить между хостами сколько угодно.
| Библиотека | Переменная окружения | Секрет (файл) |
|---|---|---|
unir 1.2 | UNIR_LICENSE_KEY | /run/secrets/unir.key |
dmr 1.1 | DMR_LICENSE_KEY | /run/secrets/license.key |
dmgen 1.1 | DMGEN_LICENSE_KEY | /run/secrets/dmgen.key |
Docker Compose:
services:
reader:
image: my-reader:latest
environment:
UNIR_LICENSE_KEY: ${UNIR_LICENSE_KEY} # ключ из кабинетаKubernetes — ключ в Secret, в контейнер — переменной:
kubectl create secret generic unir-license --from-literal=key=UNIR-XXXXX-XXXXX-XXXXX-XXXXX
# в описании пода
env:
- name: UNIR_LICENSE_KEY
valueFrom:
secretKeyRef: { name: unir-license, key: key }Переменная проверяется первой, затем файл в /run/secrets/, затем — как раньше — файл ключа рядом с библиотекой и программой.
Как считаются экземпляры
- При старте процесс занимает место на сервере лицензий. Пока он работает, библиотека отмечает 5-минутные отрезки, в которые читала или создавала коды, и раз в 30 минут в фоне отправляет отметки пачкой. При старте сервер узнаёт имя хоста или пода, версию библиотеки и ОС — для списка в кабинете; кадры, коды и данные программы не отправляются никогда.
- Считается, сколько экземпляров работает одновременно, а не сколько их было за месяц. Упавший без остановки экземпляр перестаёт занимать место через час.
- Экземпляр — процесс. Рабочие процессы, запущенные через fork после загрузки библиотеки (gunicorn с
--preload,multiprocessing), — каждый свой экземпляр: место занимается при первом чтении или создании кода в процессе. Главный процесс, который сам коды не читает и не создаёт, освобождает своё место в течение 30 минут. - В пике можно больше оплаченного: одновременно стартует до 2 × N экземпляров (N — сколько куплено), а время сверх N списывается из месячного запаса — 10 % купленной ёмкости. На 50, 80 и 100 % запаса на почту приходит письмо.
- Запас кончился — до конца месяца новые экземпляры сверх N не стартуют («все места заняты»), уже работающие продолжают работу. 1-го числа запас обновляется.
- Нет связи с сервером лицензий — каждый экземпляр работает ещё 7 дней с последнего отчёта, потом сообщение «нужна связь с сервером лицензий».
В личном кабинете у лицензии на экземпляры видно, сколько их работает сейчас из N, график за сутки, сколько израсходовано из месячного запаса и список работающих экземпляров с именем хоста или пода и версией библиотеки. В контейнере unir --license status показывает режим «экземпляры», число оплаченных мест и до какого времени экземпляр работает без связи.
Пробный ключ для контейнеров
Пробный период без ключа (30 дней) в контейнере не действует: его сбрасывало бы каждое пересоздание контейнера. Чтобы попробовать библиотеку в Docker или Kubernetes, получите в личном кабинете пробный ключ для контейнеров: 2 экземпляра на 30 дней, один на учётную запись для каждого продукта, нужна подтверждённая почта.
Обычная машина без интернета: на весь срок
Если машина вообще не выходит в сеть — например, компьютер на производственной линии, — лицензию на машину можно активировать файлом так, чтобы она работала до конца оплаченного срока без единой связи с сервером:
- На машине:
unir --license request запрос.json— файл запроса с отпечатком машины. - На компьютере с интернетом: в личном кабинете откройте лицензию, раздел «Активация без интернета», загрузите запрос, отметьте «Машина без интернета — работать весь срок без связи» и скачайте
license.lic. - На машине:
unir --license import license.lic.
Продление: оплатите продление в кабинете, сделайте на той же машине новый запрос и получите новый license.lic — место машины остаётся тем же. Перенос на другую машину: unir --license deactivate расписка.json на старой, расписку — в кабинет, затем запрос с новой машины. Если старая машина потеряна — перенос через поддержку.
Важно: после такой активации деньги за лицензию не возвращаются — сервер не может проверить, что машина перестала ей пользоваться. В кабинете это написано рядом с отметкой. Для dmr и dmgen команды те же: dmr --license …, dmgen --license ….
Попробовать
Библиотеки и документация — на странице документации. Пробный ключ для контейнеров и активация без интернета — в личном кабинете после регистрации.
«Честный знак» — товарный знак ООО «Оператор-ЦРПТ», «GS1» — GS1 AISBL; продукт не связан с их владельцами и ими не сертифицирован.