1.3. 架构


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

与 devworkspace 交互的 devspace

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

OpenShift Dev Spaces 服务器组件
管理用户项目和工作区.主要组件是 User dashboard,用户可从中控制其工作区。
dev Workspace operator
创建和控制运行用户工作区所需的 OpenShift 对象。包括 PodServicesPersistentVolume
用户工作区
基于容器的开发环境,包括 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 对象,以运行 OpenShift Dev Spaces 实例,如 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 控制器
创建和控制所需的 OpenShift 对象,以运行 Dev Workspace,如 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. 将存储库 URL 发送到 第 1.3.1.5 节 “dev Spaces server”,并在用户从远程 devfile 创建工作区时返回 devfile。
  2. 读取描述工作区的 devfile。
  3. 第 1.3.1.6 节 “插件 registry” 收集其他元数据。
  4. 将信息转换为 Dev Workspace 自定义资源。
  5. 使用 OpenShift API 在用户项目中创建 Dev Workspace 自定义资源。
  6. 监视 Dev Workspace 自定义资源状态。
  7. 将用户重定向到正在运行的工作区 IDE。

1.3.1.5. dev Spaces server

其他资源

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

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

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

  • Git 服务供应商
  • OpenShift API

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

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

1.3.1.6. 插件 registry

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

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

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

插件 registry 与其他组件交互

1.3.2. 用户工作区

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

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

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

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

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

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

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

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

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

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

图 1.8. OpenShift Dev Spaces 工作区组件

工作区组件

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.