كيفية إعداد منصة Eclipse Theia Cloud IDE على DigitalOcean Kubernetes

اختار الكاتب صندوق التبرعات المفتوح والمجاني لتلقي تبرع كجزء من برنامج الكتابة من أجل التبرعات.

المقدمة

مع أدوات المطورين التي تتحول إلى السحابة، ينمو إنشاء واعتماد منصات بيئة تطوير متكاملة في السحابة. تعتبر بيئات التطوير المتكاملة في السحابة متاحة من كل نوع من الأجهزة الحديثة من خلال متصفحات الويب، وتوفر العديد من المزايا لسيناريوهات التعاون في الوقت الحقيقي. يوفر العمل في بيئة تطوير متكاملة في السحابة بيئة تطوير واختبار موحدة لك ولفريقك، مع تقليل عدم التوافق مع المنصات. وبما أنها تعتمد بشكل أساسي على تقنيات السحابة، فإنها قادرة على الاستفادة من المجموعة لإنجاز المهام، مما يمكن أن يتجاوز بشكل كبير الطاقة والموثوقية لجهاز كمبيوتر تطوير واحد.

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

في هذا البرنامج التعليمي، ستقوم بإعداد الإصدار الافتراضي من منصة Eclipse Theia للتطوير السحابي على عقد Kubernetes الخاص بك في DigitalOcean وتعريضه في نطاقك، مؤمنًا بشهادات Let’s Encrypt ومتطلبًا من الزائرين المصادقة. في النهاية، سيكون Eclipse Theia يعمل على عقد Kubernetes الخاص بك ومتاحًا عبر HTTPS ومتطلبًا من الزائرين تسجيل الدخول.

المتطلبات المسبقة

الخطوة 1 — تثبيت وت

للبدء، ستقوم بتثبيت Eclipse Theia على عقد Kubernetes الخاص بك في DigitalOcean. بعد ذلك، ستقوم بتعريضه على النطاق المطلوب باستخدام Nginx Ingress.

نظرًا لأنك قمت بإنشاء نموذجين للنشر ومورد كجزء من المتطلبات الأساسية، يمكنك حذفهم بحرية عن طريق تشغيل الأوامر التالية:

  1. kubectl delete -f hello-kubernetes-ingress.yaml
  2. kubectl delete -f hello-kubernetes-first.yaml
  3. kubectl delete -f hello-kubernetes-second.yaml

لهذا البرنامج التعليمي، ستخزن تكوين النشر على جهازك المحلي، في ملف يسمى eclipse-theia.yaml. قم بإنشائه باستخدام الأمر التالي:

  1. nano eclipse-theia.yaml

أضف السطور التالية إلى الملف:

eclipse-theia.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: theia
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: theia-next
  namespace: theia
spec:
  ingressClassName: nginx
  rules:
  - host: theia.your_domain
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: theia-next
            port:
              number: 80
---
apiVersion: v1
kind: Service
metadata:
 name: theia-next
 namespace: theia
spec:
 ports:
 - port: 80
   targetPort: 3000
 selector:
   app: theia-next
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: theia-next
  name: theia-next
  namespace: theia
spec:
  selector:
    matchLabels:
      app: theia-next
  replicas: 1
  template:
    metadata:
      labels:
        app: theia-next
    spec:
      containers:
      - image: francoisvans/theia-docker-test
        imagePullPolicy: Always
        name: theia-next
        ports:
        - containerPort: 3000

هذا التكوين يحدد مساحة أسماء، ونشر، وخدمة، وإنغريس. تسمى مساحة الأسماء theia وستحتوي على جميع كائنات Kubernetes المتعلقة بـ Eclipse Theia، مفصولة عن بقية العقد. يتكون النشر من نسخة واحدة من صورة Docker Theia مع منفذ 3000 المكشوف على الحاوية. تبحث الخدمة عن النشر وتعيد تعيين منفذ الحاوية إلى المنفذ HTTP المعتاد، 80، مما يتيح الوصول إلى Eclipse Theia داخل العقد.

الإنغريس تحتوي على قاعدة لخدمة الخدمة على المنفذ 80 خارجيًا على النطاق المطلوب الخاص بك. في التعليقات الخاصة به، تحدد أنه يجب استخدام متحكم Nginx Ingress لمعالجة الطلبات. تذكر أن تستبدل theia.your_domain بالنطاق الذي ترغب في استخدامه والذي قمت بتوجيهه إلى محمل التحميل الخاص بعقدك، ثم احفظ وأغلق الملف.

احفظ وأغلق الملف.

