Развертывание в Kubernetes
Развертывание OpenReplay основано на Helm Charts, что обеспечивает полную совместимость с Kubernetes. Мы включаем PostgreSQL и Redis, которые необходимы для OpenReplay. Вот как это сделать.
Предварительные требования
Section titled Предварительные требованияДля развертывания OpenReplay на Kubernetes необходимо:
- Kubernetes v1.18+
- helm 3.10+
- RWX PVC с идентификатором пользователя 1001 и разрешением RW (для общих компонентов, если в кластере более одного узла). Убедитесь, что вы раскомментировали блок ниже в
/var/lib/openreplay/vars.yamlи обновили имя PVC для компонентов sink, storage и chalice:
# В случае нескольких узлов в кластере Kubernetes,
# Вам потребуется создать RWX PVC для общих компонентов.
# Если это один узел, мы будем использовать hostVolume, который является стандартом для сообщества/oss версии.
pvcRWXName: "hostPath"
OpenReplay также требует 2 vCPUs, 8 ГБ оперативной памяти, 50 ГБ хранилища для нормальной работы, в противном случае службы бэкенда OpenReplay просто не запустятся. Эти характеристики достаточны для умеренного объема, но если вы ожидаете высокого трафика, вам следует расширяться отсюда.
Развертывание было протестировано на следующих платформах:
- Локальный одноузловый кластер Kube
- Google Kubernetes Engine (GKE)
- Amazon Elastic Kubernetes Service (EKS)
- Microsoft Azure Kubernetes Service (AKS)
- Scaleway Elements Kubernetes (Kapsule)
Развертывание OpenReplay
Section titled Развертывание OpenReplayПодключитесь к своему кластеру и клонируйте репозиторий OpenReplay:
git clone https://github.com/openreplay/openreplay.git
cd openreplay/scripts/helmcharts
Если в кластере Kubernetes несколько узлов, вам нужно будет создать RWX PVC (например, efs, в случае AWS) для обмена данными между контейнерами. Если это один узел, мы будем использовать hostVolume, который является стандартом для установки сообщества.
Затем откройте файл vars.yaml с помощью команды vim vars.yaml и замените:
domainName: здесь будет доступен OpenReplay (например, openreplay.mycompany.com)postgresqlPassword: пароль Postgres (установите или сгенерируйте случайный)accessKey: требуется для службы объектного хранения (используйте случайно сгенерированную строку)secretKey: требуется для службы объектного хранения (используйте случайно сгенерированную строку)jwt_secret: требуется для API (используйте случайно сгенерированную строку)
Убедитесь, что у вас установлен helm, затем настройте 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
Настройка TLS/SSL
Section titled Настройка TLS/SSLOpenReplay обрабатывает конфиденциальные данные пользователей, поэтому требует HTTPS для работы. Это обязательно, иначе трекер просто не начнет запись. То же самое касается панели управления, без HTTPS вы не сможете воспроизводить сессии пользователей.
Если ваш кластер Kubernetes находится в облаке (например, EKS, AKS или GKE), то самый простой способ управления SSL - настроить облачный балансировщик нагрузки и запустить ваш кластер за его пределами. Другой вариант - создать или использовать собственный SSL-сертификат и направить ваш субдомен (например, openreplay.mycompany.com) на ваш кластер. Подробнее об обоих вариантах ниже.
Настройка облачного балансировщика нагрузки (вариант 1)
Section titled Настройка облачного балансировщика нагрузки (вариант 1)Одним из основных преимуществ работы OpenReplay за облачным балансировщиком нагрузки является управление сертификатом провайдером облака. Ниже приведены пошаговые руководства по созданию:
- AWS - Elastic Load Balancing
- Google - Cloud Load Balancing
- Azure - Load Balancer
- Digital Ocean - Настройка TLS/SSL
Затем убедитесь, что ваш кластер предоставляет тип службы LoadBalancer, чтобы трафик с облачного балансировщика нагрузки мог направляться на бэкенд OpenReplay. Теперь перейдите к своему DNS-провайдеру и создайте А запись, указывающую на кластер с использованием его общедоступного IP.
Наконец, включите use-forwarded-headers, раскомментировав строку ниже в разделе ingress-nginx в /var/lib/openreplay/vars.yaml:
ingress-nginx: &ingress-nginx
controller:
config:
use-forwarded-headers: true
Теперь все готово, OpenReplay должен быть доступен на вашем субдомене. Вы можете создать учетную запись, посетив страницу /signup (например, openreplay.mycompany.com/signup).
Привести/сгенерировать свой SSL-сертификат (вариант 2)
Section titled Привести/сгенерировать свой SSL-сертификат (вариант 2)В качестве альтернативы созданию балансировщика нагрузки вы можете привести (или сгенерировать) свой собственный SSL-сертификат.
-
Сначала перейдите к своему DNS-провайдеру и добавьте
А запись. Используйте домен, который вы указали ранее во время шага установки, и направьте его на кластер, используя его общедоступный IP. -
Если вы приводите свой собственный сертификат, создайте секрет SSL с помощью следующей команды:
kubectl create secret tls openreplay-ssl -n app --key="private_key_file.pem" --cert="certificate.crt".
Примечание: Если у вас нет сертификата, сгенерируйте его, который будет автоматически обновляться, для вашего субдомена (указанного во время установки) с помощью Let’s Encrypt. Просто подключитесь к экземпляру OpenReplay, выполните
cd /var/lib/openreplay/openreplay/scripts/helmcharts && bash certmanager.shи следуйте инструкциям.
- Если вы хотите включить перенаправление с http на https (рекомендуется), то раскомментируйте блок ниже, в разделе
ingress-nginx, в/var/lib/openreplay/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
- Наконец, переустановите OpenReplay NGINX:
openreplay -R
Теперь все готово, OpenReplay должен быть доступен на вашем субдомене. Вы можете создать учетную запись, посетив страницу /signup (например, openreplay.mycompany.com/signup).
Есть вопросы?
Section titled Есть вопросы?Пожалуйста, дайте нам знать в Slack или с помощью проблемы на Github, если у вас возникнут проблемы на вашей платформе. Мы будем рады помочь вам в запуске.