1.2. OpenShift Dev Spaces 架构
图 1.1. 使用 DevWorkspace 运算符的高级 OpenShift Dev Spaces 架构
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 运算符交互
其他资源
1.2.1.1. OpenShift Dev Spaces operator
OpenShift Dev Spaces 操作器确保 OpenShift Dev Spaces 服务器组件的完整生命周期管理。它引进了:
CheCluster
自定义资源定义(CRD)-
定义
CheCluster
OpenShift 对象。 - OpenShift Dev Spaces controller
- 创建和控制运行 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 网关与其他组件交互
其他资源
1.2.1.4. 用户仪表板
用户仪表板是 Red Hat OpenShift Dev Spaces 的登录页面。OpenShift Dev Spaces 用户浏览用户仪表板,以访问和管理其工作区。它是 React 应用。OpenShift Dev Spaces 部署在 devspaces-dashboard
Deployment 中启动它。
它需要访问:
图 1.4. 用户仪表板与其他组件交互
当用户请求用户仪表板以启动工作区时,用户仪表板将执行这一系列操作:
- 当用户从代码示例创建工作区时,从 第 1.2.1.5 节 “Devfile registry” 收集 devfile。
- 将存储库 URL 发送到 第 1.2.1.6 节 “OpenShift Dev Spaces server”,并期望在用户从远程 devfile 创建工作区时返回 devfile。
- 读取描述工作区的 devfile。
- 从 第 1.2.1.8 节 “插件 registry” 收集附加元数据。
- 将信息转换为 DevWorkspace 自定义资源。
- 使用 OpenShift API 在用户项目中创建 DevWorkspace 自定义资源。
- 监视 DevWorkspace 自定义资源状态。
- 将用户重定向到正在运行的工作区 IDE。
1.2.1.5. Devfile registry
其他资源
OpenShift Dev Spaces devfile registry 是提供 devfile 示例列表来创建随时可用的工作区列表的服务。第 1.2.1.4 节 “用户仪表板” 在 Dashboard devfile-registry
部署中启动一个 devfile registry 实例。
图 1.5. Devfile registry 与其他组件交互
1.2.1.6. OpenShift Dev Spaces server
OpenShift Dev Spaces 服务器主要功能是:
- 创建用户命名空间.
- 使用所需的 secret 和配置映射置备用户命名空间。
- 与 Git 服务供应商集成,获取和验证 devfile 和身份验证。
OpenShift Dev Spaces 服务器是提供 HTTP REST API 的 Java Web 服务,需要访问:
- 第 1.2.1.7 节 “PostgreSQL”
- Git 服务供应商
- OpenShift API
图 1.6. OpenShift Dev Spaces 服务器与其他组件交互
1.2.1.7. PostgreSQL
OpenShift Dev Spaces 服务器使用 PostgreSQL 数据库保留用户配置,如工作区元数据。
OpenShift Dev Spaces 部署在 postgres
Deployment 中启动专用 PostgreSQL 实例。您可以使用外部数据库。
图 1.7. PostgreSQL 与其他组件交互
1.2.1.8. 插件 registry
每个 OpenShift Dev Spaces 工作区都以特定编辑器以及关联的扩展集开始。OpenShift Dev Spaces 插件注册表提供了可用编辑器和编辑器扩展的列表。Devfile v2 描述了每个编辑器或扩展。
第 1.2.1.4 节 “用户仪表板” 正在读取 registry 的内容。
图 1.8. 插件 registry 与其他组件交互