ثم، قم بإنشاء التكوين في Kubernetes عن طريق تشغيل الأمر التالي:

  1. kubectl apply -f eclipse-theia.yaml

سيكون المخرج مشابهًا لهذا:

Output
namespace/theia created ingress.networking.k8s.io/theia-next created service/theia-next created deployment.apps/theia-next created

يمكنك مشاهدة إنشاء حاوية Eclipse Theia عن طريق تشغيل:

  1. kubectl get pods -w -n theia

سيكون الإخراج على الشكل التالي:

Output
NAME READY STATUS RESTARTS AGE theia-next-6f6b98dd4f-qknhb 1/1 Running 0 2m30s

بعد بعض الوقت، سيتحول الحال إلى RUNNING، مما يعني أنك قمت بتثبيت Eclipse Theia بنجاح على مجموعتك.

انتقل إلى نطاقك على المتصفح. سترى واجهة محرر Eclipse Theia الافتراضية:

لقد قمت بنشر Eclipse Theia على مجموعة Kubernetes الخاصة بـ DigitalOcean وقمت بتعريضها على النطاق المطلوب بواسطة Ingress. في الخطوة التالية، ستؤمن الوصول إلى نشر Eclipse Theia الخاص بك عن طريق تمكين مصادقة الدخول.

الخطوة 2 — تمكين مصادقة الدخول لنطاقك

في هذه الخطوة، ستقوم بتمكين مصادقة اسم المستخدم وكلمة المرور لنشر Eclipse Theia الخاص بك. ستحقق هذا من خلال تجميع قائمة من الاقترانات الصحيحة لتس

يأتي أداة htpasswd من خادم الويب أباتشي وتُستخدم لإنشاء ملفات تخزين قوائم مجموعات تسجيل الدخول. يكون تنسيق ملفات htpasswd عبارة عن مجموعة واحدة اسم_المستخدم:كلمة_المرور_المشفرة لكل سطر، وهذا هو التنسيق الذي يتوقع وحدة تحكم مدخل Nginx أن تتبعه القائمة.

أولاً، قم بتحديث ذاكرة التخزين المؤقتة لمدير الحزم:

  1. sudo apt update

ثم، قم بتثبيت htpasswd على نظامك عن طريق تشغيل الأمر التالي:

  1. sudo apt install apache2-utils -y

ستقوم بتخزين القائمة في ملف يُسمى auth. قم بإنشائه عن طريق تشغيل:

  1. touch auth

يجب أن يكون اسم هذا الملف auth لأن وحدة تحكم مدخل Nginx تتوقع أن يحتوي السر على مفتاح يُسمى data.auth. إذا كان مفقودًا، ستعيد الوحدة التحكم رمز حالة HTTP 503 الخدمة غير متوفرة.

أضف مجموعة اسم مستخدم وكلمة مرور إلى auth عن طريق تشغيل الأمر التالي:

  1. htpasswd auth username

تذكر أن تستبدل اسم_المستخدم بالاسم المستخدم المطلوب. سيُطلب منك كلمة مرور مرافقة وسيتم إضافة المجموعة إلى ملف auth. يمكنك تكرار هذا الأمر لأي عدد من المستخدمين الذين ترغب في إضافتهم.

ملاحظة: إذا لم يكن النظام الذي تعمل عليه مثبتًا فيه htpasswd، يمكنك استخدام نسخة بتعبئتها بواسطة Docker بدلاً من ذلك.

ستحتاج إلى تثبيت Docker على جهازك. للحصول على تعليمات حول كيفية القيام بذلك، قم بزيارة المستندات الرسمية.

قم بتشغيل الأمر التالي لتشغيل النسخة المعبأة بواسطة Docker:

  1. docker run --rm -it httpd htpasswd -n <username>

تذكر أن تستبدل <username> بالاسم المستخدم الذي ترغب في استخدامه. سيُطلب منك كلمة مرور. سيتم كتابة مجموعة تسجيل الدخول المشفرة على الوحدة، وسيتعين عليك إضافتها يدويًا إلى نهاية ملف auth. كرر هذه العملية لعدد الدخولات التي ترغب في إضافتها.

عند الانتهاء، أنشئ سرًا جديدًا في Kubernetes باستخدام محتويات الملف عبر تشغيل الأمر التالي:

  1. kubectl create secret generic theia-basic-auth --from-file=auth -n theia

يمكنك رؤية السر باستخدام:

  1. kubectl get secret theia-basic-auth -o yaml -n theia

سيكون الإخراج على النحو التالي:

Output
apiVersion
: v1 data: auth: ... kind: Secret metadata: creationTimestamp: "2021-12-31T17:16:29Z" name: theia-basic-auth namespace: theia resourceVersion: "32437" uid: 47461e23-e281-411b-acfd-cea82fcde41b type: Opaque

بعد ذلك، ستحتاج إلى تعديل الـ Ingress لجعله يستخدم السر. قم بفتح تكوين النشر للتحرير:

  1. nano eclipse-theia.yaml

أضف الأسطر المظللة إلى ملفك:

eclipse-theia.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: theia
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: theia-next
  namespace: theia
  annotations:
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: theia-basic-auth
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - Eclipse Theia'
spec:
  ingressClassName: nginx
  rules:
  - host: theia.your_domain
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: theia-next
            port:
              number: 80
...

أولاً، في تعليق auth-type، تحدد أن نوع المصادقة هو basic. هذا يعني أن Nginx سيتطلب من المستخدم إدخال اسم مستخدم وكلمة مرور. ثم، في auth-secret، تحدد أن السر الذي يحتوي على قائمة الجمعيات الصحيحة هو theia-basic-auth، الذي أنشأته للتو. يحدد التعليق المتبقي في auth-realm رسالة سيتم عرضها للمستخدم كشرح لسبب طلب المصادقة. يمكنك تغيير الرسالة الموجودة في هذا الحقل حسب رغبتك.

احفظ وأغلق الملف.

لنشر التغييرات في عنق الزجاجتك، قم بتشغيل الأمر التالي:

  1. kubectl apply -f eclipse-theia.yaml

ستظهر النتيجة على النحو التالي:

Output
namespace/theia unchanged ingress.networking.k8s.io/theia-next configured service/theia-next unchanged deployment.apps/theia-next unchanged

انتقل إلى نطاقك في المتصفح، حيث سيُطلب منك الآن تسجيل الدخول.

لقد قمت بتمكين المصادقة الأساسية لتسجيل الدخول على Ingress الخاص بك عن طريق تكوينه لاستخدام السر المحتوي على مجموعات اسم المستخدم وكلمة المرور المشفرة. في الخطوة التالية، ستقوم بتأمين الوصول بشكل أكبر من خلال إضافة شهادات TLS، بحيث يتم تشفير حركة المرور بينك وبين نشر Eclipse Theia الخاص بك.

الخطوة 3 — تطبيق شهادات Let’s Encrypt HTTPS

في الخطوة التالية، ستقوم بتأمين تثبيت Eclipse Theia الخاص بك من خلال تطبيق شهادات Let’s Encrypt على Ingress الخاص بك، والتي ستقوم Cert-Manager بتوفيرها تلقائيًا. بعد إكمال هذه الخطوة، سيكون بإمكانك الوصول إلى تثبيت Eclipse Theia الخاص بك عبر HTTPS.

افتح eclipse-theia.yaml للتحرير:

  1. nano eclipse-theia.yaml

أضف الأسطر المميزة إلى ملفك، مُتأكدًا من استبدال النطاق النموذجي بالخاص بك:

eclipse-theia.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: theia
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: theia-next
  namespace: theia
  annotations:
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: theia-basic-auth
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - Eclipse Theia'
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  tls:
  - hosts:
    - theia.your_domain
    secretName: theia-prod
  ingressClassName: nginx
  rules:
  - host: theia.your_domain
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: theia-next
            port:
              number: 80
...

أولاً، قم بتحديد ClusterIssuer letsencrypt-prod الذي قمت بإنشائه كجزء من المتطلبات المسبقة كالمُصدر الذي سيُستخدم لتوفير الشهادات لهذا الـ Ingress. ثم، في القسم tls، قم بتحديد النطاق الدقيق الذي يجب تأمينه، بالإضافة إلى اسم لسر يحمل تلك الشهادات.

احفظ وأغلق الملف.

قم بتطبيق التغييرات على عقدتك عن طريق تشغيل الأمر التالي:

  1. kubectl apply -f eclipse-theia.yaml

سيبدو الإخراج كما يلي:

Output
namespace/theia unchanged ingress.networking.k8s.io/theia-next configured service/theia-next unchanged deployment.apps/theia-next unchanged

سوف يستغرق بضع دقائق لتوفير الشهادات وتطبيقها بالكامل. يمكنك تتبع التقدم عن طريق مراقبة الناتج من الأمر التالي:

  1. kubectl describe certificate theia-prod -n theia

عند الانتهاء، ستبدو نهاية الناتج مشابهة لهذا:

