Установка API для работы с поиском
При реальной установке используйте более сложные и надёжные пароли.
1. Перед установкой
-
По возможности познакомьтесь с:
-
Убедитесь, что выполнены необходимые предварительные шаги:
-
Соберите необходимые данные, заданные или полученные на предыдущих шагах:
Объект Пример значения Как получить значение Endpoint реестра Docker для хранения образов сервисов docker.registry.example.comСм. Получение артефактов установки Секрет Kubernetes для доступа к реестру Docker onpremise-registry-credsСм. Получение артефактов установки Endpoint S3-совместимого хранилища артефактов установки artifacts.example.comСм. Получение артефактов установки Название бакета с артефактами установки onpremise-artifactsСм. Получение артефактов установки Идентификатор ключа для доступа к артефактам установки AKIAIOSFODNN7EXAMPLEСм. Получение артефактов установки Секрет ключа для доступа к артефактам установки wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEYСм. Получение артефактов установки Путь к файлу манифеста manifests/api-platform/1640661259.jsonСм. Получение артефактов установки Endpoint сервиса лицензий https://licenseСм. Установка сервиса лицензий Endpoint сервиса API-ключей http://keys-service-apiСм. Установка сервиса API-ключей Endpoint сервиса сбора статистики http://stat-receiverСм. Установка сервиса сбора статистики Сервисный токен CATALOG_APIS_TOKENСм. Установка сервиса API-ключей -
Убедитесь, что удовлетворены требования к ресурсам, приведенные в Helm-чартах:
Подробнее о том, как это сделать, см. в документе Системные требования.
Используйте чарты, соответствующие версии API-платформыСодержание Helm-чартов, описанное в данном разделе, актуально для последней версии API-платформы (см. Релизы API-платформы). Чтобы изучить параметры для предыдущих версий, откройте нужный values.yaml в GitHub и в списке тегов слева выберите тег
Platform-<версия>. -
Определите доменные имена для сервисов поиска.
Пример:
- Доменное имя для Search API:
search-api.example.com. - Доменное имя для Catalog APIs:
catalog-api.example.com.
- Доменное имя для Search API:
2. Подготовьте инфраструктуру
Настройте PostgreSQL
Если вместо PostgreSQL вы используете аналог из реестра Минцифры, для инструкции по его настройке обратитесь к официальной документации этого сервиса.
-
Разместите кластер PostgreSQL с доменным именем
catalog-postgresql.storage.example.localв приватной сети. Предполагается, что кластер работает на стандартном порту5432. -
Подключитесь к кластеру от имени суперпользователя (обычно это
postgres). -
Создайте пользователя базы данных и установите пароль для него:
create user dbuser_catalog password '650D7AmZjSR1dkNa'; -
Создайте базу данных, принадлежащую этому пользователю:
create database onpremise_catalog owner dbuser_catalog; -
Установите необходимое внешнее расширение PostGIS для PostgreSQL.
Вы можете получить расширение из репозитория, в котором оно доступно в виде готовых пакетов. Например, для дистрибутивов на базе Debian/Ubuntu установка выполняется командами:
sudo apt install postgresql-15-postgis-3
sudo apt install postgis -
Включите требуемое расширение для базы данных:
\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 postgis with schema extensions;
Создайте API-ключ
Наличие ключа проверяется перед установкой Catalog APIs.
Добавьте первого партнёра и создайте для него API-ключ. В список доступных сервисов для ключа должны быть включены API поиска. См. инструкцию Управление доступом к API.
3. Установите сервисы поиска
Установите сервис Search API
-
Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь.
Пример файла уже заполнен всеми необходимыми данными, собранными на предыдущих этапах.
values-search.yamldgctlDockerRegistry: docker.registry.example.com
dgctlStorage:
host: artifacts.example.com
secure: true
bucket: onpremise-artifacts
accessKey: AKIAIOSFODNN7EXAMPLE
secretKey: wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY
manifest: manifests/api-platform/1640661259.json
region: ''
api:
resources:
limits:
cpu: 1
memory: 3Gi
requests:
cpu: 100m
memory: 1Gi
nginx:
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 100m
memory: 200Mi
customCAs:
bundle: ''
# bundle: |
# -----BEGIN CERTIFICATE-----
# ...
# -----END CERTIFICATE-----
certsPath: ''Где:
-
dgctlDockerRegistry: endpoint вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС в форматеHOST:PORT. -
dgctlStorage: настройки доступа к хранилищу артефактов установки.host: endpoint S3-совместимого хранилища артефактов установки в форматеHOST:PORT.secure: использовать ли HTTPS для работы с S3-совместимым хранилищем. Значение по умолчанию:false.bucket: имя бакета S3.accessKey: идентификатор ключа для доступа к бакету S3.secretKey: секретный ключ для доступа к бакету S3.manifest: путь до файла с манифестом в форматеmanifests/api-platform/1640661259.json. Этот файл содержит в себе описания фрагментов данных, которые требуются сервисам для работы. См. Жизненный цикл артефактов установки.region: регион S3-совместимого хранилища.
-
api.resources: настройки вычислительных ресурсов для бэкенд-сервиса API. Чтобы узнать рекомендуемые значения ресурсов, см. Вычислительные ресурсы. -
nginx.resources: настройки вычислительных ресурсов для бэкенд-сервиса nginx. Чтобы узнать рекомендуемые значения ресурсов, см. Вычислительные ресурсы. -
customCAs: настройки пользовательских сертификатов.bundle: текстовое представление сертификата в формате X.509 PEM public-key.certsPath: директория для монтирования сертификата внутри контейнера.
-
-
Установите сервис с помощью Helm, используя подготовленный конфигурационный файл:
helm upgrade --install --version=VERSION --atomic --values ./values-search.yaml search-api 2gis-on-premise/search-apiВ параметре
--versionукажите нужную версию API-платформы. Список версий см. в разделе Релизы API-платформы.предупреждениеВерсии сервисов внутри компонента должны быть одинаковыми и совпадать с версией компонента.
Установите сервис Catalog APIs
-
Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь.
Настройка импорта данныхВы можете настроить процесс импорта новых данных для Catalog APIs. За это отвечают настройки группы
importerконфигурационного файла (см. ниже).Пример файла уже заполнен всеми необходимыми данными, собранными на предыдущих этапах.
values-catalog.yamldgctlDockerRegistry: docker.registry.example.com
imagePullSecrets: [onpremise-registry-creds]
dgctlStorage:
host: artifacts.example.com
secure: true
bucket: onpremise-artifacts
accessKey: AKIAIOSFODNN7EXAMPLE
secretKey: wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY
manifest: manifests/api-platform/1640661259.json
region: ''
verifySsl: true
api:
postgres:
host: catalog-postgresql.storage.example.local
port: 5432
name: onpremise_catalog
username: dbuser_catalog
password: 650D7AmZjSR1dkNa
ingress:
enabled: true
className: nginx
hosts:
- host: catalog-api.example.com
paths:
- path: /
pathType: Prefix
tls: []
# - hosts:
# - catalog-api.example.com
# secretName: secret.tls
search:
url: http://search-api
keys:
url: http://keys-service-api
token: CATALOG_APIS_TOKEN
stat:
url: 'http://stat-receiver'
enabled: false
request:
enabled: false
search:
enabled: false
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: 'https://license'
requestTimeout: 1s
customCAs:
bundle: ''
# bundle: |
# -----BEGIN CERTIFICATE-----
# ...
# -----END CERTIFICATE-----
certsPath: ''Где:
-
dgctlDockerRegistry: endpoint вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС в форматеHOST:PORT. -
imagePullSecrets: Kubernetes Secrets для доступа к реестру Docker, в котором находятся образы сервисов программного комплекса 2ГИС. -
dgctlStorage: настройки доступа к хранилищу артефактов установки.host: endpoint S3-совместимого хранилища артефактов установки в форматеHOST:PORT.secure: использовать ли HTTPS для работы с S3-совместимым хранилищем. Значение по умолчанию:false.bucket: имя бакета S3.accessKey: идентификатор ключа для доступа к бакету S3.secretKey: секретный ключ для доступа к бакету S3.manifest: путь до файла с манифестом в форматеmanifests/api-platform/1640661259.json. Этот файл содержит в себе описания фрагментов данных, которые требуются сервисам для работы. См. Жизненный цикл артефактов установки.region: регион S3-совместимого хранилища.verifySsl: включить ли проверку SSL-сертификатов при подключении кdgctlStorage.hostпо HTTPS. Значение по умолчанию:true.
-
api.postgres: настройки доступа к серверу PostgreSQL.host: имя хоста или IP-адрес сервера.port: порт, на котором слушает сервер.name: имя базы данных.username: имя пользователя.password: пароль пользователя.
-
api.ingress: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. URL, указанный в параметреingress.hosts.host, должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL. -
search: настройки доступа к сервису Search API.url: URL сервиса. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.
-
keys: настройки сервиса ключей.url: URL сервиса. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.token: сервисный токен для сохранения статистики использования (см. Установка сервиса API-ключей).
-
stat: настройки взаимодействия с сервисом сбора статистики.url: URL сервиса сбора статистики.enabled: включите, чтобы отправлять статистику использования ключей.request.enabled: включите, чтобы отправлять статистику по запросам к API.search.enabled: включите, чтобы отправлять данные по поисковым запросам.
-
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-адрес сервиса лицензий. Пример:https://license.requestTimeout: таймаут запросов к сервису лицензий.
-
customCAs: настройки пользовательских сертификатов.bundle: текстовое представление сертификата в формате X.509 PEM public-key.certsPath: директория для монтирования сертификата внутри контейнера.
-
-
Установите сервис с помощью Helm, используя подготовленный конфигурационный файл:
helm upgrade --install --version=VERSION --atomic --wait --timeout 7200s --values ./values-catalog.yaml catalog-api 2gis-on-premise/catalog-apiВ параметре
--versionукажите нужную версию API-платформы. Список версий см. в разделе Релизы API-платформы.предупреждениеВерсии сервисов внутри компонента должны быть одинаковыми и совпадать с версией компонента.
Если в конфигурационном файле были указаны настройки
importer, то при установке сервиса проверяется наличие данных в базе и при необходимости происходит импорт этих данных в PostgreSQL. Затем Helm выполняет установку самого сервиса.
4. Проверьте работоспособность установленных сервисов
Чтобы проверить работу сервисов поиска, с хоста в приватной сети example.com выполните GET-запрос:
curl catalog-api.example.com/3.0/items/geocode?key=API_KEY&q=City
Где:
API_KEY— значение созданного ключа.City— имя города, о котором вы хотите найти информацию.
При успешной установке сервис вернёт список результатов поиска в формате JSON.
Что дальше?
-
Ознакомьтесь с документацией API для работы с поиском:
-
Узнайте, как обновить API для работы с поиском.
-
Установите другие продукты программного комплекса 2ГИС:
-
Изучите рекомендации по обслуживанию системы.