1.2. 架构


图 1.1. 带有 Dev Workspace operator 的高级别 OpenShift Dev Spaces 架构

与 devworkspace 交互的 devspace

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

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

这些 OpenShift 功能的角色是中央化的:

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

1.2.1. 服务器组件

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

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

与 devworkspace 交互的 devspaces 部署

1.2.1.1. Dev Spaces operator

OpenShift Dev Spaces 运算符确保对 OpenShift Dev Spaces 服务器组件的完整生命周期管理。它引进了:

CheCluster 自定义资源定义(CRD)
定义 CheCluster OpenShift 对象。
OpenShift Dev Spaces 控制器
创建和控制必要的 OpenShift 对象,以运行 OpenShift Dev Spaces 实例,如容器集、服务和持久卷。
CheCluster 自定义资源(CR)

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

1.2.1.2. dev Workspace operator

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

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

1.2.1.3. gateway

OpenShift Dev Spaces 网关具有以下角色:

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

OpenShift Dev Spaces 操作器将它作为 che-gateway Deployment 进行管理。

它控制对以下内容的访问:

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

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

1.2.1.4. 用户仪表板

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

它需要访问:

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

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

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

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

1.2.1.5. devfile registry

其他资源

OpenShift Dev Spaces devfile registry 提供了一个示例 devfiles 列表来创建 ready-to-to-use 工作区。第 1.2.1.4 节 “用户仪表板”Dashboard Create Workspace 页面中显示示例列表。每个示例都包括一个 Devfile v2。OpenShift Dev Spaces 部署在 devfile-registry 部署中启动一个 devfile registry 实例。

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

devspaces devfile registry 互动

1.2.1.6. dev Spaces 服务器

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

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

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

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

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

1.2.1.7. PostgreSQL

OpenShift Dev Spaces 服务器使用 PostgreSQL 数据库来持久保留用户配置,如工作空间元数据。

OpenShift Dev Spaces 部署在 postgres 部署中启动一个专用的 PostgreSQL 实例。您可以使用外部数据库。

图 1.7. PostgreSQL 与其他组件交互

PostgreSQL 与其他组件交互

1.2.1.8. 插件 registry

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

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

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

插件 registry 与其他组件交互

1.2.2. 用户工作区

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

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

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

用户工作区是一个 Web 应用。它包含在容器中运行的微服务,它们提供了在浏览器中运行的现代 IDE 服务:

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

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

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

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

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

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

图 1.10. OpenShift Dev Spaces 工作区组件

带有 dw 的工作空间组件

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.