Output
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal GeneratedKey 42m cert-manager Generated a new private key Normal Requested 42m cert-manager Created new CertificateRequest resource "theia-prod-3785736528" Normal Issued 42m cert-manager Certificate issued successfully

قم بتحديث نطاقك في متصفحك. سترى قفلًا أخضرًا يظهر على الجانب الأقصى الأيسر من شريط العنوان، مما يشير إلى أن الاتصال آمن.

لقد قمت بتكوين الـ Ingress لاستخدام شهادات Let’s Encrypt مما يجعل نشر Eclipse Theia الخاص بك أكثر أمانًا. الآن يمكنك مراجعة واجهة مستخدم Eclipse Theia الافتراضية.

الخطوة 4 — استخدام واجهة Eclipse Theia

في هذا القسم، ستكتشف بعض ميزات واجهة Eclipse Theia.

على الجانب الأيسر من بيئة التطوير المتكاملة، هناك صف عمودي من أربعة أزرار تفتح أكثر الميزات استخدامًا في لوح جانبي.

يمكن تخصيص هذه الشريط لذلك يمكنك نقل هذه العروض إلى ترتيب مختلف أو إزالتها من الشريط. بشكل افتراضي، تفتح العرض الأول لوحة المستكشف التي توفر تصفحًا شبيه بشجرة لهيكل المشروع. يمكنك إدارة المجلدات والملفات هنا — إنشاؤها، حذفها، نقلها، وإعادة تسميتها حسب الحاجة.

بعد إنشاء ملف جديد من خلال قائمة الملف، سترى ملفًا فارغًا مفتوحًا في علامة تبويب جديدة. بمجرد الحفظ، يمكنك عرض اسم الملف في اللوحة الجانبية للمستكشف. لإنشاء مجلدات، انقر بزر الماوس الأيمن على الشريط الجانبي للمستكشف وانقر على مجلد جديد. يمكنك توسيع مجلد بالنقر فوق اسمه بالإضافة إلى سحب وإسقاط الملفات والمجلدات إلى الأجزاء العليا من التسلسل الهرمي لنقلها إلى موقع جديد.

الخيار التالي يوفر الوصول إلى وظيفة البحث والاستبدال. بعد ذلك، يوفر الخيار التالي عرضًا لأنظمة التحكم في المصدر التي قد تكون تستخدمها، مثل Git.

العرض التالي هو خيار المصحح، الذي يوفر جميع الإجراءات الشائعة للمصحح في اللوحة. يمكنك حفظ تكوينات المصحح في ملف launch.json.

الخيار النهائي يتيح لك عرض وتثبيت الامتدادات:

الجزء المركزي من واجهة المستخدم الرسومية هو محررك، الذي يمكنك فصله بواسطة علامات التبويب لتحرير الكود الخاص بك. يمكنك تغيير عرض التحرير الخاص بك إلى نظام الشبكة أو إلى ملفات جانبية. مثل جميع بيئات التطوير المتكاملة الحديثة، يدعم Eclipse Theia تحديد البناء الصحيح لكودك.

يمكنك الوصول إلى وحدة الطرفية عن طريق كتابة CTRL+SHIFT+` ، أو عن طريق النقر على الطرفية في القائمة العلوية، واختيار طرفية جديدة. ستفتح الطرفية في لوحة سفلية وسيتم تعيين دليل العمل الخاص بها إلى مساحة العمل للمشروع، التي تحتوي على الملفات والمجلدات المعروضة في اللوحة الجانبية للمستكشف.

إذا كنت ترغب في إنهاء نشر Eclipse Theia على عنقودك، قم بتشغيل الأمر التالي:

  1. kubectl delete -f eclipse-theia.yaml

لقد استكشفت نظرة عامة عالية المستوى لواجهة Eclipse Theia وقمت بمراجعة بعض الميزات الأكثر استخدامًا.

الختام

لديك الآن Eclipse Theia، بيئة تطوير متعددة الاستخدامات على السحابة، مثبتة على مجموعة DigitalOcean Kubernetes الخاصة بك. لقد قمت بتأمينها بشهادة TLS مجانية من Let’s Encrypt وقمت بإعداد الحالة لتتطلب تسجيل الدخول من الزائر. يمكنك العمل على رموز المصدر والمستندات الخاصة بك بها بشكل فردي أو التعاون مع فريقك. يمكنك أيضًا محاولة بناء نسختك الخاصة من Eclipse Theia إذا كنت بحاجة إلى وظائف إضافية. لمزيد من المعلومات حول كيفية القيام بذلك، قم بزيارة مستندات Theia.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-the-eclipse-theia-cloud-ide-platform-on-digitalocean-kubernetes