Развёртывание из исходного кода

Пошаговое руководство по развёртыванию OpenReplay из исходного кода.

Развёртывание из исходного кода

OpenReplay можно развернуть из исходного кода. Его основные компоненты (Backend, API и Frontend) необходимо собрать и отправить в ваш собственный реестр контейнеров, прежде чем выполнять установку.

Минимальные характеристики машины, на которой работает OpenReplay, — 2 vCPUs, 8 GB of RAM, 50 GB of storage, на архитектуре x86, иначе серверные сервисы OpenReplay просто не запустятся. Этого должно быть достаточно для низкого/умеренного объёма. Если вы ожидаете высокий трафик, вам следует масштабироваться от этих значений.

1. Предварительные требования

Section titled 1. Предварительные требования
  1. Установите docker:
sudo apt update
sudo apt install docker.io -y
user=`whoami`
sudo chown $user /var/run/docker.sock
  1. Клонируйте репозиторий OpenReplay:
git clone https://github.com/openreplay/openreplay

2. Сборка серверных сервисов

Section titled 2. Сборка серверных сервисов
  1. Войдите в свой реестр контейнеров с помощью docker login <registry_url>. Если у вас есть учётная запись Docker Hub, просто выполните docker login.

  2. Соберите серверные компоненты, а затем отправьте их в свой реестр контейнеров:

cd openreplay/backend
sudo IMAGE_TAG=<my_tag_number> PUSH_IMAGE=1 DOCKER_REPO=index.docker.io/<username> bash build.sh 

Обратите внимание, что имя тега может быть любой строкой по вашему выбору; он будет создан в вашем Docker Registry и будет использоваться для идентификации этой конкретной версии кода (полезно, если вы также изменяете код).

Если всё пройдёт хорошо, в вашем Docker registry должен появиться список образов, собранных из имевшегося у вас исходного кода и готовых к установке. Список образов:

  • Storage
  • Sink
  • Integrations
  • HTTP
  • Heuristics
  • Ender
  • DB
  • Assets
  • Alerts
  • Chalice

3. Обновление образов

Section titled 3. Обновление образов
  1. Создайте секрет вашего реестра контейнеров:
kubectl create secret -n app docker-registry my-registry-secret \
        --docker-server=MY_CONTAINER_REGISTRY_URL \ # not required if docker hub
        --docker-username=MY_CONTAINER_REGISTRY_USERNAME \
        --docker-password=MY_CONTAINER_REGISTRY_PASSWORD \
        --docker-email=no@email.local 
  1. Чтобы использовать компоненты, которые вы только что собрали и отправили в свой реестр контейнеров, обновите файл vars.yaml, расположенный внутри папки openreplay/scripts/helmcharts. Просто добавьте раздел для каждого образа, который есть в вашем docker registry, со следующей информацией:
  • repository: должен указывать на MY_CONTAINER_REGISTRY_URL/COMPONENT_NAME (если вы используете Docker Hub, используйте вместо этого формат <username>/<component name>)
  • pullPolicy: установите значение “Always”
  • tag: значение IMAGE_TAG, использованное при сборке Backend и API
  • imagePullSecrets: секрет реестра контейнеров

Обратите внимание, что любой образ, который вы не указали в файле vars.yaml, будет развёрнут и установлен из официального репозитория OpenReplay, а это значит, что у вас не будет версии, собранной из вашего исходного кода.

Ниже приведён пример для сервиса alerts:

alerts:
  image:
    repository: rg.fr-par.scw.cloud/foss/alerts
    pullPolicy: Always
    tag: "v1.4.2"
  imagePullSecrets: 
    - name: my-registry-secret
  1. Откройте vars.yaml, затем отредактируйте:
  • domainName: это адрес, по которому будет доступен OpenReplay (т. е. openreplay.mycompany.com)
  1. Установите OpenReplay:
cd openreplay/scripts/helmcharts
helm upgrade --install databases ./databases -n db --create-namespace --wait -f ./vars.yaml --atomic
helm upgrade --install openreplay ./openreplay -n app --create-namespace --wait -f ./vars.yaml --atomic

Если вы когда-либо измените исходный код серверных сервисов или сервиса DB, вам придётся вернуться к шагу 3, а затем снова выполнить указанные выше команды.

OpenReplay работает с конфиденциальными данными пользователей и поэтому требует HTTPS для своей работы. Это обязательно, иначе трекер просто не начнёт запись. То же самое касается панели управления: без HTTPS вы не сможете воспроизводить пользовательские сессии.

Поэтому вам необходимо предоставить (или сгенерировать) собственный SSL-сертификат.

  1. Сначала перейдите к поставщику услуг DNS и создайте A Record. Используйте домен, который вы ранее указали на этапе установки, и направьте его на свою машину, используя её публичный IP-адрес.

  2. Если вы предоставляете собственный сертификат, создайте SSL-секрет Kubernetes с помощью следующей команды: kubectl create secret tls openreplay-ssl -n app --key="private_key_file.pem" --cert="certificate.crt".

Примечание: Если у вас нет сертификата, сгенерируйте автоматически обновляемый сертификат для вашего поддомена (того, который был указан во время установки) с помощью Let’s Encrypt. Выполните cd openreplay/scripts/helmcharts && bash certmanager.sh и следуйте инструкциям.

  1. Если вы хотите включить перенаправление с http на https (рекомендуется), раскомментируйте приведённый ниже блок в разделе ingress-nginx в файле vars.yaml:
ingress-nginx: &ingress-nginx
  controller:
    config:
      ssl-redirect: true
      force-ssl-redirect: true

Стоит отметить, что наш ingress-nginx по умолчанию работает на портах 80|443, но это легко изменить, при необходимости, в vars.yaml:

ingress-nginx: &ingress-nginx
  controller:
    service:
      ports:
        http: 80
        https: 443
  1. Наконец, переустановите NGINX OpenReplay:
 openreplay -R

4. Сборка и развёртывание Frontend

Section titled 4. Сборка и развёртывание Frontend

Наконец, если вы также хотите собрать frontend, вам нужно будет собрать образ с помощью следующей строки:

cd openreplay/frontend
IMAGE_TAG=<your tag> PUSH_IMAGE=1 DOCKER_REPO=myDockerHubID bash build.sh

После этого вернитесь к файлу vars.yaml и добавьте раздел, специфичный для frontend; он должен выглядеть аналогично тем, что вы добавили ранее для alerts и chalice:

frontend:
  image:
    repository: <YOUR DOCKER REGISTRY>/frontend
    pullPolicy: Always
    tag: <YOUR TAG>
  imagePullSecrets: 
    - name: <YOUR SECRET>

После добавления нового раздела в файл выполните команду openreplay -R (которая находится внутри папки scripts/helmcharts), и ваш новый frontend должен заработать.

Теперь всё готово, OpenReplay должен быть доступен на вашем поддомене. Вы можете создать учётную запись, перейдя на страницу /signup (т. е. openreplay.mycompany.com/signup).

Если у вас возникнут какие-либо проблемы, подключитесь к нашему Slack или загляните на наш Форум и получите помощь от нашего сообщества.