Установка API для работы с поиском
Важное примечание:
Все пароли и ключи в этом разделе приведены в иллюстративных целях.
При реальной установке рекомендуется использовать более сложные и надёжные пароли.
1. Перед установкой
-
По возможности познакомьтесь с:
-
Убедитесь, что выполнены необходимые предварительные шаги:
-
Соберите необходимые данные, заданные или полученные на предыдущих шагах:
Объект Пример значения Как получить значение Эндпоинт зеркала реестра Docker docker.storage.example.local:5000
См. Получение артефактов установки Секрет Kubernetes для доступа к зеркалу реестра Docker onpremise-registry-creds
См. Получение артефактов установки Домен S3-хранилища с артефактами установки artifacts.example.com
См. Получение артефактов установки Название бакета с артефактами установки onpremise-artifacts
См. Получение артефактов установки Идентификатор ключа для доступа к артефактам установки AKIAIOSFODNN7EXAMPLE
См. Получение артефактов установки Секрет ключа для доступа к артефактам установки wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY
См. Получение артефактов установки Путь к файлу манифеста manifests/1640661259.json
См. Получение артефактов установки Эндпоинт сервиса лицензий HTTP(S)://HOST
См. Установка сервиса лицензий Эндпоинт API сервиса ключей keys.example.local
См. Установка сервиса ключей Сервисные токены* CATALOG_TOKEN
PLACES_TOKEN
GEOCODER_TOKEN
SUGGEST_TOKEN
CATEGORIES_TOKEN
REGIONS_TOKEN
См. Установка сервиса ключей * В иллюстративных целях предполагается, что сервисные токены доступны для всех продуктов поиска.
-
Убедитесь, что удовлетворены следующие требования к ресурсам (требования приведены с учётом минимального числа реплик):
-
Для testing-окружения:
Сервис vCPU RAM Хранилище Сервисы поиска 5 20 ГБ 15 ГБ в хранилище подов Kubernetes
60 ГБ в хранилище PostgreSQLДля хранилища PostgreSQL 6 12 ГБ 60 ГБ Итоговое количество: 11 32 ГБ 75 ГБ -
Для production-окружения:
Сервис vCPU RAM Хранилище Сервисы поиска 17 26 ГБ 15 ГБ в хранилище подов Kubernetes
60 ГБ в хранилище PostgreSQLДля хранилища PostgreSQL 24 48 ГБ 60 ГБ Итоговое количество: 41 74 ГБ 75 ГБ
Примечание:
Подробная информация о системных требованиях для отдельных сервисов и компонентов программного комплекса 2ГИС приведена в документе Системные требования.
-
-
Определите доменные имена для сервисов поиска.
Пример:
- Доменное имя для Search API:
search.example.com
- Доменное имя для Catalog APIs:
catalog.example.com
- Доменное имя для Search API:
2. Подготовьте инфраструктуру, необходимую для работы сервисов
Настройка PostgreSQL
Разместите кластер PostgreSQL с доменным именем catalog-postgresql.storage.example.local
в приватной сети. В этом руководстве предполагается, что кластер работает на стандартном порту 5432
.
Настройте кластер PostgreSQL для использования в качестве хранилища:
-
Подключитесь к кластеру от имени суперпользователя (обычно это
postgres
). -
Создайте пользователя базы данных, который будет использоваться для сервиса. Установите пароль для него.
create user dbuser_catalog password '650D7AmZjSR1dkNa';
-
Создайте базу данных, принадлежащую этому пользователю.
create database onpremise_catalog owner dbuser_catalog;
-
Установите требуемые расширения для базы данных:
\c onpremise_catalog create schema extensions; grant usage on schema extensions to public; grant execute on all functions in schema extensions to public; alter default privileges in schema extensions grant execute on functions to public; alter default privileges in schema extensions grant usage on types to public; create extension if not exists plpgsql with schema pg_catalog; create extension if not exists jsquery with schema extensions; create extension if not exists postgis with schema extensions;
3. Установите сервисы поиска
Установка сервиса Search API
-
Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь.
Пример файла уже заполнен всеми необходимыми данными, собранными на предыдущих этапах.
values-search.yaml
dgctlDockerRegistry: docker.storage.example.local:5000 imagePullSecrets: - name: onpremise-registry-creds imagePullPolicy: IfNotPresent dgctlStorage: host: artifacts.storage.example.local:443 bucket: onpremise-artifacts accessKey: AKIAIOSFODNN7EXAMPLE secretKey: wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY manifest: manifests/1640661259.json api: resources: limits: cpu: 1 memory: 3G requests: cpu: 100m memory: 1G nginx: resources: limits: cpu: 1 memory: 1G requests: cpu: 100m memory: 200Mi ingress: hosts: - host: search.example.com
Где:
-
dgctlDockerRegistry
: endpoint вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС. -
dgctlStorage
: настройки хранилища артефактов развертывания.- Укажите общие настройки для доступа к хранилищу: endpoint, имя бакета, реквизиты для доступа.
manifest
: укажите путь до файла с манифестом в форматеmanifests/1640661259.json
. Этот файл содержит в себе описания фрагментов данных, которые требуются сервисам для работы. См. Жизненный цикл артефактов установки.
-
api.resources
: настройки вычислительных ресурсов для бэкенд-сервиса API. Для получения актуальной информации о рекомендуемых значениях настроек в этой секции см. Системные требования. -
nginx.resources
: настройки вычислительных ресурсов для бэкенд-сервиса NGINX. Для получения актуальной информации о рекомендуемых значениях настроек в этой секции см. Системные требования. -
ingress
: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. Этот URL должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL.
-
-
Установите сервис с помощью Helm, используя подготовленный конфигурационный файл:
helm upgrade --install --version=1.10.0 --atomic --values ./values-search.yaml search-api 2gis-on-premise/search-api
Установка сервиса Catalog APIs
-
Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь.
Примечание:
Вы можете настроить процесс импорта новых данных для Catalog APIs. За это отвечают настройки группы
importer
конфигурационного файла (см. ниже).Пример файла уже заполнен всеми необходимыми данными, собранными на предыдущих этапах.
values-catalog.yaml
dgctlDockerRegistry: docker.storage.example.local:5000 imagePullSecrets: - name: onpremise-registry-creds imagePullPolicy: IfNotPresent api: postgres: host: catalog-postgresql.storage.example.local port: 5432 name: onpremise_catalog username: dbuser_catalog password: 650D7AmZjSR1dkNa search: url: http://search.example.com keys: url: https://keys.example.local tokens: places: PLACES_TOKEN geocoder: GEOCODER_TOKEN suggest: SUGGEST_TOKEN categories: CATEGORIES_TOKEN regions: REGIONS_TOKEN importer: postgres: host: catalog-postgresql.storage.example.local port: 5432 name: onpremise_catalog username: dbuser_catalog password: 650D7AmZjSR1dkNa schemaSwitchEnabled: true cleaner: enabled: true versionLimit: 2 license: url: '' requestTimeout: 1s
Где:
-
dgctlDockerRegistry
: endpoint вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС. -
api.postgres
: настройки доступа к серверу PostgreSQL.host
: имя хоста или IP-адрес сервера.port
: порт, на котором слушает сервер.name
: имя базы данных.username
: имя пользователя.password
: пароль пользователя.
-
search
: настройки доступа к сервису Search API.url
: URL сервиса. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.
-
keys
: настройки сервиса ключей.url
: URL сервиса. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.tokens
: сервисные токены для сохранения статистики использования (см. Установка сервиса ключей).
-
importer
: настройки процесса импорта (Kubernetes Importer job). Импорт новых наборов данных происходит, только если для указанного манифеста не происходил импорт ранее.-
postgres
: настройки доступа к серверу PostgreSQL для импорта новых данных об объектах.host
: имя хоста или IP-адрес сервера.port
: порт, на котором слушает сервер.name
: имя базы данных.username
: имя пользователя.password
: пароль пользователя.schemaSwitchEnabled
: разрешить ли работу со схемами.true
: каждый импорт данных происходит в новую схему, возможно переключение на старые схемы и их очистка.false
: создание новых схем и очистка базы производятся администратором вручную.
Подробнее см. в разделе Обновление сервиса Catalog APIs.
-
cleaner
: настройки автоматического удаления старых наборов данных.enabled
: включено ли автоматическое удаление старых наборов данных. Подробнее см. в разделе Обновление сервиса Catalog APIs.versionLimit
: количество старых наборов данных, которые нужно хранить.
См. Жизненный цикл артефактов установки для получения дополнительной информации о работе процесса импорта.
-
-
license
: настройки сервиса лицензий.url
: URL-адрес сервиса лицензий. Пример:HTTP(S)://HOST
.requestTimeout
: период времени для запроса сервиса лицензий.
-
-
Установите сервис с помощью Helm, используя подготовленный конфигурационный файл:
helm upgrade --install --version=1.10.0 --atomic --values ./values-catalog.yaml catalog-api 2gis-on-premise/catalog-api
Если в конфигурационном файле были указаны настройки
importer
, то при установке сервиса проверяется наличие данных в базе и при необходимости происходит импорт этих данных в PostgreSQL. Затем Helm выполняет установку самого сервиса.
4. Проверьте работоспособность установленных сервисов
Search API
Чтобы проверить работоспособность сервиса Search API, выполните GET-запрос к endpoint status
:
curl search.example.com/v2/status?f=common
Проверка сервиса Catalog APIs
С хоста в приватной сети example.com
:
-
С помощью веб-интерфейса администратора сервиса ключей создайте API-ключ, который предоставляет доступ к Places API и Regions API.
-
Выполните следующий GET-запрос, заменив:
API_KEY
на значение созданного ключа.City
на имя любого города, о котором вы хотите найти информацию.
curl catalog.example.com/3.0/items/geocode?key=API_KEY&q=City
Успешно выполненный запрос будет означать, что сервисы, необходимые для работы продуктов поиска, работают корректно.
Что дальше?
-
Познакомьтесь с документацией API для работы с поиском:
-
Узнайте, как обновить сервисы поиска:
-
Установите другие продукты программного комплекса 2ГИС: