介紹
隨著開發者工具轉移到雲端,雲端集成開發環境(IDE)平台的創建和採用正在增長。雲端IDE可以從現代各種類型的設備通過網絡瀏覽器訪問,並且在實時協作場景中提供了眾多優勢。在雲端IDE中工作為您和您的團隊提供了統一的開發和測試環境,同時最大程度地減少了平台不兼容性。由於它們是基於雲技術的,因此它們能夠利用集群來完成任務,這可以大大超過單個開發計算機的功率和可靠性。
Eclipse Theia是一款可擴展的雲端IDE,運行在遠程服務器上,可以通過網絡瀏覽器訪問。在視覺上,它設計成與Microsoft Visual Studio Code類似的外觀和行為,這意味著它支持許多編程語言,具有靈活的布局和集成終端。Eclipse Theia與其他雲端IDE軟件的區別在於它的可擴展性;它可以使用自定義擴展進行修改,使您能夠打造出適合您需求的雲端IDE。
在本教程中,您將在您的DigitalOcean Kubernetes集群上設置Eclipse Theia雲IDE平台的默認版本,並將其公開在您的域上,使用Let’s Encrypt證書進行保護,並要求訪問者進行身份驗證。最終,您將在您的Kubernetes集群上運行Eclipse Theia,通過HTTPS可用,並要求訪問者登錄。
先決條件
- A DigitalOcean Kubernetes cluster with your connection configured as the
kubectl
default. Instructions on how to configurekubectl
are shown under the Connect to your Cluster step when you create your cluster. To create a Kubernetes cluster on DigitalOcean, read the Kubernetes Quickstart. - 在您的本地機器上安裝Helm 3套件管理器。完成第1步,參考使用Helm 3套件管理器在Kubernetes集群上安裝軟件的方法教程。
- 使用Helm在您的集群上安裝Nginx Ingress Controller,以便使用Ingress資源進行ExternalDNS。要做到這一點,請參考如何在DigitalOcean Kubernetes上使用Helm設置Nginx Ingress。
- A fully registered domain name. This tutorial will use
theia.your_domain
throughout. You can purchase a domain name on Namecheap, get one for free on Freenom, or use the domain registrar of your choice.
步驟1 — 安裝和公開Eclipse Theia
開始安裝 Eclipse Theia 到你的 DigitalOcean Kubernetes 集群。然後,你將使用 Nginx Ingress 將其暴露在你所需的域上。
由於你在先決條件中創建了兩個示例部署和一個資源,你可以通過運行以下命令自由刪除它們:
對於本教程,你將把部署配置存儲在你的本地機器上,文件名為 eclipse-theia.yaml
。使用以下命令創建它:
將以下行添加到文件中:
此配置定義了一個命名空間、一個部署、一個服務和一個 Ingress。命名空間被稱為 theia
,並且將包含與 Eclipse Theia 相關的所有 Kubernetes 物件,與集群的其餘部分分開。部署包含一個 Theia Docker 映像的實例,容器上暴露端口 3000
。服務尋找部署並重新映射容器端口到通常的 HTTP 端口 80
,允許在集群內訪問 Eclipse Theia。
Ingress 包含一個規則,將服務外部的端口 80
在你所需的域上提供服務。在其註釋中,你指定了 Nginx Ingress 控制器應用於請求處理。請記得將 theia.your_domain
替換為你已經指向集群負載均衡器的所需域名,然後保存並關閉文件。
保存並退出文件。
然後,通過運行以下命令在 Kubernetes 中創建配置:
輸出將類似於以下內容:
Outputnamespace/theia created
ingress.networking.k8s.io/theia-next created
service/theia-next created
deployment.apps/theia-next created
您可以通過運行以下命令來觀看 Eclipse Theia Pod 的創建:
輸出將類似於以下內容:
OutputNAME READY STATUS RESTARTS AGE
theia-next-6f6b98dd4f-qknhb 1/1 Running 0 2m30s
過一段時間後,狀態將變為 RUNNING
,這意味著您已成功將 Eclipse Theia 安裝到您的叢集中。
在瀏覽器中導航至您的域名。您將看到默認的 Eclipse Theia 編輯器 GUI:
您已將 Eclipse Theia 部署到了您的 DigitalOcean Kubernetes 叢集並通過 Ingress 將其暴露在您所需的域名下。接下來,您將通過啟用登錄驗證來保護對 Eclipse Theia 的訪問。
步驟 2 — 啟用您域名的登錄驗證
在此步驟中,您將為 Eclipse Theia 部署啟用用戶名和密碼驗證。您將首先使用 htpasswd
實用程序編輯一個有效登錄組合的列表。然後,您將創建一個包含該列表的 Kubernetes 密鑰,並配置 Ingress 以根據該列表對訪問者進行驗證。最終,只有在訪問者輸入有效的用戶名和密碼組合時,您的域名才可訪問。這將防止訪客和其他不需要的訪問者訪問 Eclipse Theia。
htpasswd
工具來自 Apache web 伺服器,用於創建存儲登錄組合列表的文件。 htpasswd
文件的格式是每行一個 username:hashed_password
組合,這是 Nginx Ingress Controller 預期列表符合的格式。
首先,更新套件管理器快取:
然後,執行以下命令在系統上安裝 htpasswd
:
您將把列表存儲在名為 auth
的文件中。通過運行以下命令創建它:
此文件需要命名為 auth
,因為 Nginx Ingress Controller 預期密鑰包含一個名為 data.auth
的鍵。如果缺少這個文件,控制器將返回 HTTP 503 Service Unavailable
狀態。
通過運行以下命令將用戶名和密碼組合添加到 auth
中:
請記得用您想要的用戶名替換 username
。系統將要求您提供相應的密碼,然後將組合添加到 auth
文件中。您可以將此命令重複用於想要添加的用戶數量。
注意: 如果您所在的系統沒有安裝 htpasswd
,您可以使用 Docker 化的版本。
您需要在您的機器上安裝 Docker。有關如何操作的說明,請訪問 官方文檔。
運行以下命令以運行 Docker 化版本:
請記得將<username>
替換為您想使用的用戶名。您將被要求輸入密碼。雜湊的登錄組合將被寫入控制台,您需要手動將其添加到auth
文件的末尾。重複此過程以添加所需的登錄。
完成後,運行以下命令將文件內容創建為Kubernetes中的新秘密:
您可以使用以下命令查看秘密:
輸出將如下所示:
接下來,您需要編輯Ingress以使用此秘密。打開部署配置進行編輯:
將下面突出顯示的行添加到您的文件中:
首先,在auth-type
註釋中,您指定驗證類型為basic
。這意味著Nginx將要求用戶輸入用戶名和密碼。然後,在auth-secret
中,您指定包含有效組合列表的秘密為theia-basic-auth
,這是您剛創建的。其餘的auth-realm
註釋指定將顯示給用戶的消息,作為解釋為什麼需要進行身份驗證。您可以更改此字段中包含的消息以滿足您的需求。
保存並關閉文件。
為了將更改傳播到您的集群,請運行以下命令:
您將看到輸出:
Outputnamespace/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憑證
接下來,您將通過將Let’s Encrypt憑證應用於您的Ingress來保護您的Eclipse Theia安裝,Cert-Manager將自動提供這些憑證。完成此步驟後,您的Eclipse Theia安裝將通過HTTPS訪問。
打開eclipse-theia.yaml
進行編輯:
將以下突出顯示的行添加到您的文件中,請確保將占位符域替換為您自己的域:
首先,您指定了您作為先決條件的一部分創建的letsencrypt-prod
ClusterIssuer作為將用於為此Ingress提供憑證的發行者。然後,在tls
部分中,您指定應該安全的確切域,以及將保存這些憑證的秘密的名稱。
保存並退出文件。
運行以下命令將更改應用於您的集群:
輸出將如下所示:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
證書的配置和完全應用需要幾分鐘的時間。您可以通過觀察以下命令的輸出來跟踪進度:
完成後,輸出的末尾將類似於這樣:
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用戶界面。
第四步 – 使用Eclipse Theia界面
在本部分中,您將探索Eclipse Theia界面的一些功能。
在IDE的左側,有一個垂直排列的四個按鈕,可以在側邊欄中打開最常用的功能。
此欄是可自定義的,因此您可以將這些視圖移動到不同的順序,或者從欄中刪除它們。默認情況下,第一個視圖打開了Explorer面板,提供了項目結構的樹形導航。您可以在這裡管理文件夾和文件 – 根據需要創建、刪除、移動和重命名它們。
通過文件菜單創建新文件後,您將在新標籤中看到一個空文件打開。保存後,您可以在資源管理器側邊欄中查看文件名。要創建文件夾,請右擊資源管理器側邊欄,然後點擊新建文件夾。您還可以通過點擊其名稱來展開文件夾,並將文件和文件夾拖放到層次結構的較高部分以將其移動到新位置。
下一個選項提供了訪問搜索和替換功能的入口。接著,下一個選項提供了您可能正在使用的源代碼控制系統的視圖,例如Git。
接下來的視圖是調試器選項,它在面板中提供了所有常見的調試操作。您可以在launch.json
文件中保存調試配置。
最後一個選項允許您查看和安裝擴展:
GUI的中心部分是您的編輯器,您可以通過標籤將其分開以進行代碼編輯。您可以將編輯視圖更改為網格系統或並排文件。與所有現代IDE一樣,Eclipse Theia支持代碼的語法突出顯示。
您可以通過輸入CTRL+SHIFT+`
來訪問終端,或者通過點擊上方菜單中的終端,然後選擇新建終端來訪問終端。終端將在下方面板中打開,其工作目錄將設置為項目的工作區,其中包含資源管理器側邊欄中顯示的文件和文件夾。
如果您想要銷毀集群上的Eclipse Theia部署,請運行以下命令:
你已經對 Eclipse Theia 介面進行了高層次概述,並且檢查了一些最常用的功能。
結論
你現在已在你的 DigitalOcean Kubernetes 集群上安裝了 Eclipse Theia,一個多功能的雲端 IDE。你已經使用免費的 Let’s Encrypt TLS 憑證對其進行了安全設置,並設置了該實例需要訪問者登錄。你可以個人使用它來處理你的源代碼和文檔,或者與你的團隊進行協作。如果你需要額外的功能,你也可以嘗試構建你自己的 Eclipse Theia 版本。有關如何執行該操作的進一步信息,請訪問 Theia docs。