Skip to content

制品库介绍

本文介绍 CNB 制品库的基本概念:

  • 支持的制品类型
  • 如何管理制品库
  • 制品库的权限控制
  • 存储容量统计与计费
  • 制品库迁移

您也可以跳过本章,直接查看对应制品类型的文档。各制品文档会在相关位置添加引导链接,指向本文的对应知识点。

制品类型

CNB 当前支持以下制品类型:

制品类型域名
Dockerdocker.cnb.cool
Docker Modeldocker-model.cnb.cool
Helmhelm.cnb.cool
Mavenmaven.cnb.cool
npmnpm.cnb.cool
ohpmohpm.cnb.cool
Nugetnuget.cnb.cool
Composercomposer.cnb.cool
PyPIpypi.cnb.cool
Cargocargo.cnb.cool
Conanconan.cnb.cool

管理制品库

各制品类型与组织、代码仓库在 UI 中的层级关系如下:

plaintext
test-org # 组织
├── maven
├── npm
├── ohpm
├── nuget
├── composer
├── pypi
├── cargo
├── conan
└── test-git-repo # 代码仓库
    ├── docker
    ├── helm
    └── docker model

如上图所示,Composer/Maven 等制品库归属于组织,Docker/Helm/Docker Model 制品库归属于组织下的代码仓库。因此两者的使用方式也不同。

使用 Docker/Helm/Docker Model 制品库

Docker/Helm/Docker Model 制品库归属于代码仓库,无需手动创建。 登录 CNB 后,您可以点击右上角「+」创建新的代码仓库,也可以点击右上角「头像」→「我的仓库」,使用已有仓库。 进入任意代码仓库后,点击「制品」可以看到 Docker/Helm/Docker Model 制品库,点击「使用指引」将会展示操作引导。

使用 Composer/Maven 等制品库

创建制品库

您可以点击右上角「+」创建新的制品库,也可以点击右上角「头像」,选择「我的制品库」,使用已有的制品库。 进入制品库后,点击「使用指引」将会展示操作引导。

删除制品

以 Composer 制品库举例(其他类型制品库操作也类似,包括 Docker/Helm/Docker Model): 推送制品到制品库以后,点击制品库名字,进入该制品。 点击「删除制品」将删除整个制品。点击「删除」图标,将删除指定版本。

删除制品库

Docker/Helm/Docker Model 制品库无需手动创建,也无需手动删除。 其他类型的制品库可以在「制品库设置」中删除。

获取制品库地址

在「制品库设置」>「基础设置」中可查看制品库地址。

权限管控

角色

Docker/Helm/Docker Model 类型制品的可见性与所托管的代码仓库可见性一致。用户对制品的操作权限由其在代码仓库中的角色决定。 Composer/Maven 等类型制品的可见性取决于制品库的可见性,用户对制品的操作权限由其在制品库中的角色决定。 用户在代码仓库中的角色,可在「代码仓库」>「设置」>「仓库成员」中查看。 用户在制品库中的角色,可在「制品库」>「制品库设置」>「成员管理」中查看。 下表中列出了制品行为及所需角色的对应关系:

资源行为所需角色
公开制品库制品拉取任何人都可以拉取,无需登录鉴权
公开制品库制品推送开发者及以上
公开制品库制品删除管理员及以上
私有制品库制品拉取访客及以上,需登录鉴权
私有制品库制品推送开发者及以上
私有制品库制品删除管理员及以上

访问令牌

当通过命令行工具读写制品时,最终对制品的操作行为能否获得授权,将由用户的角色和请求所携带的访问令牌权限共同决定。 当访问令牌缺失时,系统将视为匿名访问,匿名访问时操作权限将受到限制。 制品库详细鉴权策略如下:

  1. 登录操作,访问令牌有效,将会允许登录,否则拒绝。
  2. 匿名操作,仅允许拉取公开制品库制品,其余操作被拒绝。
  3. 查询、拉取、推送制品操作,要求用户角色拥有对应权限,且访问令牌的 registry-package 授权范围包含对应操作,则允许,否则拒绝。删除操作类似。
  4. 在策略 3 允许操作的基础上,若访问令牌指定了使用范围(如指定仓库、指定制品库、仅公开仓库/制品库),且此范围与被访问的资源匹配,则返回实际授权范围;否则需要检查被操作资源的可见性:
    • 如果被访问的资源为公开,拉取操作仍然会被允许,其余操作被拒绝;
    • 如果被访问的资源为私有,全部操作均将被拒绝。
  5. 用户、令牌、被访问资源任何一项处于非正常状态(如被冻结),全部操作均将被拒绝。只要携带了错误的访问令牌(令牌登录之后过期也会被视作非正常令牌),即使是拉取公开制品库的制品,也会被拒绝。

创建访问令牌

您可以点击右上角「头像」>「个人设置」>「访问令牌」>「添加访问令牌」创建新的访问令牌。 访问令牌的权限,只需要关注「授权范围」registry 部分即可。 「常见场景」选择「制品库」时,默认只会授权 registry-package 的读写权限。 若需要通过命令行工具删除制品(例如:npm unpublish),则需要勾选 registry-package-delete 的读写权限。 另外,「使用范围」中「指定制品库」无法选中 Docker、Helm 和 Docker Model 制品库,需选择「指定仓库」,然后再配置「常见场景」为「制品库」即可。

在云原生构建,云原生开发中使用令牌

有三种使用方式:

  1. 直接使用环境变量 ${CNB_TOKEN_USER_NAME} ${CNB_TOKEN}(推荐)。
  2. 手动创建访问令牌,创建后直接使用字面量(不推荐)。
  3. 手动创建访问令牌,写入到密钥仓库,然后再导入为环境变量(中性)。

关于方式 1 的说明: CNB 在云原生构建(CI 流水线)和云原生开发中为用户内置了访问令牌,若无特殊需求,可以直接使用该环境变量,无需再手动额外创建访问令牌。关于该访问令牌的权限范围,请参考 CNB_TOKEN。

容量统计

我们将基于您托管在 CNB 的制品所占存储空间进行计费。

  • 对于 Docker/Helm/Docker Model,您可以在「代码仓库」>「设置」>「用量统计」中查看每个制品所占用的容量。
  • 对于其他制品库,您可以在「制品库」>「制品库设置」>「用量统计」中查看每个制品占用的容量。

注意:Docker/Docker Model 制品的重复基础镜像会去重后计算容量。

制品迁移

如果您需要批量将制品从其他仓库迁移至 CNB 制品库,可以参考和使用 CNB 制品迁移工具。

相关文档