איך להגדיר את פלטפורמת ה-IDE של Eclipse Theia Cloud ב-DigitalOcean Kubernetes

הסופר בחר בקרן התוכנה החופשית והפתוחה לקבלת תרומה כחלק מתוכנית "כתיבה בשביל תרומות".

הקדמה

עם כלי הפיתוח מתקדמים לענן, יצירת ואימוץ של פלטפורמות סביבת פיתוח משולבות בענן גדל. סביבות פיתוח משולבות בענן נגישות מכל סוג של מכשיר מודרני דרך דפדפני רשת, והן מציעות מספר יתרונות לתרחישי שיתוף פעולה בזמן אמת. העבודה בסביבת פיתוח משולבת בענן מספקת סביבת פיתוח ובדיקה אחידה עבורך ועבור הצוות שלך, תוך הפחתת חוסר התאימות בין פלטפורמות. מכיוון שהן מבוססות מקורית על טכנולוגיות ענן, הן מסוגלות להשתמש באשכול כדי לבצע משימות, שיכולות לחרוג הרבה מהכוח והאמינות של מחשב פיתוח יחיד.

Eclipse Theia הוא סביבת פיתוח משולבת בענן הניתנת להרחבה שרצה על שרת רחוק ונגישה מדפדפן רשת. מבחינה חזותית, היא מיועדת להיראות ולהתנהג בדיוק כמו Microsoft Visual Studio Code, מה שאומר שהיא תומכת במספר רב של שפות תכנות, יש לה פריסה גמישה, ויש לה מסוף משולב. מה שמפריד את Eclipse Theia מתוכנות סביבת הפיתוח המשולבות בענן האחרות הוא ההרחבות שלה; ניתן לשנות אותה באמצעות הרחבות מותאמות אישית, שמאפשרות לך ליצור סביבת פיתוח משולבת בענן המתאימה לצרכים שלך.

הדרכה

שלב 1 — התקנה וחשיפה של Eclipse Theia

להתחיל, תתקינו את 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

התצורה הזו מגדירה רווח שמכיל הפצה, שירות ו-Ingress. הרווח נקרא theia ויכיל את כל האובייקטים ב-Kubernetes הקשורים ל-Eclipse Theia, מופרדים משאר האשכול. ההפצה מורכבת ממופע אחד של תמונת Docker של Theia עם היציאה 3000 מוצגת בקונטיינר. השירות מחפש את ההפצה ומקשקש מחדש את היציאה של הקונטיינר ליציאת HTTP רגילה, 80, שמאפשר גישה בקלאסטר ל-Eclipse Theia.

ה-Ingress מכיל כלל לספק את השירות ביציאה 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

ניתן לצפות ביצירת ה־pod של 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 בהצלחה לקבוצת ה־cluster שלך.

נווט לדומיין שלך בדפדפן. תראה את ממשק העורך המותקן של Eclipse Theia:

הצלחת לפרסם את Eclipse Theia באוסף Kubernetes שלך ב־DigitalOcean ולחשוף אותו בדומיין הרצוי שלך עם Ingress. בשלב הבא, תאבטח גישה להתקנת Eclipse Theia שלך על ידי הפעלת אימות לכניסה.

שלב 2 — הפעלת אימות לכניסה עבור הדומיין שלך

בשלב זה, תפעיל אימות שם משתמש וסיסמה עבור ההתקנה שלך של Eclipse Theia. תבצע זאת תחילה על ידי יצירת רשימת שילובי התחברות תקפים באמצעות כלי ה־htpasswd. לאחר מכן, תיצור סוד קוברנטס המכיל את הרשימה ההיא ותקבע את האימות ב־Ingress כך שביקורות יוכלו להתחבר לפיו. בסופו של דבר, הדומיין שלך יהיה נגיש רק כאשר המבקר מזין שילוב שם משתמש וסיסמה תקפים. זה ימנע מאורחים ומבקרים לא רצויים אחרים מלגשת ל־Eclipse Theia.

