1.2. 架构


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

与 devworkspace 交互的 devspace

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

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

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

Dev Workspace 自定义资源
代表用户工作区的有效 OpenShift 对象,并由 OpenShift Dev Spaces 操作。它是三组组件的通信通道。
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 Operator 确保 OpenShift Dev Spaces 服务器组件的完整生命周期管理。它引进了:

CheCluster 自定义资源定义(CRD)
定义 CheCluster OpenShift 对象。
OpenShift Dev Spaces 控制器
创建并控制必要的 OpenShift 对象来运行 OpenShift Dev Spaces 实例,如 pod、服务和持久卷。
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-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 Deployment 中启动一个专用的 PostgreSQL 实例。您可以使用外部数据库。

图 1.7. PostgreSQL 与其他组件交互

PostgreSQL 与其他组件交互

1.2.1.8. 插件 registry

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

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

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

插件 registry 与其他组件交互

1.2.2. 用户工作区

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

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

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

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

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

工作区是包含工作区容器和已启用插件的 OpenShift 部署,以及相关的 OpenShift 组件:

  • 容器
  • ConfigMaps
  • 服务
  • Endpoints
  • ingresses 或 Routes
  • Secrets
  • 持久性卷(PV)

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

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

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

图 1.10. OpenShift Dev Spaces 工作区组件

带有 dw 的工作区组件

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.