Che工作区是一个Web应用程序。它由运行在容器中的微服务组成,这些容器提供现代IDE的所有服务(编辑器、语言自动完成、调试工具)。IDE服务与开发工具一起部署,打包在容器和用户运行时应用程序中,这些应用程序被定义为Kubernetes资源。Che工作区项目的源代码保存在Kubernetes Persistent卷中。Microservices运行在对源代码具有读写访问权限的容器中(IDE服务、开发工具),运行时应用程序可以对此共享目录进行读写访问。 下图显示了Che工作区的详细组件。 image

在图中,有三个正在运行的工作区:两个属于用户A,一个属于用户C。第四个工作区是在插件代理正在验证和完成工作区配置的地方提供的。使用devfile格式指定Che工作区的工具和运行时应用程序。

CHE工作空间组件

Che plug-ins

CHE插件是扩展Che工作区功能的特殊服务。CHE插件被包装成容器.将插件打包到容器中有以下好处:

  • 它将插件与主IDE隔离开来,从而限制了插件可以访问的资源。
  • 它使用容器注册中心的统一标准发布和分发插件(与任何容器映像一样)。

插件的容器被打包成Che工作区编辑器的侧文件,并增强了它的功能。封装在容器中的VisualStudio代码扩展是用于Che-Theia编辑器的Che插件。多个Che插件可以在同一个容器中运行(为了更好地使用资源),或者Che插件可以在其专用容器中运行(以便更好地隔离)。

Che editor plug-in

Che编辑器是Che工作区插件。它定义了用作工作区编辑器的Web应用程序。默认的Che工作区编辑器称为EclipseChe-Theia。EclipseChe-Theia源代码存储库位于CheTheiaGizub。它基于EclipseTheia开源项目。Che-Theia是用打字本写的,是建立在微软摩纳哥编辑的基础上的。它是一个基于web的源代码编辑器,类似于VisualStudioCode(VS代码).它有一个支持VS代码扩展的插件系统.

Source code : Che Theia

Container image : eclipse/che-theia

Che user runtimes

使用任何非终止的用户容器作为用户运行时。可以定义为容器映像或一组Kubernetes或OpenShift资源的应用程序可以包含在Che工作区中。这使得在Che工作区中测试应用程序变得很容易。若要在Che工作区中测试应用程序,请在工作区规范中包含用于Stage或Products的应用程序YAML定义。用户运行时的例子有Node.js、SpringBoot或MongoDB和MySQL。

Che workspace JWT proxy

JWT代理负责确保CHE工作区服务的通信。只有在多用户模式中配置了CHE服务器的情况下,CHE工作区JWT代理才包含在CHE工作区中。HTTP代理用于将来自工作区服务的传出请求签名到CHE服务器,并从在浏览器上运行的IDE客户端验证传入请求。

Source code : JWT proxy

Container image : eclipse/che-jwtproxy

Che plug-in broker

插件代理是一种特殊的服务,给出一个插件元.yaml文件:收集所有信息以提供Che服务器所知道的Che插件定义。在工作区命名空间中执行准备操作(下载、解压缩文件、进程配置)。插件代理的主要目标是将Che插件定义与Che可以支持的实际插件分离开来。有了代理,Che可以支持不同的插件,而无需更新Che服务器。Che服务器启动插件代理。插件代理运行在与工作区相同的Kubernetes命名空间中。它可以访问插件和项目持久卷。插件代理被定义为容器映像(例如,eclipse/che-plugin-Broker)。插件类型决定已启动代理的类型。支持两种类型的插件:CHE插件和Che编辑器。

Source code : Che Plug-in broker

Container image : eclipse/che-init-plugin-broker eclipse/che-unified-plugin-broker

CHE工作空间配置

部署新工作区pod的Kubernetes命名空间取决于Che服务器配置。默认情况下,每个工作区都部署在一个不同的命名空间中,但是用户可以配置Che服务器以将所有工作区部署在一个特定的命名空间中。命名空间的名称必须作为Che服务器配置属性提供,并且不能在运行时更改。

image

以下是CHE工作区创建流程:

  • 用户启动由以下定义的CHE工作区:
    • 编辑器(默认值为CHE-THEIA)
    • 插件列表(例如,Java和Kubernetes工具)
    • 运行时应用程序的列表
  • wsmaster从插件注册表中检索编辑器和插件元数据。
  • 对于每个插件类型,wsmaster启动特定的插件代理。
  • CHE插件代理将插件元数据转换为CHE插件定义。它执行以下步骤:
    • 下载插件并提取其内容。处理插件meta.yaml文件,
    • 并以CHE插件的格式将其发回WSMASTER。
  • wsmaster启动编辑器和插件Sidecar。
  • 编辑器从插件持久卷加载插件。