htpasswd כלי מגיע משרת האינטרנט Apache ומשמש ליצירת קבצים המאחסנים רשימות של תרשימי כניסה. פורמט של קבצי 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, אתה מציין כי סוג האימות הוא בסיסי. זה אומר כי 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

נווט לדומיין שלך בדפדפן, שם תתבקש להתחבר.

שלב 3 — החלפת תעודות HTTPS של Let’s Encrypt

בשלב הבא תאבטח את התקנתך של 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
...

ראשית, אתה מציין את letsencrypt-prod ה-ClusterIssuer שיצרת כחלק מהקדימויות כקובע המפיק שימוש בכדי לספק תעודות עבור ה-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.

בצד שמאל של ה-IDE, יש שורה אנכית של ארבעה כפתורים המפעילים את התכונות הנפוצות ביותר בחלון צד.

שורה זו ניתנת להתאמה אישית כך שתוכל להעביר את התצוגות הללו לסדר אחר או להסיר אותן מהשורה. כברירת מחדל, התצוגה הראשונה פותחת את פאנל החקירה המספק ניווט בצורת עץ של מבנה הפרויקט. תוכל לנהל את התיקיות והקבצים שלך כאן — ליצור, למחוק, להעביר ולשנות אותם ככל הצורך.

לאחר יצירת קובץ חדש דרך תפריט ה-קובץ, תראה קובץ ריק פתוח בכרטיסייה חדשה. לאחר השמירה, תוכל לראות את שם הקובץ בפאנל הצד של Explorer. כדי ליצור תיקיות, לחץ ימינה על סרגל הצד של Explorer ולחץ על תיקייה חדשה. תוכל להרחיב תיקייה על ידי לחיצה על שמה וגם לגרור קבצים ותיקיות לחלקים עליונים של ההיררכיה כדי להעביר אותם למיקום חדש.

האפשרות הבאה מספקת גישה לפונקציות חיפוש והחלפה. לאחר מכן, האפשרות הבאה מציגה תצוגה של מערכות בקרת מקור פתוח שעשויות להיות בשימוש, כמו Git.

התצוגה הבאה היא אפשרות הדיבאגר, שמספקת את כל הפעולות הנפוצות לצורך דיבוג בפאנל. תוכל לשמור הגדרות דיבאג בקובץ launch.json.

האפשרות האחרונה מאפשרת לך לצפות ולהתקין הרחבות:

החלק המרכזי של ממשק המשתמש הגרפי הוא העורך שלך, שתוכל להפריד לכרטיסיות לעריכת קוד שלך. תוכל לשנות את מבנה העריכה שלך למערכת רשת או לקבצים צמודים. כמו כל סביבת פיתוח מודרנית, Eclipse Theia תומכת בהדגשת תחביר עבור קודך.

תוכל לקבל גישה לטרמינל על ידי הקלדת CTRL+SHIFT+` , או על ידי לחיצה על טרמינל בתפריט העליון ובחירת טרמינל חדש. הטרמינל יפתח בפאנל התחתון ותיקיית העבודה שלו תוגדר למרחב העבודה של הפרויקט, שמכיל את הקבצים והתיקיות המוצגים בפאנל הצד של Explorer.

אם ברצונך להשמיד את הפרוסה של Eclipse Theia בקבוצת השרתים שלך, הרץ את הפקודה הבאה:

  1. kubectl delete -f eclipse-theia.yaml

נראה שביצעת סקירה גבוהה של ממשק ה- Eclipse Theia וביקשת תכונות נפוצות.

מסקנה

עכשיו יש לך את Eclipse Theia, סביבת פיתוח ענן מתקדמת, מותקנת על מערכת ה- Kubernetes שלך ב-DigitalOcean. גם אתה מאובטח אותה עם תעודת 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