System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请属于容器镜像服务,尤其涉及一种多租户的镜像仓库改造方法及装置。
技术介绍
1、容器运行离不开容器镜像,容器镜像被镜像仓库所管理。docker的registry项目(后更名成docker-distribution)作为一个轻量的镜像仓库。它提供了较为简单的容器镜像的存储能力与分发能力。它既简单又安全,又具备很好的扩展性,因此不少其他开源项目也使用它来作为底层核心存储库。由vmware开源的云原生制品仓库harbor也就是其中之一。鉴于docker-distribution功能简单,因此在企业级应用中仍有不少功能需要补充,如对镜像仓库所属命名空间的管理,对镜像扫描,对镜像进行签名,对镜像进行跨实例的同步等。这样对整个容器镜像仓库进行架构上的调整。将其从上到下分成了代理层、功能层和数据层。比如对外暴露服务,提供api能力的harbor-core,执行实际扫描的harbor-trivy,这些属于功能层;前文提到的docker-distribution在此处用于镜像的实际存储,redis用于作为任务消息队列及缓存,执行各种任务包括垃圾回收、镜像同步的harbor-jobservice,用于存储整套系统所有结构化数据的postgresql数据库,这些属于数据层。
2、在容器镜像存储管理方面,harbor对比docker-distribution多了一层project层,多了project的好处是同一个镜像仓库可以从属于不同的project中,使得可以基于project来分配给不同团队使用或分配给不同用户使用,相互隔离,互补
技术实现思路
1、鉴于以上现有技术的不足,专利技术的目的在于提供一种多租户的镜像仓库改造方法及装置,让部分有状态的组件能根据租户的增减而动态扩缩容,独立存储带租户信息需要隔离的数据;让无状态的组件能适应多租户模式下运行,继续提供单一功能能力。以更节省资源的运行模式来应对多租户使用场景。
2、本申请的第一方面,提出了一种多租户的镜像仓库改造方法,该方法包括:
3、s1,创建新租户,并在组件中新开辟资源给创建的新租户独占使用;
4、s2,通过oci客户端执行命令从镜像服务拉取容器镜像;
5、s3,通过harbor-core转递镜像信息给其他组件。
6、进一步的,在步骤s1之前,该方法还包括:对harbor的各个组件进行修改。
7、进一步的,在postgresql里面的关键数据表中加上tenantid字段,包括atrifact、blob、repository和project,以让存放的数据带上租户信息,并新增tenant表记录租户信息。
8、进一步的,将registry、registry-ctl和chart-museum三个组件合并成一个,通过不同端口对外暴露api。
9、进一步的,在harbor-core中增加tenant中间件,用于从发来的请求的header或者host中提取信息,存入context传递给后续的处理逻辑。
10、进一步的,在harbor-core中,相关数据库的实体类增加tenantid字段,相关api及数据库持久化dao操作加上对tenant信息的处理逻辑,包括从context中获取tenant信息,对默认tenant的赋值处理。
11、进一步的,在harbor-core中,新增对租户管理的相关api及逻辑,包括post/api/v2.0/tenants和delete,/api/v2.0/tenants/{tenantid},get/api/v2.0/tenants,用于创建、删除以及查询租户信息;
12、进一步的,实现新的registry客户端,继承现有harbor-registry,在创建registry访问地址时按照数据记录的tenantid或者context中获取信息,选用默认registry服务名或者带租户信息的服务名。
13、进一步的,对所在kubernetes集群的coredns组件增加泛域名解析重定向。
14、一种多租户的镜像仓库改造装置,包括:存储器单元和处理器单元,所述存储器单元上存储有计算机程序,其特征在于,所述处理器单元执行所述程序时实现上述方法。
15、本申请有益效果如下:本申请能够实现多租户管理,无需部署多套harbor,大大节省资源使用;兼容原有的oci客户端,诸如容器镜像制品的代表docker,chart的代表helm和普通oci的oras。
本文档来自技高网...【技术保护点】
1.一种多租户的镜像仓库改造方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在步骤S1之前,所述方法还包括:对Harbor的各个组件进行修改。
3.根据权利要求2所述的方法,其特征在于,在PostgreSQL里面的关键数据表中加上tenantId字段,包括atrifact、blob、repository和project,以让存放的数据带上租户信息,并新增tenant表记录租户信息。
4.根据权利要求2所述的方法,其特征在于,将registry、registry-ctl和chart-museum三个组件合并成一个,通过不同端口对外暴露API。
5.根据权利要求4所述的方法,其特征在于,在Harbor-core中增加tenant中间件,用于从发来的请求的Header或者Host中提取信息,存入context传递给后续的处理逻辑。
6.根据权利要求4所述的方法,其特征在于,在Harbor-core中,相关数据库的实体类增加tenantId字段,相关API及数据库持久化DAO操作加上对tenant信息的处理逻
7.根据权利要求4所述的方法,其特征在于,在Harbor-core中,新增对租户管理的相关API及逻辑,包括POST/api/v2.0/tenants和DELETE,/api/v2.0/tenants/{tenantId},GET/api/v2.0/tenants,用于创建、删除以及查询租户信息。
8.根据权利要求2所述的方法,其特征在于,实现新的registry客户端,继承现有harbor-registry,在创建registry访问地址时按照数据记录的tenantId或者context中获取信息,选用默认registry服务名或者带租户信息的服务名。
9.根据权利要求2所述的方法,其特征在于,对所在Kubernetes集群的CoreDNS组件增加泛域名解析重定向。
10.一种多租户的镜像仓库改造装置,其特征在于,包括:存储器单元和处理器单元,所述存储器单元上存储有计算机程序,其特征在于,所述处理器单元执行所述程序时实现如权利要求1至9中任一项所述的方法。
...【技术特征摘要】
1.一种多租户的镜像仓库改造方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在步骤s1之前,所述方法还包括:对harbor的各个组件进行修改。
3.根据权利要求2所述的方法,其特征在于,在postgresql里面的关键数据表中加上tenantid字段,包括atrifact、blob、repository和project,以让存放的数据带上租户信息,并新增tenant表记录租户信息。
4.根据权利要求2所述的方法,其特征在于,将registry、registry-ctl和chart-museum三个组件合并成一个,通过不同端口对外暴露api。
5.根据权利要求4所述的方法,其特征在于,在harbor-core中增加tenant中间件,用于从发来的请求的header或者host中提取信息,存入context传递给后续的处理逻辑。
6.根据权利要求4所述的方法,其特征在于,在harbor-core中,相关数据库的实体类增加tenantid字段,相关api及数据库持久化dao操作加上对tenant信息的处理逻辑...
【专利技术属性】
技术研发人员:何健勇,林炜斌,林位宁,蔡岳阳,
申请(专利权)人:天翼云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。