Desplegar en Kubernetes
El despliegue de OpenReplay se basa en Helm Charts, lo que lo hace completamente compatible con Kubernetes. Incluimos PostgreSQL y Redis, que son necesarios para OpenReplay. Aquí está cómo hacerlo.
Requisitos previos
Section titled Requisitos previosEl despliegue de OpenReplay en Kubernetes requiere:
- Kubernetes v1.18+
- helm 3.10+
- PVC RWX con ID de usuario 1001 y permiso RW (para componentes compartidos, si el clúster tiene más de un nodo). Asegúrate de descomentar el bloque a continuación en
/var/lib/openreplay/vars.yamly actualizar el nombre del PVC para los componentes sink, storage y chalice:
# En caso de múltiples nodos en el clúster de Kubernetes,
# Tendrás que crear un PVC RWX para componentes compartidos.
# Si es un solo nodo, usaremos hostVolume, que es el predeterminado para la edición comunitaria/oss.
pvcRWXName: "hostPath"
OpenReplay también requiere 2 vCPUs, 8 GB de RAM, 50 GB de almacenamiento para funcionar correctamente, de lo contrario los servicios de backend de OpenReplay simplemente no se iniciarán. Estas especificaciones son suficientes para un volumen moderado, pero si esperas un tráfico alto, deberías escalar a partir de aquí.
El despliegue se ha probado en las siguientes plataformas:
- Clúster Kube local de un solo nodo
- Google Kubernetes Engine (GKE)
- Amazon Elastic Kubernetes Service (EKS)
- Microsoft Azure Kubernetes Service (AKS)
- Scaleway Elements Kubernetes (Kapsule)
Desplegar OpenReplay
Section titled Desplegar OpenReplayConéctate a tu clúster y clona el repositorio de OpenReplay:
git clone https://github.com/openreplay/openreplay.git
cd openreplay/scripts/helmcharts
Si hay múltiples nodos en el clúster de Kubernetes, tendrás que crear un PVC RWX (por ejemplo, efs, en caso de AWS) para que los contenedores compartan datos. Si es un solo nodo, usaremos hostVolume, que es el predeterminado para la instalación comunitaria.
Luego, abre el archivo vars.yaml con el comando vim vars.yaml y sustituye:
domainName: aquí será accesible OpenReplay (es decir, openreplay.mycompany.com)postgresqlPassword: contraseña de Postgres (establece una o genera una aleatoria)accessKey: requerido para el servicio de almacenamiento de objetos (utiliza una cadena generada aleatoriamente)secretKey: requerido para el servicio de almacenamiento de objetos (utiliza una cadena generada aleatoriamente)jwt_secret: requerido para la API (utiliza una cadena generada aleatoriamente)
Asegúrate de tener helm instalado y luego configura 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
Configurar TLS/SSL
Section titled Configurar TLS/SSLOpenReplay maneja datos de usuario sensibles y por lo tanto requiere HTTPS para funcionar. Esto es obligatorio, de lo contrario el rastreador simplemente no comenzará a grabar. Lo mismo ocurre con el tablero, sin HTTPS no podrás reproducir las sesiones de los usuarios.
Si tu clúster de Kubernetes está en la nube (como EKS, AKS o GKE), entonces la forma más fácil de manejar SSL es configurar un balanceador de carga en la nube y ejecutar tu clúster detrás de él. Otra opción es generar o usar tu propio certificado SSL y apuntar tu subdominio (es decir, openreplay.mycompany.com) a tu clúster. Más sobre ambas opciones a continuación.
Configurar un balanceador de carga en la nube (opción 1)
Section titled Configurar un balanceador de carga en la nube (opción 1)Uno de los principales beneficios de ejecutar OpenReplay detrás de un balanceador de carga en la nube es tener el certificado gestionado por el proveedor de la nube. A continuación se presentan guías paso a paso sobre cómo crear:
- AWS - Elastic Load Balancing
- Google - Cloud Load Balancing
- Azure - Load Balancer
- Digital Ocean - Configurar TLS/SSL
Luego asegúrate de que tu clúster provisiona un tipo de servicio LoadBalancer para que el tráfico del balanceador de carga en la nube se dirija al backend de OpenReplay. Ahora, ve a tu proveedor de servicios DNS y crea un Registro A que apunte al clúster usando su IP pública.
Finalmente, habilita use-forwarded-headers, descomentando la línea a continuación en la sección ingress-nginx, en /var/lib/openreplay/vars.yaml:
ingress-nginx: &ingress-nginx
controller:
config:
use-forwarded-headers: true
Ya está todo listo, OpenReplay debería ser accesible en tu subdominio. Puedes crear una cuenta visitando la página /signup (es decir, openreplay.mycompany.com/signup).
Traer/generar tu certificado SSL (opción 2)
Section titled Traer/generar tu certificado SSL (opción 2)Como alternativa a crear un balanceador de carga, puedes traer (o generar) tu propio certificado SSL.
-
Primero, ve a tu proveedor de servicios DNS y agrega un
Registro A. Utiliza el dominio que proporcionaste anteriormente durante el paso de instalación y apúntalo al clúster usando su IP pública. -
Si traes tu propio certificado, crea un secreto SSL usando el siguiente comando:
kubectl create secret tls openreplay-ssl -n app --key="private_key_file.pem" --cert="certificate.crt".
Nota: Si no tienes un certificado, genera uno que se renueve automáticamente para tu subdominio (el proporcionado durante la instalación) usando Let’s Encrypt. Simplemente conéctate a la instancia de OpenReplay, ejecuta
cd /var/lib/openreplay/openreplay/scripts/helmcharts && bash certmanager.shy sigue los pasos.
- Si deseas habilitar la redirección de http a https (recomendado), descomenta el bloque a continuación, bajo la sección
ingress-nginx, en/var/lib/openreplay/vars.yaml:
ingress-nginx: &ingress-nginx
controller:
config:
ssl-redirect: true
force-ssl-redirect: true
Cabe mencionar que nuestro ingress-nginx funciona por defecto en los puertos 80|443, pero esto se puede cambiar fácilmente, si es necesario, en vars.yaml:
ingress-nginx: &ingress-nginx
controller:
service:
ports:
http: 80
https: 443
- Finalmente reinstala OpenReplay NGINX:
openreplay -R
Ya está todo listo, OpenReplay debería ser accesible en tu subdominio. Puedes crear una cuenta visitando la página /signup (es decir, openreplay.mycompany.com/signup).
¿Tienes preguntas?
Section titled ¿Tienes preguntas?Por favor, háznoslo saber en Slack o con un problema en Github si tienes problemas en tu plataforma. Estaremos encantados de ayudarte a ponerlo en marcha.