GIS-платформа | On-Premise | 2GIS Documentation
On-Premise

Установка GIS Platform

Важное примечание:

Все пароли и ключи в этом разделе приведены в иллюстративных целях.

При реальной установке рекомендуется использовать более сложные и надёжные пароли.

  1. По возможности познакомьтесь с:

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

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

    Объект Пример значения Как получить значение
    Эндпоинт зеркала реестра Docker docker.storage.example.local:5000 См. Получение артефактов установки
    Эндпоинт API сервиса ключей keys.example.local См. Установка сервиса ключей
    Эндпоинт Tiles API tiles.example.local См. Установка API для работы с картами
    Эндпоинт Catalog API catalog.example.local См. Установка API для работы с поиском
    Эндпоинт прокси для API пробок traffic-proxy.example.local См. Установка прокси для API пробок
    API-ключи и сервисные токены CATALOG_KEY_AAAAAA-111111 См. Установка сервиса ключей
  4. Убедитесь, что удовлетворены следующие требования к ресурсам (требования приведены с учётом минимального числа реплик):

    • Для testing-окружения:

      Сервис vCPU RAM Хранилище
      Для сервиса Portal 4 2 ГБ
      Для сервиса SPCore 16 8 ГБ
      Для хранилища PostgreSQL 12 6 ГБ 100 ГБ
      Для S3-совместимого хранилища 4 TБ*
      Для сервиса ZooKeeper 4 4 ГБ
      Итоговое количество: 36 20 ГБ 4.1 ТБ
    • Для production-окружения:

      Сервис vCPU RAM Хранилище
      Для сервиса Portal 4 2 ГБ
      Для сервиса SPCore 16 8 ГБ
      Для хранилища PostgreSQL 32 64 ГБ 100 ГБ
      Для S3-совместимого хранилища 4 TБ*
      Для сервиса ZooKeeper 8 16 ГБ
      Итоговое количество: 60 90 ГБ 4.1 ТБ

    * Эти требования к хранилищу предполагают хранение большого объема тайлированных снимков в высоком разрешении (например, спутниковых снимков). Если вы не планируете хранить данные подобного рода, то требования к объему хранилища могут быть снижены.

    Примечание:

    Подробная информация о системных требованиях для отдельных сервисов и компонентов программного комплекса 2ГИС приведена в документе Системные требования.

  5. Определите доменное имя для сервиса.

    Пример: gis-platform.example.com

Разместите кластер PostgreSQL 11 с доменным именем gis-platform-postgresql.storage.example.local в приватной сети. В этом руководстве предполагается, что кластер работает на стандартном порту 5432.

Настройте кластер PostgreSQL для использования в качестве хранилища:

  1. Подключитесь к кластеру от имени суперпользователя (обычно это postgres).

  2. Создайте пользователя базы данных, который будет использоваться для сервиса. Установите пароль для него.

    create user gisplatform_superuser password 'GISPLATFORM_Db_Owner_Password_1234';
    
  3. Создайте базу данных, принадлежащую этому пользователю.

    create database onpremise_gisplatform owner gisplatform_superuser;
    
  4. Установите расширение PostGIS.

    \c onpremise_gisplatform
    
    CREATE EXTENSION postgis WITH SCHEMA public;
    

Разместите S3-совместимое хранилище (например, Ceph) с доменным именем gis-platform-s3.storage.example.local в приватной сети. В этом руководстве предполагается, что хранилище работает на стандартном порту 80.

