1.2. OpenShift Dev Spaces 架构

图 1.1. 使用 DevWorkspace 运算符的高级 OpenShift Dev Spaces 架构

Che 与 devworkspace 交互

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

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

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

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

1.2.1. OpenShift Dev Spaces 服务器组件

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

图 1.2. OpenShift Dev Spaces 服务器组件与 DevWorkspace 运算符交互

Devspaces 部署与 devworkspace 交互

1.2.1.1. OpenShift Dev Spaces operator

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

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

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

1.2.1.2. DevWorkspace operator

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

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

其他资源

1.2.1.3. gateway

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

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

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

它控制对以下的访问:

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

1.2.1.5. Devfile registry

其他资源

OpenShift Dev Spaces devfile registry 是提供 devfile 示例列表来创建随时可用的工作区列表的服务。第 1.2.1.4 节 “用户仪表板”DashboardCreate Workspace 页面中显示示例列表。每个示例都包含一个 Devfile v2。OpenShift Dev Spaces 部署在 devfile-registry 部署中启动一个 devfile registry 实例。

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

Devspaces devfile registry 交互

1.2.1.6. OpenShift Dev Spaces 服务器

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

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

OpenShift Dev Spaces 服务器是提供 HTTP REST API 的 Java Web 服务,需要访问:

图 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 插件注册表提供了可用编辑器和编辑器扩展的列表。Devfile v2 描述了每个编辑器或扩展。

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

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

插件 registry 与其他组件交互