Urbi Pro | On-Premise | 2GIS Documentation

Installing Urbi Pro

  1. Consider getting familiar with:

  2. Make sure the necessary preparation steps are completed:

    1. Preparation for installation
    2. Fetching installation artifacts
    3. Installing API Keys service
    4. Installing Traffic API Proxy
    5. Installing maps API
    6. Installing search API
    7. Installing navigation API
  3. Collect the necessary information that was set or retrieved on previous steps:

    Object Example value How to get value
    Docker Registry mirror endpoint docker.storage.example.local:5000 See Fetching installation artifacts
    API Keys service endpoint keys.example.local See Installing API Keys service
    MapGL JS API endpoint mapgl.example.local See Installing maps API
    Catalog APIs endpoint catalog.example.local See Installing search API
    Isochrone API endpoint isochrone.example.local See Installing navigation API
    API Keys MAPGL_KEY
    CATALOG_KEY
    ISOCHRONE_KEY
    See Installing API Keys service
  4. Make sure that the resource requirements specified in the Helm charts are met:

    For more information on how to do this, refer to the System requirements document.

  5. Choose domain names for the Urbi Pro services. For example:

    • Domain name for the API backend: pro-api.example.local
    • Domain name for the frontend: pro-ui.example.com

Place a PostgreSQL cluster with the domain name pro-postgresql.storage.example.local in the private network. This instruction assumes that the cluster works on the standard port 5432.

Configure the PostgreSQL cluster for usage as a storage:

  1. Connect to the cluster a superuser (usually postgres).

  2. Create a database user that will be used for the service. Set a password for the user:

    create user dbuser_pro password '';
    
  3. Create a database owned by this user:

    create database onpremise_pro owner dbuser_pro;
    

Place an S3-compatible storage (e.g., Ceph) with the domain name pro-s3.storage.example.local in the private network. This instruction assumes that the storage works on the standard port 80.

Configure the S3-compatible storage:

  1. Create a user that will be used for the service. Remember the credentials for the user:

    • Access key: ``
    • Secret key: ``

    Remember the credentials for the user.

  2. Choose bucket names that will be used for the service. For example:

    • Bucket with common assets, aggregations, and filters: assets.
    • Bucket with prepared layer data: layer_data.
    • Bucket with user-created assets, aggregations, and filters: user_assets.

Place an Elasticsearch cluster with the domain name pro-elastic.storage.example.local in the private network. This instruction assumes that the cluster works on the standard port 9200.

Configure the cluster:

  1. Create a user that will be used for the service. Remember the credentials for the user:

    • Username: ``
    • Password: ``

    Remember the credentials for the user.

To install Pro API, use Helm chart. All parameters are described in values.yaml.