Настройте S3-совместимое хранилище:

  1. Создайте пользователя, который будет использоваться для сервиса. Запомните ключи доступа для этого пользователя.

    Пример:

    • Access key: PHEI4AHTHEETHAHXEEGE
    • Secret key: aiw6ahlaeshahngaiJaebie6aeth0aiV2pucuey1
  2. Создайте группу (region, zone group), которая будет использоваться для сервиса.

    Пример: US

  3. Определите названия бакетов (buckets), которые будут использоваться для сервиса.

    Пример:

    • Бакет для основных данных: spstatic
    • Бакет для сессионных данных: spsession
  1. Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь.

    Пример файла уже заполнен всеми необходимыми данными, собранными на предыдущих этапах.

    values-gis-platform.yaml
    dgctlDockerRegistry: docker.storage.example.local:5000
    
    external_hostname: gis-platform.example.com
    
    spcore:
        admin:
            email: admin@example.com
            password: Oi3ha5eiL9OquooZ
    
        catalog:
            url: https://catalog.example.local
            key: CATALOG_KEY_AAAAAA-111111
    
        jwt:
            token_admin: xeep2nahjooGhaa3ke8ahy2moogh7ieB
            token_key: aihu6YaiM7owaequohpheizahvoh4go5
    
        pg:
            host: gis-platform-postgresql.storage.example.local
            port: 5432
            user: gisplatform_superuser
            password: GISPLATFORM_Db_Owner_Password_1234
            dbname: onpremise_gisplatform
    
        replicaCount: 16
    
        resources:
            requests:
                cpu: 800m
                memory: 4096Mi
            limits:
                cpu: 800m
                memory: 4096Mi
    
        s3:
            host: gis-platform-s3.storage.example.local
            access_key: PHEI4AHTHEETHAHXEEGE
            secret_key: aiw6ahlaeshahngaiJaebie6aeth0aiV2pucuey1
            region: US
            bucket: spstatic
            session_bucket: spsession
    
    zookeeper:
        replicaCount: 2
    
        resources:
            requests:
                cpu: 300m
                memory: 1024Mi
            limits:
                cpu: 500m
                memory: 2048Mi
    
    portal:
        replicaCount: 2
    
        max_body_size: 100m
    
        resources:
            requests:
                cpu: 100m
                memory: 512Mi
            limits:
                cpu: 100m
                memory: 512Mi
    
    ingress:
        hosts:
            - host: gis-platform.example.com
    

    Где:

    • dgctlDockerRegistry: эндпоинт вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС.

    • external_hostname: FQDN для сервисов GIS-платформы. Веб-интерфейсы будут доступны по этому FQDN через HTTPS.

    • spcore: настройки бэкенд-сервиса SPCore.

      • admin: учетные данные администратора.

        • email: email администратора.
        • password: пароль администратора.
      • catalog: настройки доступа к сервису Catalog API. Этот сервис обеспечивает взаимодействие с Geocoder API и Suggest API.

        • url: FQDN эндпоинта Catalog API. Значение должно быть задано в формате http(s)://catalog.example.local, без слеша / в конце. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.
        • key: отдельный сервисный токен для доступа к сервисам поиска. Подробнее см. в документации сервиса API Keys.
      • jwt: настройки генерации веб-токенов JSON (JSON Web Tokens, JWT).

        • token_admin: токен администратора, с которым будет производиться вход в веб-интерфейс администратора. Значением должна быть случайная строка не короче 32 символов.
        • token_key: токен для генерации JWT cookies. Token for JWT cookies generation. Значением должна быть случайная строка не короче 32 символов.
      • pg: настройки доступа к серверу PostgreSQL.

        • host: имя хоста или IP-адрес сервера.
        • port: порт, на котором слушает сервер.
        • user and password: реквизиты для доступа к базе данных, указанной в параметре dbname. Пользователь должен быть либо владельцем этой базы данных, либо суперпользователем.
        • dbname: имя базы данных.
      • replicaCount: число реплик сервиса SPCore.

      • resources: настройки вычислительных ресурсов для сервиса. Для получения актуальной информации о рекомендуемых значениях настроек в этой секции см. таблицу с минимальными системными требованиями.

      • s3: настройки S3-совместимого хранилища (для хранения растровых изображений).

        • access_key: идентификатор ключа (S3 access key).
        • secret_key: секретный ключ (S3 secret key).
        • host: FQDN эндпоинта S3-совместимого хранилища.
        • region: регион S3.
        • bucket: имя бакета для хранения растровых изображений.
        • session_bucket: имя бакета для хранения эскизов этих изображений.
    • zookeeper: настройки бэкенд-сервиса ZooKeeper.

      • replicaCount: число реплик сервиса ZooKeeper. Значение этой настройки может задаваться в пределах от 1 до 3.
      • resources: настройки вычислительных ресурсов для сервиса. Для получения актуальной информации о рекомендуемых значениях настроек в этой секции см. таблицу с минимальными системными требованиями.
    • portal: настройки фронтенд-сервиса Portal.

      • replicaCount: число реплик сервиса Portal.
      • max_body_size: максимальный размер файла, который можно загрузить через веб-интерфейс Portal.
      • resources: настройки вычислительных ресурсов для сервиса. Для получения актуальной информации о рекомендуемых значениях настроек в этой секции см. таблицу с минимальными системными требованиями.
    • ingress: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. URL, указанный в параметре ingress.hosts.host, должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL.

  2. Выполните установку GIS-платформы.

    В результате этой операции произойдет следующее:

    1. Значение настройки spcore.replicaCount будет принудительно установлено равным 1.
    2. Все сервисы будут сброшены до изначального состояния.
    3. Будут инициализированы требуемые структуры данных и будет выполнена миграция баз данных.

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

    helm upgrade --install --version=1.4.5 --atomic --wait-for-jobs --values ./values-gis-platform.yaml gis-platform 2gis-on-premise/gis-platform --set spcore.reset_cluster=true
    

    Дождитесь завершения операции. Когда первая установка будет завершена, в логах пода spcore будут присутствовать похожие сообщения:

    Now listening on: http://[::]:5051
    Application started. Press Ctrl+C to shut down.
    
  3. Выполните начальную конфигурацию GIS-платформы:

    1. Задайте значения следующих переменных среды окружения:

      export GIS_PLATFORM_URL=https://gis-platform.example.com  # значение настройки external_hostname
      export GIS_PLATFORM_PASS=Oi3ha5eiL9OquooZ                 # значение настройки spcore.admin.password
      export GIS_PLATFORM_TILES_API=https://tiles.example.local
      export GIS_PLATFORM_TRAFFIC_API=https://traffic-proxy.example.local
      
    2. Запустите конфигурационный скрипт:

      helm pull --untar 2gis-on-premise/gis-platform
      cd gis-platform/gis-platform-config
      ./configure.sh
      

      Примечание:

      Начиная с версии 1.1.0 программного комплекса 2ГИС, можно передать скрипту configure.sh аргумент -k.

      Этот аргумент позволяет пропустить проверку безопасности соединения при подключении по HTTPS. Таким образом, любые возможные ошибки, связанные с использованием недоверенных SSL-сертификатов (например, самоподписанных сертификатов) сервисами GIS-платформы, будут проигнорированы.

  4. Проверьте работоспособность сервисов GIS-платформы:

    1. Откройте адрес https://gis-platform.example.com в браузере (значение настройки external_hostname).

    2. Войдите в веб-интерфейс, используя следующие учетные данные:

      1. Имя пользователя: значение настройки admin.
      2. Пароль: значение настройки spcore.admin.password.

    Вы должны успешно войти в веб-интерфейс.

  5. После успешной попытки входа, выполните второй этап установки с помощью Helm, используя подготовленный конфигурационный файлvalues-gis-platform.yaml:

    helm upgrade --install --version=1.4.5 --atomic --wait-for-jobs --values ./values-gis-platform.yaml gis-platform 2gis-on-premise/gis-platform
    

    Важное примечание:

    Эта команда отличается от приведенной выше: в ней отсутствует аргумент --set spcore.reset_cluster=true, так как сервисы были сброшены в исходное состояние ранее. Не используйте команду для выполнения начальной установки из шага 2.

Что дальше?