架构

目录
ConnectorConnectorClassConnectors Proxy内置 Connectors Proxy自定义 Connectors ProxyConnectors APIConnectorClass APIConnectors CSI DriverResourceInterfaceConnector
Connector 是表示特定工具集成实例的资源。通过配置工具的访问 URL 和认证信息,我们可以创建该工具的集成实例。
例如,使用 GitHub Private Access Token 集成 https://github.com 就是通过 Connector 实现的。
在 Kubernetes 中,Connector 是一个命名空间级别的自定义资源。用户可以在同一命名空间内创建多个 Connector 来集成不同的工具。
例如,在 default 命名空间中,可以同时创建一个用于集成 https://github.com 的 Connector 和一个用于集成 https://hub.docker.com/ 的 Connector。
平台管理员可以通过管理 Connector 资源来实现对整个集群中工具集成的管理。
ConnectorClass
ConnectorClass 定义了特定类型工具的访问方式和行为规范。它规定了集成某类工具时需要的参数,比如工具地址和认证信息。
例如,Git ConnectorClass 定义了集成 Git 工具时需要提供的配置项,包括 Git 服务地址和 Basic-Auth 认证信息。
在 Kubernetes 中,ConnectorClass 是一个集群级别的自定义资源。开发者可以通过定义新的 ConnectorClass 来扩展平台支持的工具类型。
例如,可以定义一个 Harbor ConnectorClass 来支持 Harbor 镜像仓库的集成,定义一个 MySQL ConnectorClass 来支持 MySQL 数据库的集成,或者定义一个 Jira ConnectorClass 来支持 Jira 项目管理工具的集成。
Connectors Proxy
Connectors Proxy 是 Connectors 系统的核心能力,提供对集成工具的安全无秘访问。它通常作为一个 HTTP 服务运行,可以作为客户端应用的正向代理或反向代理。
当客户端通过 Connectors Proxy 访问工具资源时,代理会自动将所需的认证凭证注入请求中,实现无缝访问,无需客户端直接处理凭证。这种方式带来了显著的安全优势:
- 无秘访问:通过 Kubernetes 签发的短期令牌,避免将工具凭证直接分发给客户端,防止凭证在客户端环境(如日志或环境变量)中泄露。
为了满足不同工具的认证需求,平台支持内置和自定义代理实现。每个 ConnectorClass 可以提供自己的代理服务,以灵活满足特定工具的认证需求。
内置 Connectors Proxy
内置实现支持完整的 HTTP/HTTPS 协议,支持 Basic Auth 和 Bearer Token 认证方式。提供正向代理和反向代理功能,灵活性极高。
使用者:K8s ConnectorClass、Git ConnectorClass
自定义 Connectors Proxy
对于需要特殊认证机制的工具,可以开发自定义代理实现。
示例:OCI ConnectorClass 使用自定义的 OCI 插件代理,支持 Harbor 和 CNCF Distribution Registry 等注册表的 OCI 协议和 Bearer Token 授权。
更多信息:Connectors Proxy
Connectors API
Connectors API 提供基于 Connector 实例访问内部工具资源的能力。例如,对于 Git Connector,Connectors API 可以获取 Git 仓库中的分支列表(References)。
开发者可以通过 Connectors API 方便地访问工具内资源,无需关心具体工具地址和认证细节。
系统支持两种方式通过 API 访问工具资源:
- 原始工具 API:当 ConnectorClass 提供代理服务能力时,客户端可以通过 Connector API 直接访问工具的原始 API。系统自动将请求转发到工具的代理服务,完成认证注入,并返回工具的原始数据。
- 自定义 API:使用 ConnectorClass 提供的自定义 API,提供超出工具原始 API 的扩展能力。
该 API 在实际应用中非常有用,例如:
- 创建应用时获取容器镜像的标签列表
- Git Clone 操作时获取代码仓库的分支列表(References)
- 当 ConnectorClass 支持代理服务时,直接访问工具特定的 API
Connectors API 的实现基于 ConnectorClass API 提供的底层能力。
ConnectorClass API
ConnectorClass API 定义了特定类型工具提供的 API。
不同类型的工具可以提供不同的 API 能力,例如:
Git ConnectorClass API可以提供获取代码仓库分支列表的能力OCI ConnectorClass API可以提供获取制品仓库标签列表的能力
开发者可以为每个 ConnectorClass 定义独特的 API 能力,这些能力最终通过 Connectors API 对客户端开放。
Connectors CSI Driver
为了方便 K8S 工作负载更容易利用 Connectors-Proxy 能力,可以使用 Connectors CSI Driver。
Connectors CSI Driver 可以将 ConnectorClass 中维护的配置文件模板渲染后的内容挂载到工作负载中。配置文件可以包含访问 Connectors Proxy 的信息,使用户能够以最小改动使用 Connectors Proxy 能力。
更多信息,请参见 connectors csi driver
ResourceInterface
ResourceInterface 是一种标准化抽象,定义了如何将外部资源(如 Git 仓库、OCI 容器镜像、制品仓库)集成到流水线工作流中。
在构建 CI/CD 流水线时,用户传统上需要手动配置资源 URL、git 分支/标签、OCI 镜像标签、制品仓库及认证凭证。此过程复杂且易出错,且使流水线配置与具体工具实例高度耦合。
ResourceInterface 通过提供标准资源抽象,如 “GitCodeRepository”、 “OCIArtifact” 和 “MavenArtifact”,解决了这一问题。用户无需手动输入类似 https://github.com/myorg/myapp.git 的 URL,而是可以选择连接器,通过 UI 浏览资源,系统自动生成正确的配置和凭证供流水线使用。
这种方式在不同工具间提供了一致且友好的体验,同时保持了支持多种实现的灵活性。
更多信息,请参见 ResourceInterface。
如果您想在自定义 Pipeline 或 Task 中集成 Connector,请参阅 Pipeline Integration