作者选择了自由开源基金作为Write for DOnations计划的捐赠对象。
介绍
随着开发者工具向云端迁移,云集成开发环境(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。要做到这一点,请参考如何使用Helm在DigitalOcean Kubernetes上设置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
要开始,您将在您的DigitalOcean Kubernetes集群中安装Eclipse Theia。然后,您将使用Nginx Ingress将其暴露在您期望的域上。
由于您在先决条件部分创建了两个示例部署和一个资源,您可以通过运行以下命令自由删除它们:
对于本教程,您将在本地机器上存储部署配置,存储在名为eclipse-theia.yaml
的文件中。使用以下命令创建它:
将以下行添加到文件中:
此配置定义了一个Namespace、一个Deployment、一个Service和一个Ingress。Namespace名为theia
,将包含与Eclipse Theia相关的所有Kubernetes对象,与集群的其余部分分开。Deployment由一个Theia Docker镜像实例组成,在容器上公开端口3000
。Service查找Deployment并重新映射容器端口到通常的HTTP端口80
,允许在集群内访问Eclipse Theia。
Ingress包含一个规则,用于在您期望的域上在外部端口80
提供服务。在其注释中,您指定应使用Nginx Ingress Controller进行请求处理。记得用您指向集群负载均衡器的期望域替换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
文件的格式是每行一个 用户名:哈希密码
组合,这是 Nginx Ingress 控制器期望列表符合的格式。
首先,更新包管理器缓存:
然后,通过运行以下命令在系统上安装 htpasswd
:
您将列表存储在名为 auth
的文件中。通过运行以下命令创建它:
此文件需要命名为 auth
,因为 Nginx Ingress 控制器期望该密钥包含一个名为 data.auth
的密钥。如果缺少它,控制器将返回 HTTP 503 服务不可用
状态。
通过运行以下命令将用户名和密码组合添加到 auth
中:
记得用你想要的用户名替换 用户名
。您将被要求提供一个相应的密码,然后将组合添加到 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证书
接下来,您将通过向您的Ingress应用Let’s Encrypt证书来保护您的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用户界面。
步骤4 — 使用Eclipse Theia界面
在本节中,您将探索Eclipse Theia界面的一些功能。
在IDE的左侧,有一个垂直排列的四个按钮,打开侧面板中最常用的功能。
此工具栏是可自定义的,因此您可以将这些视图移动到不同的顺序或从工具栏中删除它们。默认情况下,第一个视图打开“资源管理器”面板,该面板提供项目结构的树状导航。您可以在这里管理文件夹和文件 —— 根据需要创建、删除、移动和重命名它们。
通过文件菜单创建新文件后,您会在新标签页中看到一个空文件。保存后,您可以在资源管理器侧边栏中看到文件的名称。要创建文件夹,请右键单击资源管理器侧边栏,然后单击新建文件夹。您也可以点击文件夹名称来展开文件夹,还可以拖放文件和文件夹到层次结构的上层以将它们移动到新位置。
接下来的选项提供了访问搜索和替换功能。在此之后,下一个选项提供了对您可能正在使用的源代码控制系统(例如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 文档。