Установка CityLens
Важное примечание:
Все пароли и ключи в этом разделе приведены в иллюстративных целях.
При реальной установке рекомендуется использовать более сложные и надёжные пароли.
1. Перед установкой
-
Ознакомьтесь с основной информацией:
-
Выполните предварительные шаги:
-
Соберите необходимые данные, заданные или полученные на предыдущих шагах:
Объект Пример значения Как получить значение Endpoint зеркала реестра Docker artifacts.example.com
См. Получение артефактов установки Секрет Kubernetes для доступа к зеркалу реестра Docker onpremise-registry-creds
См. Получение артефактов установки Домен S3-хранилища с артефактами установки artifacts.example.com
См. Получение артефактов установки Название бакета с артефактами установки onpremise-artifacts
См. Получение артефактов установки Идентификатор ключа для доступа к артефактам установки AKIAIOSFODNN7EXAMPLE
См. Получение артефактов установки Секрет ключа для доступа к артефактам установки wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY
См. Получение артефактов установки Путь к файлу манифеста manifests/1640661259.json
См. Получение артефактов установки Endpoint сервиса лицензий https://license.svc
См. Установка сервиса лицензий Endpoint MapGL JS API mapgl.example.local
См. Установка API для работы с картами Endpoint Pro API https://pro-api.host
См. Установка 2ГИС Про -
Убедитесь, что удовлетворены требования к ресурсам, приведенные в Helm-чарте. Подробнее о том, как это сделать, смотрите в документе Системные требования.
Примечание
Содержание Helm-чарта, описанное в данном разделе, актуально для последней версии On-Premise (см. Релизы). Чтобы изучить параметры для более ранних версий, откройте values.yaml в GitHub и введите номер нужной версии комплекса (например, 1.18.0) в переключателе тегов слева.
-
Определите доменные имена:
Пример:
- Доменное имя для сервиса CityLens – UI для просмотра загруженных треков:
http://citylens-web.host
- Доменное имя для CityLens API, куда подключается мобильное приложение и загружает треки:
http://citylens-api.host
- Доменное имя для сервиса CityLens – UI для просмотра загруженных треков:
2. Подготовьте инфраструктуру
Настройте PostgreSQL
Разместите кластер PostgreSQL с доменным именем citylens-postgresql.storage.example.local
в приватной сети. Предполагается, что кластер работает на стандартном порту 5432
.
Настройте кластер PostgreSQL для использования в качестве хранилища:
-
Подключитесь к кластеру от имени суперпользователя (обычно это
postgres
). -
Создайте пользователя базы данных и установите пароль для него:
create user citylens password 'citylens';
-
Создайте базу данных, принадлежащую этому пользователю:
create database citylens owner citylens;
-
Установите расширение PostGIS для PostgreSQL.
-
Включите расширение PostGIS:
create extension postgis;
Настройте S3-хранилище
Разместите S3-совместимое хранилище (например, Ceph) с доменным именем citylens-s3.storage.example.local
в приватной сети. Предполагается, что хранилище работает на стандартном порту 80
.
Настройте S3-совместимое хранилище:
-
Создайте пользователя, который будет использоваться для сервиса:
accessKey
: accessKeysecretAccessKey
: secretAccessKey
Запомните ключи доступа для этого пользователя.
-
Определите префиксы названий бакетов (buckets): префикс для кадров и префикс для логов мобильного приложения (
bucketPrefix
иlogsBucketPrefix
соответственно в Helm чарте). Бакеты (buckets) будут сгенерированы "на лету".Пример:
- Бакет для основных данных:
onprem-citylens
.
- Бакет для основных данных:
Настройка Apache Kafka
Разместите кластер Apache Kafka с доменным именем citylens-kafka.storage.example.local
в приватной сети. В этом руководстве предполагается, что кластер работает на стандартном порту 9092
.
Создайте пользователя, который будет использоваться для сервиса:
username
: kafkapassword
: kafka_password
Запомните реквизиты для этого пользователя.
3. Установите CityLens
-
Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь.
Пример файла уже заполнен всеми необходимыми данными, собранными на предыдущих этапах.
values-citylens.yaml
dgctlDockerRegistry: docker.storage.example.local:5000 api: auth: enabled: true authServerUrl: https://keycloak.host realm: CityLens_app predictorsTokens: camcom: token licensing: url: 'https://license.svc' ingress: className: nginx enabled: false hosts: - host: citylens-api.host paths: - path: / pathType: Prefix tls: - hosts: - citylens-api.host web: auth: enabled: true realm: Inspection_Portal_backend authServerUrl: https://keycloak.host clientId: citylens-web-client clientSecret: secret pkce: false ingress: className: nginx enabled: true hosts: - host: citylens-web.host paths: - path: / pathType: Prefix tls: [] - hosts: - citylens-web.host worker: camcomSender: enabled: true apiKey: key endpointUrl: http://camcom-mock-service/user_upload sourceEnv: test kafka: bootstrapServer: kafka1.host:9092,kafka2.host:9092,kafka3.host:9092 username: kafka password: kafka_password topics: frames: frames tracks: tracks pro: pro proDrivers: drivers logs: logs uploader: uploader framesLifecycle: flifecycle tracksLifecycle: tlifecycle predictions: predictions consumerGroups: prefix: citylens_ s3: endpoint: https://s3.host accessKey: accessKey secretAccessKey: secretAccessKey bucketPrefix: citylens # приложение само создаст бакет вида bucketPrefix + %Y%m logsBucketPrefix: citylens-logs verifySsl: true setPublicReadACL: false dgctlStorage: host: artifacts.example.com secure: false bucket: onpremise-artifacts accessKey: AKIAIOSFODNN7EXAMPLE secretKey: wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY manifest: manifests/1640661259.json postgres: host: postgres.host port: 5432 database: citylens username: citylens password: citylens dashboardDomain: https://citylens-web.host locale: en map: tileserverUrl: https://tiles-api-raster.host mapgl: host: mapgl-js-api.host key: key pro: baseUrl: https://pro-api.host key: key verifySsl: true framesAssetId: '' reporters: - name: pro predictors: [camcom] trackTimeoutDays: 1 customCAs: bundle: '' # bundle: | # -----BEGIN CERTIFICATE----- # ... # -----END CERTIFICATE----- certsPath: ''
Где:
-
dgctlDockerRegistry
: эндпоинт вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС. -
api
: настройки CityLens API.-
auth
: настройки аутентификации.enabled
: включена аутентификация или нет.authServerUrl
: URL API службы аутентификацииrealm
: realm для аутентификации.predictorsTokens.camcom
: случайно сгенерированная строка длинной 64 символа (ASCII + цифры). Передается в Camcom для доступа к CityLens API.
-
licensing
: настройки сервиса лицензий.url
: URL-адрес сервиса лицензий. Пример:https://license.svc
.
-
ingress
: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. URL, указанный в параметреingress.hosts.host
, должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL.
-
-
web
: настройки веб-сервиса CityLens.-
auth
: настройки аутентификации.enabled
: включена аутентификация или нет.realm
: realm для аутентификации.authServerUrl
: URL API службы аутентификации.clientId
: id клиента из Keycloak.clientSecret
: секрет клиента из Keycloak.pkce
: включена ли проверка ключа PKCE.
-
ingress
: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. URL, указанный в параметреingress.hosts.host
, должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL.
-
-
worker
: настройки рабочих процессов CityLens.-
camcomSender
: настройки рабочих процессов CamcomSender.enabled
: включен ли Camcom Sender.apiKey
: ключ доступа к API Camcom Sender.endpointUrl
: endpoint для Camcom Sender.sourceEnv
: имя окружения в Camcom, предоставляемое Camcom'ом.
-
-
kafka
: настройки доступа к брокеру Apache Kafka.-
bootstrapServer
: endpoint брокера Kafka. Пример:HOST:PORT
. -
username
: имя пользователя. -
password
: пароль пользователя. -
topics
: настройки топиков.frames
: список топиков для Frames Saver.tracks
: список топиков для Track Metadata.pro
: топик для синхронизации фреймов с 2ГИС Про через Reporter Pro.proDrivers
: топик для синхронизации треков водителей с 2ГИС Про через Reporter Pro.logs
: топик для логов мобильного приложения (загружаются через CityLens API).uploader
: топик для Uploader.framesLifecycle
: топик для событий жизненного цикла фреймов.tracksLifecycle
: топик для событий жизненного цикла треков.predictions
: топик для событий прогнозов от детекторов.
-
consumerGroups
: настройка группы потребителей.prefix
: префикс для топиков группы потребителей.
-
-
s3
: настройки S3-совместимого хранилища.endpoint
: endpoint S3 хранилища. Пример:HOST:PORT
илиURL
.accessKey
: идентификатор ключа для доступа к бакету S3.secretAccessKey
: секретный ключ для доступа к бакету S3.bucketPrefix
: префикс имени бакета в S3 для бакетов фреймов.logsBucketPrefix
: префикс имени бакета в S3 для бакетов логов мобильных приложений.verifySsl
: включена проверка SSL-сертификатов или нет.setPublicReadACL
: сделать ли S3-бакет публичным (просмотр кадров будет доступен без авторизации).
-
dgctlStorage
: настройки хранилища артефактов развертывания.host
: адрес или IP S3-хранилища артефактов развертывания.secure
: использовать ли HTTPS для работы с S3-совместимым хранилищем. Значение по умолчанию:false
.bucket
: имя бакета S3.accessKey
: идентификатор ключа для доступа к бакету S3.secretKey
: секретный ключ для доступа к бакету S3.manifest
: путь до файла с манифестом в форматеmanifests/1640661259.json
. Этот файл содержит в себе описания фрагментов данных, которые требуются сервисам для работы. См. Жизненный цикл артефактов установки.
-
postgres
: настройки доступа к PostgreSQL.host
: адрес или IP PostgreSQL read-write (rw) хоста.port
: номер порта.database
: имя БД.username
: имя пользователя БД c rw-доступом.password
: пароль пользователя БД.
-
dashboardDomain
: ссылка на веб-версию CityLens. -
locale
: используемый язык. -
map
: настройки карт.-
tileserverUrl
: URL сервера для получения растровых тайлов. -
mapgl
: настройки доступа к MapGL JS API.host
: имя хоста MapGL.key
: ключ сервера MapGL.
-
-
pro
: группа настроек для интеграции CityLens с Pro.baseUrl
: URL Pro API для актуализации фильтров.key
: токен аутентификации Pro APIverifySsl
: включена проверка SSL-сертификатов или нет.framesAssetId
: ID набора данных для загрузки фреймов.
-
reporters
: группировка настроек, отвечающая за то, куда производится выгрузка данных.name
: имя отгрузчика данных.predictors
: предиктор, используемый отгрузчиком данных.trackTimeoutDays
: таймаут (в днях) на обработку трека и получение предсказаний по фреймам.
-
customCAs
: настройки пользовательских сертификатов.bundle
: текстовое представление сертификата в формате X.509 PEM public-key.certsPath
: директория для монтирования сертификата внутри контейнера.
-
-
Установите сервис с помощью Helm, используя подготовленный конфигурационный файл
values-citylens.yaml
:helm upgrade --install --version=1.29.0 --atomic --values ./values-citylens.yaml citylens 2gis-on-premise/citylens
4. Проверьте работоспособность CityLens
Воспользуйтесь одним из способов:
- Перейдите по адресу http://citylens-web.host.
- Запустите мобильное приложение CityLens.