Cách thiết lập Nền tảng Eclipse Theia Cloud IDE trên DigitalOcean Kubernetes

Tác giả đã chọn Quỹ Nguồn mở và Miễn phí để nhận một khoản đóng góp như một phần của chương trình Viết cho DO donate.

Giới thiệu

Với việc các công cụ dành cho nhà phát triển chuyển sang đám mây, việc tạo và áp dụng các nền tảng IDE (Môi trường phát triển tích hợp) trên nền tảng đám mây đang ngày càng phát triển. Cloud IDE có thể truy cập được từ mọi loại thiết bị hiện đại thông qua trình duyệt web và chúng mang lại nhiều lợi thế cho các tình huống cộng tác trong thời gian thực. Làm việc trong một IDE đám mây cung cấp một môi trường phát triển và thử nghiệm thống nhất cho bạn và nhóm của bạn, đồng thời giảm thiểu sự không tương thích của nền tảng. Bởi vì chúng nguyên bản dựa trên công nghệ đám mây, chúng có thể sử dụng cụm để đạt được các nhiệm vụ, điều này có thể vượt quá sức mạnh và độ tin cậy của một máy tính phát triển duy nhất.

Eclipse Theia là một IDE đám mây có thể mở rộng chạy trên máy chủ từ xa và có thể truy cập từ trình duyệt web. Về mặt trực quan, nó được thiết kế để trông và hoạt động tương tự như Visual Studio Code, có nghĩa là nó hỗ trợ nhiều , có bố cục linh hoạt và có một thiết bị đầu cuối tích hợp. Điều tách biệt Eclipse Theia với phần mềm IDE đám mây khác là khả năng mở rộng của nó; nó có thể được sửa đổi bằng cách sử dụng các tiện ích mở rộng tùy chỉnh, cho phép bạn tạo IDE đám mây phù hợp với nhu cầu của mình.

Trong này, bạn sẽ thiết lập phiên bản mặc định của nền tảng IDE đám mây Eclipse Theia trên cụm DigitalOcean Kubernetes của bạn và hiển thị nó tại miền của bạn, được bảo mật bằng chứng chỉ Let's Encrypt và yêu cầu khách truy cập xác thực. Cuối cùng, bạn sẽ có Eclipse Theia chạy trên cụm Kubernetes của bạn có sẵn thông qua HTTPS và yêu cầu khách truy cập đăng nhập.

Điều kiện tiên quyết

Bước 1 – Cài đặt và hiển thị Eclipse Theia

Để bắt đầu, bạn sẽ cài đặt Eclipse Theia vào cụm DigitalOcean Kubernetes của mình. Sau đó, bạn sẽ hiển thị nó ở miền mong muốn của mình bằng Nginx Ingress.

Vì bạn đã tạo hai triển khai mẫu và tài nguyên như một phần của điều kiện tiên quyết, bạn có thể tự do xóa chúng bằng cách chạy các lệnh sau:

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

Đối với hướng dẫn này, bạn sẽ lưu trữ cấu hình triển khai trên máy cục bộ của mình, trong một tệp có tên eclipse-theia.yaml. Tạo nó bằng lệnh sau:

  1. nano eclipse-theia.yaml

Thêm các dòng sau vào tệp:

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

Cấu hình này xác định Không gian tên, Triển khai, Dịch vụ và Địa chỉ nhập. Không gian tên được gọi là theia và sẽ chứa tất cả các đối tượng Kubernetes liên quan đến Eclipse Theia, được tách biệt với phần còn lại của cụm. Triển khai bao gồm một phiên bản của hình ảnh Theia Docker với cổng 3000 lộ ra trên thùng chứa. Dịch vụ tìm kiếm Triển khai và hoán đổi lại cổng vùng chứa thành cổng HTTP thông thường, 80cho phép truy cập trong cụm vào Eclipse Theia.

Ingress chứa một quy tắc để cung cấp Dịch vụ tại cảng 80 bên ngoài tại miền mong muốn của bạn. Trong chú thích của nó, bạn chỉ định rằng nên sử dụng Nginx Ingress Controller để xử lý yêu cầu. Nhớ thay theia.your_domain với miền mong muốn của bạn mà bạn đã trỏ đến Bộ cân bằng tải của cụm, sau đó lưu và đóng tệp.

Xem tiếp:   Cách tự động khởi động lại ứng dụng Node.js của bạn với gật gù

Lưu và thoát khỏi tệp.

Sau đó, tạo cấu hình trong Kubernetes bằng cách chạy lệnh sau:

  1. kubectl apply -f eclipse-theia.yaml

Đầu ra sẽ giống như sau:

Output

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

Bạn có thể xem quá trình tạo pod Eclipse Theia bằng cách chạy:

  1. kubectl get pods -w -n theia

Đầu ra sẽ như thế này:

Output

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

Sau một thời gian, trạng thái sẽ chuyển sang RUNNINGcó nghĩa là bạn đã cài đặt thành công Eclipse Theia vào cụm của mình.

Điều hướng đến miền của bạn trong trình duyệt của bạn. Bạn sẽ thấy GUI trình soạn thảo Eclipse Theia mặc định:

GUI trình soạn thảo Eclipse Theia mặc định

Bạn đã triển khai Eclipse Theia cho cụm DigitalOcean Kubernetes của mình và hiển thị nó ở miền mong muốn của bạn bằng Ingress. Tiếp theo, bạn sẽ truy cập an toàn vào việc triển khai Eclipse Theia của mình bằng cách bật xác thực đăng nhập.

Bước 2 – Bật xác thực đăng nhập cho miền của bạn

Trong bước này, bạn sẽ bật xác thực tên người dùng và mật khẩu để triển khai Eclipse Theia của mình. Bạn sẽ đạt được điều này trước tiên bằng cách sắp xếp một danh sách các kết hợp đăng nhập hợp lệ bằng cách sử dụng htpasswd tính thiết thực. Sau đó, bạn sẽ tạo một bí mật Kubernetes chứa danh sách đó và định cấu hình Ingress để xác thực khách truy cập theo danh sách đó. Cuối cùng, miền của bạn sẽ chỉ có thể truy cập được khi khách truy cập nhập kết hợp tên người dùng và mật khẩu hợp lệ. Điều này sẽ ngăn không cho khách và những người truy cập không mong muốn khác truy cập Eclipse Theia.

Các htpasswd tiện ích đến từ máy chủ web Apache và được sử dụng để tạo tệp lưu trữ danh sách các tổ hợp đăng nhập. Định dạng của htpasswd các tập tin là một username:hashed_password kết hợp trên mỗi dòng, là định dạng mà Nginx Ingress Controller mong đợi danh sách sẽ tuân theo.

Đầu tiên, hãy cập nhật bộ nhớ cache của trình quản lý gói:

  1. sudo apt update

Sau đó, cài đặt htpasswd trên hệ thống của bạn bằng cách chạy lệnh sau:

  1. sudo apt install apache2-utils -y

Bạn sẽ lưu danh sách trong một tệp có tên auth. Tạo nó bằng cách chạy:

  1. touch auth

Tệp này cần được đặt tên auth bởi vì Nginx Ingress Controller mong đợi bí mật chứa một khóa được gọi là data.auth. Nếu nó bị thiếu, bộ điều khiển sẽ trả về HTTP 503 Service Unavailable trạng thái.

Thêm kết hợp tên người dùng và mật khẩu vào auth bằng cách chạy lệnh sau:

  1. htpasswd auth username

Nhớ thay username với tên người dùng mong muốn của bạn. Bạn sẽ được yêu cầu nhập mật khẩu đi kèm và tổ hợp sẽ được thêm vào auth tập tin. Bạn có thể lặp lại lệnh này cho bao nhiêu người dùng mà bạn muốn thêm.

Ghi chú: Nếu hệ thống bạn đang làm việc không có htpasswd đã cài đặt, bạn có thể sử dụng phiên bản Dockerized.

Bạn sẽ cần phải cài đặt Docker trên máy tính của mình. Để biết hướng dẫn về cách làm như vậy, hãy truy cập tài liệu chính thức.

Chạy lệnh sau để chạy phiên bản dày đặc:

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

Nhớ thay <username> với tên người dùng bạn muốn sử dụng. Bạn sẽ được yêu cầu nhập mật khẩu. Kết hợp đăng nhập đã băm sẽ được viết ra trên bảng điều khiển và bạn sẽ cần phải thêm nó vào cuối auth tập tin. Lặp lại quá trình này cho bao nhiêu thông tin đăng nhập bạn muốn thêm.

Khi bạn hoàn tất, hãy tạo một bí mật mới trong Kubernetes với nội dung của tệp bằng cách chạy lệnh sau:

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

Bạn có thể xem bí mật với:

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

