1.3. 架构


图 1.1. 使用 Dev Workspace Operator 的高级别 OpenShift Dev Spaces 架构

devspaces 与 devworkspace 交互

OpenShift Dev Spaces 在三个组件组上运行:

OpenShift Dev Spaces 服务器组件
管理用户项目和工作区。主组件是 User 仪表板,用户从中控制其工作区。
dev Workspace operator
创建和控制运行用户工作区所需的 OpenShift 对象。包括 Pod服务PersistentVolume
用户工作区
基于容器的开发环境,包含 IDE。

这些 OpenShift 功能的角色是中心的:

dev Workspace 自定义资源
代表用户工作区并由 OpenShift Dev Spaces 操作的有效 OpenShift 对象。它是三个组件组的通信频道。
OpenShift 基于角色的访问控制(RBAC)
控制所有资源的访问。

1.3.1. 服务器组件

OpenShift Dev Spaces 服务器组件确保多租户和工作区管理。

图 1.2. OpenShift Dev Spaces 服务器组件与 Dev Workspace operator 交互

与 devworkspace 交互的 devspaces 部署

1.3.1.1. dev Spaces operator

OpenShift Dev Spaces operator 确保 OpenShift Dev Spaces 服务器组件的完整生命周期管理。它引入了:

CheCluster 自定义资源定义(CRD)
定义 CheCluster OpenShift 对象。
OpenShift Dev Spaces 控制器
创建和控制运行 OpenShift Dev Spaces 实例所需的 OpenShift 对象,如 pod、服务和持久性卷。
CheCluster 自定义资源(CR)

在使用 OpenShift Dev Spaces operator 的集群中,可以创建 CheCluster 自定义资源(CR)。OpenShift Dev Spaces operator 在此 OpenShift Dev Spaces 实例中确保对 OpenShift Dev Spaces 服务器组件的完整生命周期管理:

1.3.1.2. dev Workspace operator

Dev Workspace operator 扩展 OpenShift 以提供 Dev Workspace 支持。它引入了:

dev Workspace 自定义资源定义
定义 Devfile v2 规范中的 Dev Workspace OpenShift 对象。
dev Workspace 控制器
创建和控制运行 Dev Workspace 所需的 OpenShift 对象,如 Pod、服务和持久卷。
dev Workspace 自定义资源
在使用 Dev Workspace operator 的集群中,可以创建 Dev Workspace 自定义资源(CR)。Dev Workspace CR 是 Devfile 的 OpenShift 表示。它在 OpenShift 集群中定义用户工作区。

其他资源

1.3.1.3. gateway

OpenShift Dev Spaces 网关有以下角色:

  • 路由请求。它使用 Traefik
  • 使用 OpenID Connect (OIDC)验证用户。它使用 OpenShift OAuth2 代理
  • 应用 OpenShift 基于角色的访问控制(RBAC)策略来控制对任何 OpenShift Dev Spaces 资源的访问。它使用 'kube-rbac-proxy'

OpenShift Dev Spaces operator 会作为 che-gateway 部署进行管理。

它控制对以下的访问:

图 1.3. OpenShift Dev Spaces 网关与其他组件交互

OpenShift Dev Spaces 网关与其他组件交互

1.3.1.4. 用户仪表板

用户仪表板是 Red Hat OpenShift Dev Spaces 的登录页面。OpenShift Dev Spaces 用户浏览用户仪表板来访问和管理其工作区。它是 React 应用。OpenShift Dev Spaces 部署在 devspaces-dashboard Deployment 中启动它。

它需要访问:

图 1.4. 用户仪表板与其他组件交互

用户仪表板与其他组件交互

当用户请求用户仪表板来启动工作区时,用户仪表板执行这个操作序列:

  1. 当用户从代码示例创建工作区时,从 第 1.3.1.5 节 “devfile registry” 收集 devfile。
  2. 当用户从远程 devfile 创建工作区时,请将存储库 URL 发送到 第 1.3.1.6 节 “dev Spaces 服务器”,并需要返回 devfile。
  3. 读取描述工作区的 devfile。
  4. 第 1.3.1.7 节 “插件 registry” 收集附加元数据。
  5. 将信息转换为 Dev Workspace 自定义资源。
  6. 使用 OpenShift API 在用户项目中创建 Dev Workspace 自定义资源。
  7. 监视 Dev Workspace 自定义资源状态。
  8. 将用户重定向到正在运行的工作区 IDE。

1.3.1.5. devfile registry

其他资源

OpenShift Dev Spaces devfile registry 是提供示例 devfile 列表的服务,以创建 ready-to-use 工作区。第 1.3.1.4 节 “用户仪表板”Dashboard Create Workspace 页面中显示示例列表。每个示例都包含一个 Devfile v2。OpenShift Dev Spaces 部署在 devfile-registry 部署中启动一个 devfile registry 实例。

图 1.5. devfile registry 与其他组件交互

Devspaces devfile registry 交互

1.3.1.6. dev Spaces 服务器

OpenShift Dev Spaces 服务器主要功能有:

  • 创建用户命名空间。
  • 使用所需的 secret 和配置映射置备用户命名空间。
  • 与 Git 服务提供商集成,以获取并验证 devfile 和身份验证。

OpenShift Dev Spaces 服务器是一个 Java Web 服务,用于公开 HTTP REST API 并需要访问:

  • Git 服务提供商
  • OpenShift API

图 1.6. OpenShift Dev Spaces 服务器与其他组件交互

OpenShift Dev Spaces 服务器与其他组件交互

1.3.1.7. 插件 registry

每个 OpenShift Dev Spaces 工作区都以特定的编辑器以及一组关联的扩展开头。OpenShift Dev Spaces 插件 registry 提供了可用编辑器和编辑器扩展的列表。Devfile v2 描述了每个编辑器或扩展。

第 1.3.1.4 节 “用户仪表板” 正在读取 registry 的内容。

图 1.7. 插件 registry 与其他组件交互

插件 registry 与其他组件交互

1.3.2. 用户工作区

图 1.8. 用户工作区与其他组件交互

用户工作区与其他组件交互

用户工作区是在容器中运行的 Web IDE。

用户工作区是一个 Web 应用。它由容器中运行的微服务组成,提供在浏览器中运行的现代 IDE 的所有服务:

  • Editor
  • 语言自动完成
  • 语言服务器
  • 调试工具
  • 插件
  • 应用程序运行时

工作区(workspace)是一个 OpenShift Deployment,其中包含工作区容器并启用的插件,以及相关的 OpenShift 组件:

  • 容器
  • ConfigMaps
  • 服务
  • Endpoints
  • 入口或路由
  • Secrets
  • 持久性卷(PV)

OpenShift Dev Spaces 工作区包含项目的源代码,并在 OpenShift 持久性卷(PV)中保留。微服务具有对此共享目录的读/写访问权限。

使用 devfile v2 格式指定 OpenShift Dev Spaces 工作区的工具和运行时应用程序。

下图显示了运行 OpenShift Dev Spaces 工作区及其组件。

图 1.9. OpenShift Dev Spaces 工作区组件

工作区组件

在图中,有一个正在运行的工作区。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.