1.3. 架构
图 1.1. 使用 Dev Workspace operator 的 OpenShift Dev Spaces 架构
OpenShift Dev Spaces 在三个组件组上运行:
- OpenShift Dev Spaces 服务器组件
- 管理用户项目和工作区。主组件是 User dashboard,用户从中控制其工作区。
- dev Workspace operator
-
创建和控制运行用户工作区所需的 OpenShift 对象。包括
Pod
、服务和
PersistentVolume
。 - 用户工作区
- 基于容器的开发环境,包括 IDE。
这些 OpenShift 功能的角色是中央:
- dev Workspace 自定义资源
- 代表用户工作区并由 OpenShift Dev Spaces 操作的有效 OpenShift 对象。它是三个组件组的通信频道。
- OpenShift 基于角色的访问控制(RBAC)
- 控制对所有资源的访问。
其他资源
1.3.1. 服务器组件
OpenShift Dev Spaces 服务器组件确保多租户和工作区管理。
图 1.2. 与 Dev Workspace operator 交互的 OpenShift Dev Spaces 服务器组件
其他资源
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 操作器将 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 操作器将其作为 che-gateway
Deployment 进行管理。
它控制对以下的访问:
图 1.3. OpenShift Dev Spaces 网关与其他组件交互
其他资源
1.3.1.4. 用户仪表板
用户仪表板是 Red Hat OpenShift Dev Spaces 的登录页面。OpenShift Dev Spaces 用户浏览用户仪表板以访问和管理其工作区。它是 React 应用程序。OpenShift Dev Spaces 部署会在 devspaces-dashboard
部署中启动它。
它需要访问:
图 1.4. 用户仪表板与其他组件交互
当用户请求用户仪表板启动工作区时,用户仪表板会执行这一操作序列:
- 当用户从代码示例创建工作区时,从 第 1.3.1.5 节 “devfile registry” 收集 devfile。
- 当用户从远程 devfile 创建工作区时,将存储库 URL 发送到 第 1.3.1.6 节 “dev Spaces 服务器” 并需要返回 devfile。
- 读取描述工作区的 devfile。
- 从 第 1.3.1.7 节 “插件 registry” 收集其他元数据。
- 将信息转换为 Dev Workspace 自定义资源。
- 使用 OpenShift API 在用户项目中创建 Dev Workspace 自定义资源。
- 监视 Dev Workspace 自定义资源状态。
- 将用户重定向到正在运行的工作区 IDE。
1.3.1.5. devfile registry
其他资源
OpenShift Dev Spaces devfile registry 是提供示例 devfile 列表的服务,用于创建随时可用的工作区。第 1.3.1.4 节 “用户仪表板” 在 Dashboard devfile-registry
部署中启动一个 devfile registry 实例。
图 1.5. devfile registry 与其他组件交互
1.3.1.6. dev Spaces 服务器
OpenShift Dev Spaces 服务器主要功能是:
- 创建用户命名空间。
- 使用所需的 secret 和配置映射置备用户命名空间。
- 与 Git 服务提供商集成,以获取和验证 devfile 和身份验证。
OpenShift Dev Spaces 服务器是公开 HTTP REST API 的 Java Web 服务,需要访问:
- Git 服务提供商
- OpenShift API
图 1.6. 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 与其他组件交互
1.3.2. 用户工作区
图 1.8. 用户工作区与其他组件交互
用户工作区是在容器中运行的 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.9. OpenShift Dev Spaces 工作区组件
在图中,有一个正在运行的工作区。