Đầu ra sẽ giống như sau:

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

Tiếp theo, bạn sẽ cần chỉnh sửa Ingress để làm cho nó sử dụng bí mật. Mở cấu hình triển khai để chỉnh sửa:

  1. nano eclipse-theia.yaml

Thêm các dòng được đánh dấu vào tệp của bạn:

Xem tiếp:   Lỗi Operation failed with error 0x0000011b là gì?

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
...

Đầu tiên, trong auth-type chú thích, bạn chỉ định rằng loại xác thực là basic. Điều này có nghĩa là Nginx sẽ yêu cầu người dùng nhập tên người dùng và mật khẩu. Sau đó, trong auth-secretbạn chỉ định rằng bí mật chứa danh sách các kết hợp hợp lệ là theia-basic-auth, mà bạn vừa tạo. Phần còn lại auth-realm chú thích chỉ định một thông báo sẽ được hiển thị cho người dùng như một lời giải thích tại sao cần phải xác thực. Bạn có thể thay đổi thông báo có trong trường này theo ý muốn của mình.

Lưu và đóng tập tin.

Để phổ biến các thay đổi đối với cụm của bạn, hãy chạy lệnh sau:

  1. kubectl apply -f eclipse-theia.yaml

Bạn sẽ thấy đầu ra:

Output

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

Điều hướng đến miền của bạn trong trình duyệt của bạn, nơi bây giờ bạn sẽ được yêu cầu đăng nhập.

Bạn đã bật xác thực đăng nhập cơ bản trên Ingress của mình bằng cách định cấu hình nó để sử dụng bí mật có chứa kết hợp tên người dùng và mật khẩu được băm. Trong bước tiếp theo, bạn sẽ bảo mật quyền truy cập hơn nữa bằng cách thêm chứng chỉ TLS, để lưu lượng giữa bạn và triển khai Eclipse Theia của bạn vẫn được mã hóa.

Bước 3 – Áp dụng Let's Encrypt HTTPS Certificate

Tiếp theo, bạn sẽ bảo mật cài đặt Eclipse Theia của mình bằng cách áp dụng chứng chỉ Let's Encrypt cho Ingress của bạn, chứng chỉ mà Cert-Manager sẽ tự động cung cấp. Sau khi hoàn thành bước này, cài đặt Eclipse Theia của bạn sẽ có thể truy cập được qua HTTPS.

Mở eclipse-theia.yaml để chỉnh sửa:

  1. nano eclipse-theia.yaml

Thêm các dòng được đánh dấu vào tệp của bạn, đảm bảo thay thế miền giữ chỗ bằng miền của riêng bạn:

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
...

Đầu tiên, bạn chỉ định letsencrypt-prod ClusterIssuer bạn đã tạo như một phần của điều kiện tiên quyết với tư cách là công ty phát hành sẽ được sử dụng để cung cấp chứng chỉ cho Ingress này. Sau đó, trong tls bạn chỉ định miền chính xác cần được bảo mật, cũng như tên cho một bí mật sẽ giữ các chứng chỉ đó.

Lưu và thoát khỏi tệp.

Áp dụng các thay đổi cho cụm của bạn bằng cách chạy lệnh sau:

  1. kubectl apply -f eclipse-theia.yaml

Đầu ra sẽ giống như sau:

Output

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

Sẽ mất vài phút để các chứng chỉ được cấp phép và áp dụng đầy đủ. Bạn có thể theo dõi tiến trình bằng cách quan sát đầu ra của lệnh sau:

  1. kubectl describe certificate theia-prod -n theia

Khi nó kết thúc, phần cuối của đầu ra sẽ giống như sau:

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

Làm mới miền của bạn trong trình duyệt của bạn. Bạn sẽ thấy một ổ khóa màu xanh lục hiển thị ở phía ngoài cùng bên trái của thanh địa chỉ cho biết rằng kết nối được bảo mật.

Xem tiếp:   Cách triển khai nhiều môi trường trong dự án Terraform của bạn mà không cần mã trùng lặp

Bạn đã định cấu hình Ingress để sử dụng chứng chỉ Let's Encrypt, do đó, việc triển khai Eclipse Theia của bạn an toàn hơn. Bây giờ bạn có thể xem lại giao diện người dùng Eclipse Theia mặc định.

Bước 4 – Sử dụng giao diện Eclipse Theia

Trong phần này, bạn sẽ khám phá một số tính năng của giao diện Eclipse Theia.

Ở phía bên trái của IDE, có một hàng dọc gồm bốn nút mở các tính năng thường được sử dụng nhất trong bảng điều khiển bên.

Eclipse Theia GUI - Bảng điều khiển

Thanh này có thể tùy chỉnh để bạn có thể di chuyển các chế độ xem này sang một thứ tự khác hoặc xóa chúng khỏi thanh. Theo mặc định, chế độ xem đầu tiên sẽ mở bảng điều khiển Explorer cung cấp điều hướng dạng cây về cấu trúc của dự án. Bạn có thể quản lý các thư mục và tệp của mình tại đây — tạo, xóa, di chuyển và đổi tên chúng nếu cần.

Sau khi tạo một tệp mới thông qua Tập tin , bạn sẽ thấy một tệp trống mở trong một tab mới. Sau khi lưu, bạn có thể xem tên của tệp trong bảng điều khiển bên của Explorer. Để tạo thư mục, nhấp chuột phải vào thanh bên Explorer và nhấp vào Thư mục mới. Bạn có thể mở rộng một thư mục bằng cách nhấp vào tên của nó cũng như kéo và thả các tệp và thư mục lên các phần trên của hệ thống phân cấp để di chuyển chúng đến một vị trí mới.

Eclipse Theia GUI - Thư mục mới

Tùy chọn tiếp theo cung cấp quyền truy cập vào chức năng tìm kiếm và thay thế. Sau đó, phần tiếp theo cung cấp một cái nhìn về các hệ thống điều khiển nguồn mà bạn có thể đang sử dụng, chẳng hạn như Git.

Chế độ xem tiếp theo là tùy chọn trình gỡ lỗi, cung cấp tất cả các hành động phổ biến để gỡ lỗi trong bảng điều khiển. Bạn có thể lưu cấu hình gỡ lỗi trong launch.json tập tin.

Chế độ xem trình gỡ lỗi khi mở launcher.json

Tùy chọn cuối cùng cho phép bạn xem và cài đặt các tiện ích mở rộng:

Eclipse Theia GUI - Phần mở rộng

Phần trung tâm của GUI là trình chỉnh sửa của bạn, bạn có thể phân tách phần này theo các tab để chỉnh sửa mã của mình. Bạn có thể thay đổi chế độ xem chỉnh sửa của mình thành hệ thống lưới hoặc các tệp cạnh nhau. Giống như tất cả các IDE hiện đại, Eclipse Theia hỗ trợ tô sáng cú pháp cho mã của bạn.

Chế độ xem lưới trình chỉnh sửa

Bạn có thể truy cập vào một thiết bị đầu cuối bằng cách nhập CTRL+SHIFT+` hoặc bằng cách nhấp vào Phần cuối trong menu phía trên và chọn Nhà ga mới. Thiết bị đầu cuối sẽ mở trong bảng điều khiển phía dưới và thư mục làm việc của nó sẽ được đặt thành không gian làm việc của dự án, nơi chứa các tệp và thư mục được hiển thị trong bảng điều khiển bên Explorer.

Nhà ga mở cửa

Nếu bạn muốn hủy triển khai Eclipse Theia trên cụm của mình, hãy chạy lệnh sau:

  1. kubectl delete -f eclipse-theia.yaml

Bạn đã khám phá tổng quan cấp cao về giao diện Eclipse Theia và xem xét một số tính năng thường được sử dụng nhất.

Sự kết luận

Bây giờ bạn đã có Eclipse Theia, một IDE đám mây đa năng, được cài đặt trên cụm DigitalOcean Kubernetes của bạn. Bạn đã bảo mật nó bằng chứng chỉ Let's Encrypt TLS miễn phí và thiết lập phiên bản để yêu cầu đăng nhập từ khách truy cập. Bạn có thể làm việc trên mã nguồn và tài liệu của mình với nó một cách riêng lẻ hoặc cộng tác với nhóm của bạn. Bạn cũng có thể thử xây dựng phiên bản Eclipse Theia của riêng mình nếu bạn cần thêm chức năng. Để biết thêm thông tin về cách thực hiện điều đó, hãy truy cập tài liệu Theia.

Check Also

Cách định cấu hình Suricata làm Hệ thống ngăn chặn xâm nhập (IPS) trên Debian 11

Không sử dụng Debian 11? Chọn một phiên bản hoặc bản phân phối khác. Debian …