To install Pro API:

  1. Create configuration file values-pro-ui.yaml:

    values-pro-api.yaml
    dgctlDockerRegistry: ''
    
    s3:
        layerDataBucket: ''
        userAssetsDataBucket: ''
    
    api:
        serviceAccount: ''
        tempPath: /tmp
        allowAnyOrigin: false
        loggingFormat: simple
    
    postgresql:
        connectionString: ''
        connectionStringReadonly: ''
        password: ''
    
    key:
        url: ''
        token: ''
    
    elastic:
        host: ''
        credentials: ''
    
    redis:
        host: ''
        port: ''
    
    catalog:
        url: ''
        key: ''
    
    navi:
        url: ''
        key: ''
    
    search:
        url: ''
    
    appAssetImporterName: asset-importer
    appUserAssetImporterName: user-asset-importer
    
    assetImporter:
        repository: 2gis-on-premise/pro-importer
        tag: 1.0.23
        schedule: 0 18 * * *
        backoffLimit: 2
        successfulJobsHistoryLimit: 3
        nodeSelector: {}
        maxParallelJobs: 4
        enabled: true
        startOnDeploy: true
    
    resources:
        requests:
            cpu: 400m
            memory: 256M
        limits:
            cpu: 1
            memory: 1024M
    

    Where:

    • dgctlDockerRegistry: your Docker Registry endpoint where On-Premise services' images reside. Example: HOST:PORT.

    • s3: S3 storage settings.

      • layerDataBucket: S3 bucket with prepared layer data.
      • userAssetsDataBucket: S3 bucket with user-created assets, aggregations, and filters.
    • api: environment variables.

      • serviceAccount: Kubernetes service account.
      • tempPath: path to directory used for temp data.
      • allowAnyOrigin: CORS policy — allow any origin to perform requests to Pro API service.
      • loggingFormat: logging format. Possible options: default — compact JSON, renderedCompactJson — rendered JSON format, simple — just text.
    • postgresql: access settings for the PostgreSQL server.

      • connectionString: connection string to the PostgreSQL database — Server=SERVER_URL;Database=DB_NAME;UID=USER_NAME;.
      • connectionStringReadonly: connection string to the readonly node of PostgreSQL database — Server=SERVER_URL;Database=DB_NAME;UID=USER_NAME;.
      • password: user password to connect to the PostgreSQL database.
    • key: key management service access settings.

      • url: API URL of keys.api service for managing partners' keys to 2GIS services. Example: HTTP(S)://HOST.
      • token: keys.api access token.
    • elastic: Elasticsearch settings.

      • host: Elasticsearch host address. Example: HTTP(S)://HOST:PORT.
      • credentials: username and password to connect to the Elasticsearch — USER_NAME:PASSWORD.
    • redis: Redis settings.

      • host: Redis host address. Example: HTTP(S)://HOST.
      • port: Redis port.
    • catalog: Catalog APIs settings.

    • navi: Isochrone API settings.

    • search: Search API settings.

      • url: URL for Search API. Example: HTTP(S)://HOST.
    • appAssetImporterName: Data Import job name.

    • appUserAssetImporterName: User Data Import job name.

    • assetImporter: import cron job settings.

      • repository: Docker Repository Image.
      • tag: Docker image tag.
      • schedule: import job schedule in cron-format. Example: */10 * * * *.
      • backoffLimit: the number of retries before considering a Job as failed.
      • successfulJobsHistoryLimit: how many completed and failed jobs should be kept.
      • nodeSelector: Kubernetes node selectors.
      • maxParallelJobs: how many import jobs can be run simultaneously.
      • enabled: if assetImporter is enabled for the service.
      • startOnDeploy: indicates that asset import should start when service installed or updated.
    • resources: limits for the application service. The actual information about the recommended settings values is provided in the system requirements table.

  2. Deploy the service with Helm using the created values-pro-api.yaml configuration file:

    helm upgrade --install --version=1.10.0 --atomic --values ./values-pro-api.yaml pro-api 2gis-on-premise/pro-api
    

To install Pro UI, use Helm chart. All parameters are described in values.yaml.

To install Pro UI:

  1. Create configuration file values-pro-ui.yaml:

    values-pro-ui.yaml
    dgctlDockerRegistry: ''
    
    ui:
        appLocale: en_AE
    
        appInitialMapCenter: [37.64, 55.74]
    
        api:
            url: ''
    
        mapgl:
            host: ''
            key: ''
    
        resources:
            requests:
                cpu: 300m
                memory: 256Mi
            limits:
                cpu: 1
                memory: 384Mi
    
        ingress:
            enabled: true
            hosts:
                - host: ''
    

    Where:

    • dgctlDockerRegistry: your Docker Registry endpoint where On-Premise services' images reside. Example: HOST:PORT.

    • ui.appLocale: language in the app. Possible values: en_AE, ru_RU.

    • ui.appInitialMapCenter: default map coordinates, it contains of two numbers in an array: [lng, lat]. Example: [55.27, 25.2] for Dubai, [37.64, 55.74] for Moscow.

    • ui.api.url: base URL for the API. Example: HTTP(S)://HOST/.

    • ui.mapgl.host: host for the MapGL JS API service without protocol and trailing slash. Example: HOST.

    • ui.mapgl.key: key for the MapGL JS API service.

    • ui.resources: limits for the application service. The actual information about the recommended settings values is provided in the system requirements table.

    • ui.ingress: configuration of the Ingress resource. Adapt it to your Ingress installation. The URL specified in the ingress.hosts.host parameter should be accessible from the outside of your Kubernetes cluster, so that users in the private network can browse the URL.

  2. Deploy the service with Helm using the created values-pro-ui.yaml configuration file:

    helm upgrade --install --version=1.10.0 --atomic --values ./values-pro-ui.yaml pro-ui 2gis-on-premise/pro-ui
    

Send the following request using cURL or similar tool:

https://pro-api.example.local/building/items?bounds=POLYGON%20%28%2854.605596%2024.429549%2C%2054.539606%2024.429549%2C%2054.539606%2024.413378%2C%2054.605596%2024.413378%2C%2054.605596%2024.429549%29%29

The response should return a HTTP 200 status code and a list of elements in JSON format.

What's next?

Find out how to update the service:

Install other On-Premise products: