1.3. 架构
图 1.1. 使用 Dev Workspace Operator 的高级别 OpenShift Dev Spaces 架构
OpenShift Dev Spaces 在三个组件组上运行:
- OpenShift Dev Spaces 服务器组件
- 管理用户项目和工作区。主组件是 User 仪表板,用户从中控制其工作区。
- dev Workspace operator
-
创建和控制运行用户工作区所需的 OpenShift 对象。包括
Pod
、服务
和PersistentVolume
。 - 用户工作区
- 基于容器的开发环境,包含 IDE。
这些 OpenShift 功能的角色是中心的:
- dev Workspace 自定义资源
- 代表用户工作区并由 OpenShift Dev Spaces 操作的有效 OpenShift 对象。它是三个组件组的通信频道。
- OpenShift 基于角色的访问控制(RBAC)
- 控制所有资源的访问。
其他资源
1.3.1. 服务器组件
OpenShift Dev Spaces 服务器组件确保多租户和工作区管理。
图 1.2. OpenShift Dev Spaces 服务器组件与 Dev Workspace operator 交互
其他资源
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 operator 扩展 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 operator 会作为 che-gateway
部署进行管理。
它控制对以下的访问:
图 1.3. 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.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 列表的服务,以创建 ready-to-use 工作区。第 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 服务器是一个 Java Web 服务,用于公开 HTTP REST API 并需要访问:
- 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
- 语言自动完成
- 语言服务器
- 调试工具
- 插件
- 应用程序运行时
工作区(workspace)是一个 OpenShift Deployment,其中包含工作区容器并启用的插件,以及相关的 OpenShift 组件:
- 容器
- ConfigMaps
- 服务
- Endpoints
- 入口或路由
- Secrets
- 持久性卷(PV)
OpenShift Dev Spaces 工作区包含项目的源代码,并在 OpenShift 持久性卷(PV)中保留。微服务具有对此共享目录的读写访问权限。
使用 devfile v2 格式指定 OpenShift Dev Spaces 工作区的工具和运行时应用程序。
下图显示了运行 OpenShift Dev Spaces 工作区及其组件。
图 1.9. OpenShift Dev Spaces 工作区组件
在图中,有一个正在运行的工作区。