Déployer sur Kubernetes

Guide étape par étape pour déployer OpenReplay sur Kubernetes.

Déployer sur Kubernetes

Le déploiement d’OpenReplay repose sur des Helm Charts, ce qui le rend entièrement compatible avec Kubernetes. Nous fournissons PostgreSQL et Redis, qui sont requis pour OpenReplay. Voici comment procéder.

Le déploiement d’OpenReplay sur Kubernetes nécessite :

  • Kubernetes v1.18+
  • helm 3.10+
  • un PVC RWX avec une permission RW pour l’utilisateur d’id 1001 (pour les composants partagés, si le cluster comporte plus d’un nœud). Veillez à remplacer hostPath par le nom du pvc créé dans /var/lib/openreplay/vars.yaml.
# In case of multiple nodes in the kubernetes cluster,
# You'll have to create an RWX PVC for shared components.
# If it's a single node, we'll use hostVolume, which is the default for the community/oss edition.
pvcRWXName: "hostPath"

OpenReplay nécessite également 2 vCPUs, 8 GB of RAM, 50 GB of storage (architecture x86) pour fonctionner correctement, sinon les services backend d’OpenReplay ne démarreront tout simplement pas. Ces spécifications suffisent pour un volume modéré, mais si vous prévoyez un trafic important, vous devriez monter en charge à partir de là.

Le déploiement a été testé sur les plateformes suivantes :

  • Cluster Kube local à nœud unique
  • Google Kubernetes Engine (GKE)
  • Amazon Elastic Kubernetes Service (EKS)
  • Microsoft Azure Kubernetes Service (AKS)
  • Scaleway Elements Kubernetes (Kapsule)

Connectez-vous à votre cluster et clonez le dépôt OpenReplay :

git clone https://github.com/openreplay/openreplay.git
cd openreplay/scripts/helmcharts

S’il y a plusieurs nœuds dans le cluster Kubernetes, vous devrez créer un PVC RWX (par exemple efs, dans le cas d’AWS) pour que les conteneurs partagent les données. S’il s’agit d’un nœud unique, nous utiliserons hostVolume, qui est la valeur par défaut pour l’installation community.

Ensuite, ouvrez le fichier vars.yaml avec la commande vim vars.yaml puis remplacez :

  • domainName : c’est là où OpenReplay sera accessible (c’est-à-dire openreplay.mycompany.com)
  • postgresqlPassword : mot de passe Postgres (définissez-le ou générez-en un aléatoire)
  • accessKey : requis pour le service de stockage d’objets (utilisez une chaîne générée aléatoirement)
  • secretKey : requis pour le service de stockage d’objets (utilisez une chaîne générée aléatoirement)
  • jwt_secret : requis pour l’API (utilisez une chaîne générée aléatoirement)

Assurez-vous d’avoir installé helm puis configurez 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

OpenReplay traite des données utilisateur sensibles et nécessite donc HTTPS pour fonctionner. Cela est obligatoire, sinon le tracker ne commencerait tout simplement pas à enregistrer. Il en va de même pour le tableau de bord : sans HTTPS, vous ne pourrez pas rejouer les sessions utilisateur.

Si votre cluster Kubernetes est dans le cloud (comme EKS, AKS ou GKE), le moyen le plus simple de gérer le SSL est de configurer un load balancer cloud et d’exécuter votre cluster derrière celui-ci. Une autre option consiste à générer ou à utiliser votre propre certificat SSL et à faire pointer votre sous-domaine (c’est-à-dire openreplay.mycompany.com) vers votre cluster. Plus de détails sur les deux options ci-dessous.

Configurer un load balancer cloud (option 1)

Section titled Configurer un load balancer cloud (option 1)

L’un des principaux avantages d’exécuter OpenReplay derrière un load balancer cloud est de faire gérer le certificat par le fournisseur cloud. Voici des guides étape par étape sur la façon de créer :

Assurez-vous ensuite que votre cluster provisionne un type de service LoadBalancer afin que le trafic provenant du load balancer cloud puisse être dirigé vers le backend d’OpenReplay. Maintenant, rendez-vous chez votre fournisseur de service DNS et créez un A Record qui pointe vers le cluster en utilisant son IP publique.

Enfin, activez use-forwarded-headers, en décommentant la ligne ci-dessous sous la section ingress-nginx, dans /var/lib/openreplay/vars.yaml :

ingress-nginx: &ingress-nginx
  controller:
    config:
      use-forwarded-headers: true

Tout est maintenant prêt, OpenReplay devrait être accessible sur votre sous-domaine. Vous pouvez créer un compte en visitant la page /signup (c’est-à-dire openreplay.mycompany.com/signup).

Apportez/générez votre certificat SSL (option 2)

Section titled Apportez/générez votre certificat SSL (option 2)

Au lieu de créer un load balancer, vous pouvez apporter (ou générer) votre propre certificat SSL.

  1. Tout d’abord, rendez-vous chez votre fournisseur de service DNS et ajoutez un A Record. Utilisez le domaine que vous avez fourni précédemment lors de l’étape d’installation et faites-le pointer vers le cluster en utilisant son IP publique.

  2. Si vous apportez votre propre certificat, créez un secret SSL à l’aide de la commande suivante : kubectl create secret tls openreplay-ssl -n app --key="private_key_file.pem" --cert="certificate.crt".

Remarque : Si vous n’avez pas de certificat, générez-en un, qui se renouvelle automatiquement, pour votre sous-domaine (celui fourni lors de l’installation) en utilisant Let’s Encrypt. Connectez-vous simplement à l’instance OpenReplay, exécutez cd /var/lib/openreplay/openreplay/scripts/helmcharts && bash certmanager.sh et suivez les étapes.

  1. Si vous souhaitez activer la redirection de http vers https (recommandé), décommentez le bloc ci-dessous, sous la section ingress-nginx, dans /var/lib/openreplay/vars.yaml :
ingress-nginx: &ingress-nginx
  controller:
    config:
      ssl-redirect: true
      force-ssl-redirect: true

Il convient de mentionner que notre ingress-nginx s’exécute par défaut sur les ports 80|443, mais cela peut être facilement modifié, si nécessaire, dans vars.yaml :

ingress-nginx: &ingress-nginx
  controller:
    service:
      ports:
        http: 80
        https: 443
  1. Enfin, réinstallez NGINX d’OpenReplay :
openreplay -R

Tout est maintenant prêt, OpenReplay devrait être accessible sur votre sous-domaine. Vous pouvez créer un compte en visitant la page /signup (c’est-à-dire openreplay.mycompany.com/signup).

Faites-le nous savoir sur Slack ou via une Github Issue si vous rencontrez des difficultés sur votre plateforme. Nous serons ravis de vous aider à le mettre en service.