制品晋级(Alpha)
概述
制品晋级是在制品的 Registry 之间升级制品的过程,用来确保只有经过批准和验证的制品才能在正确的环境(例如生产环境)中使用。
平台从 v3.16.0 版本开始,提供了全新的 制品晋级 能力,以满足企业跨业务部门和平台部门晋级镜像等制品的诉求。
核心能力
-
平台团队,在 平台管理 视图配置 制品晋级 策略,用来决定:
-
哪些业务团队(对应的是平台项目)受此制品晋级策略的内容约束。
注意:只有被晋级策略约束的平台项目,才能配置出合规的制品晋级单。
-
受制品晋级策略约束的业务团队,可以选择的晋级目标的制品工具项目。
-
晋级的制品,需要满足的制品属性校验(Tag、Label、环境变量)规则。
-
审批配置。
-
-
平台团队,在 平台管理 视图做 制品晋级单执行 的审批,同意或者拒绝业务侧的制品晋级单执行。
-
业务团队,在 DevOps 视图下配置 制品晋级单,确定制品的晋级路径,并按需触发具体的 制品版本 的晋级,观测晋级状态。
注意:业务团队使用制品晋级功能需满足以下前提条件:
-
已经配置了制品晋级策略,且策略中的 作用域 包含了当前的平台项目,目标制品工具 是当前的平台项目预期把制品晋级到的目标制品工具。
-
用于存放待晋级的制品的制品工具已经集成到当前的平台项目。
-
主要场景
-
场景一:一个团队有快速的制品晋级的诉求,期望快速把一个制品从一个 Harbor 晋级到其他制品 Registry,或者把一个制品从其他制品 Registry 晋级到 Harbor。且没有人工审批等企业合规性要求。
解决方案:
-
利用 Harbor Replication 的能力满足,详见 Harbor 官方文档中的 HARBOR ADMINISTRATION > Configuring Replication 章节下的内容。
-
通过开源社区项目解决,例如
skopeo。
-
-
场景二:与场景一类似,但期望通过流水线的方式自动化地实现制品的构建、检测、晋级、部署等完整流程。
解决方案:可以通过在平台的 CI/CD 流水线中自定义 制品晋级 流水线任务的方式完成。自定义流水线任务的方式详见 DevOps 视图下帮助文档。如需更多帮助,请提交售后服务工单进一步咨询。
-
场景三:企业希望统一的管理制品晋级,将制品从一个业务部门晋级到平台部门,且受平台的合规策略校验以及平台团队的人工审批的约束。
解决方案:使用本文描述的 制品晋级 产品能力实现。
操作流程
创建制品晋级策略
-
在 平台管理 视图的左侧导航栏中,单击 工具链管理 > 制品晋级策略 > 创建策略。
-
配置 基本信息。包括:名称、显示名称。
-
配置 作用域。
作用域主要有两个作用:
-
制品晋级单执行的过程,受匹配上作用域的策略约束。
-
作用域构成了一个合规的制品晋级单配置的集合,这个集合是业务侧在平台项目下可以配置晋级到的目标制品的所有可选项。如果一个平台项目没有匹配作用域的制品晋级策略,则无法配置出合规的制品晋级单,因为晋级单的目标制品工具选项里没有可选项。
例如:在项目 p1 下,可选的向平台侧晋级的目标制品晋级列表,是所有包含了项目 p1 的晋级策略资源里,每一个策略声明的目标制品仓库的内容。
参数 说明 平台项目 即平台的项目。
业务含义:
- 哪些项目下的制品晋级,受此晋级策略约束。
- 只有被晋级策略约束的平台项目,才能配置出合规的制品晋级单。目标制品工具 集成名称:平台侧的制品类型的集成。
制品工具项目:已选的平台集成下可选的工具项目。 -
-
配置 制品属性匹配。
-
制品属性包括 3 种:Tag、Label、环境变量。
-
匹配规则可以有多组,组与组之间是 或 的关系。
-
每个匹配规则内,Tag、Label、环境变量至多可以配置 1 次,且不同配置之间是 且 的关系。
-
每个匹配规则内的每个属性配置里,可以有多个值,值之间是 且 的关系。
-
制品属性匹配为必填项,至少需要配置一个属性的一个校验规则。
-
-
配置 来源制品。
参数 说明 工具地址 往目标制品仓库晋级的制品,必须来自于此 工具地址 列表,作为可信的制品源。
换言之,该配置类似网络防火墙的白名单。
若不配置,意味着平台团队不关心制品必须得从哪里晋级过来。 -
配置 审批配置。
参数 说明 是否需要审批 - 关闭(默认):意味着不需要人工审批。当制品晋级单执行时,晋级策略自动校验完成并通过后,直接开始制品的晋级动作(即推送到目标制品仓库等)。
- 打开:意味着需要人工审批。当晋级策略自动校验完成并通过后,晋级单执行进入到 待审批 状态,需要审批结束后再进行下一步动作。审批人 选择负责审批的用户,可多选。
可选择的用户范围:所有 平台角色 类型的用户。审批策略 可选 任意人审批(默认)、全部人审批。等待时间 超出等待时间,则默认拒绝。
对制品晋级单执行执行审批
-
在 平台管理 视图的左侧导航栏中,单击 工具链管理 > 制品晋级单执行。
-
单击待审批制品晋级单执行右侧的 审批,按照 审批弹框 的提示,执行审批操作(同意、拒绝、代他人审批)。
注意:
-
只有被指定的审批人,以及平台管理员,可以在 制品晋级单执行 的状态为
待审批时,执行审批同意、拒绝操作。 -
只有平台管理员可以代他人审批。
-
创建制品晋级单
-
切换至 DevOps 视图,在左侧导航栏中,单击 制品管理 > 制品晋级单 > 创建制品晋级单。
-
配置 基本信息。包括:名称、显示名称。
-
配置 晋级单执行资源,指定制品晋级单执行的资源会在哪里运行,以及保留的执行记录条数。
-
参考以下说明,配置 制品仓库映射。
-
可以有多组映射关系,每一组映射关系的业务含义是:从源制品工具的制品仓库,晋级到目标制品工具的制品仓库。
-
源仓库:工具项目 是当前平台下集成的制品类资源;制品仓库 是工具项目之下可选的制品仓库列表。
这意味着,业务团队有直接访问源仓库的权限。 -
目标仓库:工具项目 的可选项是来自于制品晋级策略配置的目标制品工具的项目的并集;制品仓库 可输入,默认和源仓库选择的制品仓库同名,且可以更改。
这意味着,目标仓库的工具项目是来自于作用域和当前平台项目匹配的制品晋级策略里配置的目标制品项目,和当前业务团队的权限无关。
-
制品晋级单执行
-
在 DevOps 视图的左侧导航栏中,单击 制品管理 > 制品晋级单。
-
选择一个制品晋级单,单击 执行。
-
根据界面提示,选择对应的 制品仓库映射 后选择具体的制品 Tag,确认待晋级的制品。
-
单击 执行,触发晋级。
提示:您可在 制品晋级单执行 的详情页里,观测晋级状态。
FAQ
制品晋级功能的基本场景是什么?
是平台团队制定制品晋级策略,面向指定的业务团队(平台项目)生效,并确认每个业务团队可晋级到的目标制品工具的工具项目,然后通过制品属性等校验,以及人工审批后,将制品晋级到目标制品仓库中。
因此,这个功能是需要由平台团队主导。它不适用于希望整个制品晋级的流程在业务团队内完成的场景。
晋级策略的作用域应该选择平台下的所有项目吗?
建议不要选择 全平台,而是以白名单的方式,允许哪个业务团队(对应平台项目)晋级,则制品晋级策略里指定哪个项目。除非当前制品晋级策略对未来新增的平台项目也完全适用。
如何配置制品晋级策略的作用域约束的工具项目范围?
出于安全考虑,平台团队不应该将工具的所有项目都暴露给业务团队,避免越权。因此,不支持选择全部项目,只能指定一个或者多个工具项目。
指定审批人只依赖角色类型,他是否有权限执行审批依赖权限设置?
选择审批人的时候,所有 平台角色 类型的用户都可以被指定为审批人,但是这个人是否有审批权限,取决于他是否有制品晋级单审批的权限(审批 按钮是否可用)。
一个制品晋级单执行可以匹配多个制品晋级策略,会带来哪些已知问题?
当有不止一个制品晋级策略配置了同一个平台项目的作用域时,在相应的平台项目下晋级制品,可能会出现以下问题。
-
问题一:匹配到多个审批。
解决办法:以晋级策略更新时间倒序匹配,以第一个匹配到的晋级策略的审批配置为准。
-
问题二:不同晋级策略配置的平台集成资源设置的凭据可能不同,有可能会影响到晋级到目标制品仓库时的访问权限。
解决办法:以晋级策略更新时间倒序匹配,以第一个匹配到的晋级策略里配置的集成资源中的凭据为准。
平台升级到 v3.16.0 后,原来制品晋级老数据如何处理?
推荐方案:由于在 v3.16.0 后制品晋级功能变化巨大,推荐基于新能力,根据实际业务需求,参考本文重新配置制品晋级的各个资源。
迁移方案:如果由于种种原因,希望迁移老数据适配新版本,可参考 Customer Portal 知识库中方案文档(搜索关键字:制品晋级迁移)执行迁移。