النشر على Kubernetes

دليل خطوة بخطوة لنشر OpenReplay على Kubernetes.

النشر على Kubernetes

يعتمد نشر OpenReplay على Helm Charts، مما يجعله متوافقًا تمامًا مع Kubernetes. نحن نقوم بتضمين PostgreSQL وRedis، وهما مطلوبان لـ OpenReplay. إليك كيفية القيام بذلك.

المتطلبات الأساسية

Section titled المتطلبات الأساسية

يحتاج نشر OpenReplay على Kubernetes إلى:

  • Kubernetes v1.18+
  • helm 3.10+
  • RWX PVC مع إذن القراءة والكتابة لمعرّف المستخدم 1001 (للمكونات المشتركة، إذا كان لدى المجموعة أكثر من عقدة واحدة). تأكد من استبدال hostPath باسم الـ pvc الذي تم إنشاؤه في /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 أيضًا 2 vCPUs, 8 GB of RAM, 50 GB of storage (بنية x86) للعمل بشكل صحيح، وإلا فإن خدمات الواجهة الخلفية لـ OpenReplay لن تبدأ ببساطة. هذه المواصفات كافية لحجم معتدل، ولكن إذا كنت تتوقع حركة مرور عالية، فيجب عليك التوسع من هنا.

تم اختبار النشر على المنصات التالية:

  • مجموعة Kube محلية بعقدة واحدة
  • Google Kubernetes Engine (GKE)
  • Amazon Elastic Kubernetes Service (EKS)
  • Microsoft Azure Kubernetes Service (AKS)
  • Scaleway Elements Kubernetes (Kapsule)

اتصل بمجموعتك واستنسخ مستودع OpenReplay:

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

إذا كان هناك عدة عقد في مجموعة Kubernetes، فسيتعين عليك إنشاء PVC من نوع RWX (على سبيل المثال 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

يتعامل OpenReplay مع بيانات المستخدم الحساسة وبالتالي يتطلب HTTPS للعمل. هذا إلزامي، وإلا فإن المتتبع لن يبدأ التسجيل ببساطة. ينطبق الأمر نفسه على لوحة التحكم، فبدون HTTPS لن تتمكن من إعادة تشغيل جلسات المستخدم.

إذا كانت مجموعة Kubernetes الخاصة بك في السحابة (مثل EKS أو AKS أو GKE)، فإن أسهل طريقة للتعامل مع SSL هي إعداد موازن تحميل سحابي وتشغيل مجموعتك خلفه. هناك خيار آخر وهو إنشاء أو استخدام شهادة SSL الخاصة بك وتوجيه النطاق الفرعي الخاص بك (أي openreplay.mycompany.com) إلى مجموعتك. المزيد عن كلا الخيارين أدناه.

إعداد موازن تحميل سحابي (الخيار 1)

Section titled إعداد موازن تحميل سحابي (الخيار 1)

أحد الفوائد الرئيسية لتشغيل OpenReplay خلف موازن تحميل سحابي هو أن تتم إدارة الشهادة من قبل مزود السحابة. فيما يلي أدلة خطوة بخطوة حول كيفية إنشاء:

ثم تأكد من أن مجموعتك توفر نوع خدمة LoadBalancer حتى يمكن توجيه حركة المرور من موازن التحميل السحابي إلى الواجهة الخلفية لـ OpenReplay. الآن، اذهب إلى مزود خدمة DNS الخاص بك وأنشئ A Record يشير إلى المجموعة باستخدام عنوان IP العام الخاص بها.

أنت الآن جاهز تمامًا، يجب أن يكون OpenReplay متاحًا على نطاقك الفرعي. يمكنك إنشاء حساب بزيارة صفحة /signup (أي openreplay.mycompany.com/signup).

جلب/إنشاء شهادة SSL الخاصة بك (الخيار 2)

Section titled جلب/إنشاء شهادة SSL الخاصة بك (الخيار 2)

كبديل لإنشاء موازن تحميل، يمكنك جلب (أو إنشاء) شهادة SSL الخاصة بك.

  1. أولاً، اذهب إلى مزود خدمة DNS الخاص بك وأضف A Record. استخدم النطاق الذي قدمته سابقًا أثناء خطوة التثبيت ووجهه إلى المجموعة باستخدام عنوان IP العام الخاص بها.

  2. إذا كنت تجلب شهادتك الخاصة، فأنشئ سرّ 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 واتباع الخطوات.

  1. إذا كنت ترغب في تمكين إعادة التوجيه من 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
  1. أخيرًا، أعد تثبيت OpenReplay NGINX:
openreplay -R

أنت الآن جاهز تمامًا، يجب أن يكون OpenReplay متاحًا على نطاقك الفرعي. يمكنك إنشاء حساب بزيارة صفحة /signup (أي openreplay.mycompany.com/signup).

يرجى إعلامنا على Slack أو عبر Github Issue إذا كنت تواجه صعوبات على منصتك. سنكون سعداء بمساعدتك في تشغيله.