Сервис лицензий | On-Premise | 2GIS Documentation
On-Premise

Установка сервиса лицензий

  1. Ознакомьтесь с основной информацией:

  2. Убедитесь, что выполнены необходимые предварительные шаги:

    1. Подготовка к установке
    2. Получение артефактов установки
  3. Соберите необходимые данные, заданные или полученные на предыдущих шагах:

    Объект Значение Как получить значение
    Ключ лицензии на программный комплекс 2ГИС DEMO-KEY-DGCTL-AAAAAA-BBBBBB См. Подготовка к установке
    Эндпоинт S3-совместимого хранилища артефактов установки artifacts.storage.local См. Получение артефактов установки
    Имя бакета для хранения артефактов onpremise-artifacts См. Получение артефактов установки
    Идентификатор ключа для доступа к артефактам установки AKIAIOSFODNN7EXAMPLE См. Получение артефактов установки
    Секрет ключа для доступа к артефактам установки wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY См. Получение артефактов установки
    Реестр Docker для хранения образов сервисов docker.registry.local:5000 См. Получение артефактов установки
    Имя пользователя для реестра Docker registry См. Получение артефактов установки
    Пароль для реестра Docker DOCKERregistryP@ssW0rd См. Получение артефактов установки
  4. Убедитесь, что удовлетворены требования к ресурсам, приведенные в Helm-чарте. Подробнее о том, как это сделать, смотрите в документе Системные требования.

Примечание

Содержание Helm-чарта, описанное в данном разделе, актуально для последней версии On-Premise (см. Релизы). Чтобы изучить параметры для более ранних версий, откройте values.yaml в GitHub и введите номер нужной версии комплекса (например, 1.18.0) в переключателе тегов слева.

  1. Создайте конфигурационный файл для 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

  2. Установите сервис с помощью Helm, используя подготовленный конфигурационный файл values-license.yaml:

    helm upgrade --install --version=1.28.2 --atomic --values ./values-license.yaml license 2gis-on-premise/license
    

    Примечание:

    При первом запуске команда вернёт ошибку, что под сервиса лицензий не может быть запущен. Это ожидаемое поведение, переходите к следующим шагам.

Важно

Ниже описан стандартный способ получения лицензии. Если вам необходимо получить лицензию после обновления сертификата сервера Kubernetes API, смены ключа, типа лицензирования или в других частных случаях, см. Продвинутые способы получения лицензии.

Для операций с лицензиями используется конфигурационный файл утилиты 2GIS CLI. Подробнее о том, как именно проходит процесс получения лицензии см. в описании режима утилиты license.

Процесс может быть запущен как на одном хосте с доступом к S3 и интернету, так и на двух отдельных хостах с разными доступами. Выполните следующие действия в зависимости от выбранной конфигурации хостов.

  1. Запросите лицензию:

    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 в конец команды.

  2. Снова установите сервис с помощью Helm:

    helm upgrade --install --version=1.28.2 --atomic --values ./values-license.yaml license 2gis-on-premise/license
    

При использовании двух хостов вам необходимо копировать файлы из S3-совместимого хранилища и в него. Для этого вы можете использовать утилиту 2GIS CLI (рекомендуется) или другой клиент для работы с S3.

  1. На обоих хостах создайте директорию COPY_DIR для переноса файлов.

  2. Сформируйте файлы для запроса лицензии на хосте с доступом к S3:

    1. Проверьте наличие всех необходимых файлов для запроса лицензии (если используете утилиту 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 в конец команды.

    2. Скопируйте файлы для запроса лицензии из 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.

  3. Скопируйте содержимое директории COPY_DIR с хоста с доступом к S3 на хост с доступом к интернету.

  4. Запросите лицензию на хосте с доступом к интернету:

    1. Скопируйте файлы для запроса лицензии из 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 в конец команды.

    2. Отправьте запрос:

      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 в конец команды.

    3. Скопируйте файл с лицензией из 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 в конец команды.

  5. Скопируйте содержимое директории COPY_DIR с хоста с доступом к интернету на хост с доступом к S3.

  6. Скопируйте файл с лицензией из 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.

  7. Снова установите сервис с помощью Helm:

    helm upgrade --install --version=1.28.2 --atomic --values ./values-license.yaml license 2gis-on-premise/license
    

Что дальше?

Установите другие продукты программного комплекса 2ГИС:

Узнайте, как обновить сервисы: