النشر على Kubernetes

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

النشر على Kubernetes

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

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

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

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

  • Kubernetes v1.18+
  • helm 3.10+
  • RWX PVC مع إذن RW للمستخدم ذي المعرّف 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، وهو الإعداد الافتراضي للتثبيت community.

ثم افتح الملف 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 العام الخاص بها.

أخيرًا، قم بتمكين 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 الخاصة بك.

  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 إذا كنت تواجه صعوبات على منصتك. سيسعدنا مساعدتك في تشغيله.