1.3. 架构
图 1.1. 使用 Dev Workspace operator 的高级别 OpenShift Dev Spaces 架构
OpenShift Dev Spaces 在三个组件组上运行:
- OpenShift Dev Spaces 服务器组件
- 管理用户项目和工作区.主要组件是 User dashboard,用户可从中控制其工作区。
- dev Workspace operator
-
创建和控制运行用户工作区所需的 OpenShift 对象。包括
Pod
、Services
和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 对象,以运行 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 网关与其他组件交互
其他资源
1.3.1.4. 用户仪表板
用户仪表板是 Red Hat OpenShift Dev Spaces 的登录页面。OpenShift Dev Spaces 用户浏览用户仪表板以访问和管理其工作区。这是一个 React 应用程序。OpenShift Dev Spaces 部署在 devspaces-dashboard
Deployment 中启动。
它需要访问:
- 第 1.3.1.5 节 “dev Spaces server”
- 第 1.3.1.6 节 “插件 registry”
- OpenShift API
图 1.4. 用户仪表板与其他组件的交互
当用户请求用户仪表板启动工作区时,用户仪表板会执行这个操作序列:
- 将存储库 URL 发送到 第 1.3.1.5 节 “dev Spaces server”,并在用户从远程 devfile 创建工作区时返回 devfile。
- 读取描述工作区的 devfile。
- 从 第 1.3.1.6 节 “插件 registry” 收集其他元数据。
- 将信息转换为 Dev Workspace 自定义资源。
- 使用 OpenShift API 在用户项目中创建 Dev Workspace 自定义资源。
- 监视 Dev Workspace 自定义资源状态。
- 将用户重定向到正在运行的工作区 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 服务器与其他组件交互
1.3.1.6. 插件 registry
每个 OpenShift Dev Spaces 工作区都以特定的编辑器和一组关联的扩展开始。OpenShift Dev Spaces 插件 registry 提供了可用编辑器和编辑器扩展列表。Devfile v2 描述了每个编辑器或扩展。
第 1.3.1.4 节 “用户仪表板” 读取 registry 的内容。
图 1.6. 插件 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 工作区组件
在图中,有一个正在运行的工作区。