大家下午好,很高兴能有机会再次来到上海然后来到库博康来继续分享有关Harbor项目的一些动态大家如果去年参加过的话在去年的库博康上海Harbor是被宣布成功进入CNCF以应购背景项目的哦,台子上是吗?哦,不好意思这不太习惯沾这么高这游戏看不见我就看这个吧好,那我继续吧就在去年的上海库博康应该是11月份Harbor项目被宣布就是成功进入CNCF以应购背景项目这也是中国开源界第一个项目第一个源自于中国然后成功进入CNCF的项目那么经过这个半年多的时间那我们也项目也继续在往前发展Harbor项目也比较活跃所以我们会有一些更新来讲给大家今天有两个speaker是我Steven Zou然后是这个项目的commitenter然后另外一个是我们的coast speaker文开他也是这个项目的mitenter那特别提一下文开同学文开其实比我加入这个项目更早一点然后现在是TOP1的这个项目的commitputer所以大家有什么更多的问题都可以问问他这是我们两个简介吧,主要是说一下那个在github上我们两个这个图标一个是那个githubID的然后文开他是叫key那今天我们主要分一下四个部分嘛第一个部分我会先简单的讲一下Harbor的overware然后再展开讲一下Harbor在上一个1.8版本里边deliver一些比较重要的功能然后会再给大家受一下在1.9里边我们会有哪些feature要进来那再往更远的谈一谈Harbor在未来不远的未来我们还有哪些功能要在这个plan里面那最后返回来的话我们会讲一下community因为毕竟我们是一个开源的项目那开源项目的发展是需要社区的支撑所以会讲一下community的一些事儿好,那我们先看一下overware吧经过这个Harbor已经经过两三年的这么发展吧目前已经有相当规模的功能了那我今天就是通过四个方面来展示一下Harbor已经有哪些功能第一个,从fondamental的角度来说Harbor现在除了能管理这个amd之外我们现在也能支持就是对chart的一个management也就是说我们即使amd registry也是chart repository那同时呢通过一些基于Harbor是基于原生的documentary所以从那个documentary也继承了一些原生的能力包括multiple storage backend然后呢我们也可以支持multiple consumer就不同的client那还有的就是说我们有undead integration也就是说可以通过集成你的aldepad然后集成oidc来完成你的authentication或authentication然后呢我们也提供了就是比较强调的management portal让方便大家去做一些日常的management和运为的能力当然也提供标准的resa api以便大家在和自己系统做集成的时候更容易一些那其实我们也有一个commonline但是这个不是我们官方就是官方社区来支持的是一个社区的contributor他来实现的基本上大部分已经能支持很多这个命令在依然可能版本没有harbor本身版本跟眼镜的这么快目前应该停留在之前的版本上那从房地面头之外的话从operation的角度来看啊我还是先讲一下那个security这个比较大家比较关心那因为在企业级应用场景里边security是一个非常重要的一个fox所以从harbor的角度来说目前我们其实也提供了很多security相关的这种feature一个就是大家比较熟悉的vulabetic scanning就是关于镜像漏洞扫描这个我们是基于clare这么做的就是可以帮助大家扫描在harbor里边的镜像提供相当的相关的这个summary以及cve的一个list当然我们也有content trustg notary这样的话帮你镜像签名以保证你的镜像来源可靠好吧然后呢我们harbor本身也有name space isolation就是每个东西可以通过project来做一个更高级别安全隔离然后呢可以设置一些distribution policy这个distribution policy就是当你在分发你的镜像的时候是可以设置一些安全策略目前比较支持比较致命的就是说你可以只分发你签过名的就是content trustenable的featureimage如果没有content trust的就是可以被阻止的另外一个就是vulabetic你可以设置说只有比如说只有d级别的这个vulabetic才可以被分发下去也就是说如果有一些media或稍微高一点的严重性的vulabetic的话它就可以被阻止分发然后呢我们也提供了这个arbackgrback的access control的这么一个机制可以通过不同的角色来管控来赋予它不同的这个能力当然我们也有for auditor就是有accelerlog就每一个相关重要的push的都会被记录在案那通过operation的角度来说一个比较强大的功能是content replication也就是说我们可以把harbor里边的东西replicate到另外一个harbor实例那在一会会谈到在最新的1.8.release里边就是从harbor可以到其他non-harbor的register支持这种amid replication并且是双向的也就是说从当前到远端也可以从远端拉过来这是一个比较大的更新另外一个就是online GC这个很重要就是说当我们运行一段时间之后会有像tag的一些等于就是dirty的一些deter然后我们可以直接通过online的gis而不是复杂的命令就可以完成整个gabbage collection这么一个过程那另外我们也增强了这个hars-check就是提供hars-check API提供通过这个APA你可以获取整个harbor的健康状态并且每一个阻碟的健康状态也会被在这里边返回这样的话便可以合影你的monit平台做集成那另外一个是重要的对CICD的支持就是robot account那这样的话以后你不需要用你自己的root account而是创建一个robot account在你的CICD排名来来去使用那另外一个depriment那目前我们支持depriment有两种重要的形式一个是for这个纯粹的darkerdarker environment的话是有offline和onlineoffline就是说所有的package已经被打好包了所有amd都在这个里边online的话就是说amd是通过一些专制纸来铺下来的那另外一个就是我们支持harbor chartfor Kubernetes的环境如果你像不harbor到kubernetes上可以用这个chart这个chart是可以支持HA方案的当然这个hsa方案目前有些limitation就是你需要准备好你的pcchart clusterharbor chart is a cluster当然我们也在持续改进那更多的话就是想谈一下tabicose scenario for harbor就说其实我们harbor会用在什么地方呢我今天就是想给大家解释一下就是我们一些典型的场景就是说大家可以看到这里边有在你的CICD排名当你提供了submit你的code的时候你自然会触发你的一个ca那其实这个ca的话因为我们还有很多比如说deva的然后curry的stigian的它可以有多个register当我deva开发完之后bube出来之后我可以放在deva里的然后通过replication到curry去完成它的测试curry完成之后再replicate到stigian上去当然这个可以是不同的harbor instance来完成但是也可以用一个harbor instance的不同的project来完成那当我在所有的这些东西transfer这个状态之后的话我就可以把它publish到我的一个unpermence的一个我的top的一个harbor里边以作为一个部署的candidate这个时候我通过我的build engine去触发一个cd比如说一边我触发一个harm install或其他类似相关的这么一个命令来开始去deploy它这个时候的话我可以通过我这边的unpermence node把它replicate到我对应的这么不同register的节点上的register这样的话有什么好处的就我在不同register里边的round time去装的时候我可以就近去从我就近的这么一个register里边去铺这样的话可以节省很多时间也节省跨register的一些一些traffic一些可能不稳定的一些网络的情况出现其实这就是一个非常典型的就是左边就是当我们在cscd就在development的阶段的时候是一个非常典型的这个imagefollow的一个流程然后呢另外一个比较典型当我在cd在deploy的时候我可以通过我内网的unpermence node到我官网的其他的register node上去把这个内容传达给他们然后和round timeround time就近去做而不需要去连我其他的这是cover的我们一些比较典型的这么一个场景那我再快速过一下architecture吧其实这就是比较纯粹的技术了就说目前的话我们分了这几个方面一个consumer的话consumer大家可以看到是不同的collector我会支持的当然这里边有一个所有红杠线的都是我们自己的比如web portal这是刚才说了给大家提供我强调的基于web界面的这么一个管理的一个能力那么进入核心块的话就fundament service的话我们是通过ngx完成API routing之后进入我们的rest API这个层面这个是我们由bgo来支持的那在这个核心里边我们会有authentication和authentication模块这个模块可以连接adl-dev或oidc来完成authentication和authentication然后我们有核心的configurationmanagement就是以前我们有个adm-sour来管理我们harper整个system和user settings一个专门的一个服务那在1.8里边我们remove了这个时候configurationmanagement这个服务就进入了我们的car然后我们的name space就project的管理也会在这里边包括我们的replication chartservice scanner和trust handler的一些integration的东西都会通过这儿来完成都会在Card里边完成那因为像chart service scanner和trust handler我们还有一些real-onunderground的一些底层的framework像所以这边会有第三方的一些service比如到口览览水就是原生的到口览览水来提供一些真正amd一些存储的机制然后chart name name我们是用来存储chart然后client用来扫名notary是用来签名的那可以知道就是notary应该也是css项目chart name name也是css项目那在之下的话我们还有一些supporter的基本的能力就是chart service是一个提供异步执行并发大并发的一个task就是工作对列然后我们还有个gc controller是用来完成online gc的机制的当然还有logs我们可以把logstool到output到相关的system兼容的syslog兼容的这么就是系统里边去那之下的话会有些底层的这些我们用redis做一些cache我们用logs storage然后saker db来做我们的metadata的存储这边的话我们package刚才说了我们会有两种这种支持好那这是刚才的整个overall那现在我邀请一下我们的maintenor文开给大家介绍一下1.8一些highlights和1.9的一些新的feature谢谢大家我下面给大家简单介绍一下这个habl 1.8里面一些新推出的featurehabl 1.8.0在那个5月21号在巴塞罗纳的库布康上宣布ga然后最近我们出了一个最新的release1.8.1然后fix了几个一支的bug然后如果大家有需要的话可以试用这些最新的1.8.1然后后面是几个1.8的最新的feature第一个是replicationreplication可以用来在不同的registry仓库之间同步进向这个在1.8之前我们支持但是在1.8.0这个版本中我们对这个功能做了很大的成构在代码上有85%的code基本上都进行了程序然后功能上也做了很大的加强主要包括三个方面第一个是我们我们之前是只支持那个同步进向的在1.8里面我们支持了chart就是你可以同步进向或者同步chart的或者是两者同时同步然后第二个是说我们支持了harbor在以前的版本中是harbor只允许harbor和harbor实力之间进行同步的在1.8.0里面我们支持了harbor向fearharbor的仓库之间进行同步然后我们已经实现的这个driver现在有三种第一种是darkhub第二种是darker registry第三种是华为的registry其中darker registry它是完全兼容darker它是darker v2api的一种实现所以说如果现在已有的进行仓库它实现了这个v2api其实它是可以用这个driver去做一些replication的工作的然后我们在之后会deliver一些更多的driver的实现包括yamlshun的ecrGoogle的ecr还有vrm arer的ecr包括arid registry然后这个对不同registry实现我们是采用了一种非常灵活的可扩展的架构来实现的如果大家有什么需要实现除了这几种之外的其他driver可以通过实现我们自己定义的一种一个接口是包含几个很简单的方法就可以融入到整套的这个框架中然后实现这个像不同的registry实力同步的这种功能然后第二个比较大的fature是oidc现在其实很多很多公司它都有自己的这个身份认证系统我们之前是支持haber和ad oradepth进行继承的然后在1.8里面我们新加了和这种oidc provider进行继承然后进行认证的这种工作这个实现是完全遵循OpenID的这个spec的所以说理论上如果以oid provider它实现它是按照这个spec来实现的它可以无缝的和haber进行继承然后在使用的时候用户管理员新闻管理员在安装haber的时候配置一些选择认证的类型为oidc然后配置一些必须的信息之后用户就可以在外部在外部UI上实现这个sso但是对于docker client或者是HarmChart client它本身是没有能力处理redirect或者sso的这种流程的所以我们是提供了一种CRI secret的这种方式来帮助这些client来和oidc系统进行认证然后haber内部会处理这个CRI secret和oidc token之间的关系然后我们目前已经验证过的可以和我们haberwok的provider有这么几种一个是google的identity还有第二个是dex第三个是pinfederate这个是我们的中央用户帮我们验证过的然后之后我们会增加更多的provider支持像这kclock或者是其他的然后还有一些新的其他的feature刚才可能有些已经介绍过了第一个是robocount用户可以创建robocount并同时附业它不同的比如pubu是im的权限然后来更好的和cicd系统集成然后第二个是housecheck它提供了一个统一的API然后可以用来监控整个haber系统的这个状态第三个是我们对这个部署的脚本进行了一些重购然后配置文件有以前的简单的kvalue形式现在变成了那种压力格式它可以更丰富的表达这种节目化的数据我们还移除了之前的一个组建叫做mincelware之前拥有的管理配置的功能放在了couch中然后最后一个是我们集成了API Power这个是用户可以在haber的portal上去通过UI的这种方式去call一下haberAPI就方便d8个或者是使用这个haber的这个API然后下面给大家简单说一下我们1.9将会releasedeliver的一些feature我们我们的初步计划是1.9会在8月出fc然后接的时间是在8月底主要的feature有下面四项第一个是quater per project可能很多某些时候我们会有这种需求就是我们想限制某一个project下image或者chart的quater我们在1.9里面会有提供两个matrix第一个是数目就是image或者chart的数目我们比如这个project只允许有1000个image超过之后这个就不能我就继续往上铺试了第二个matrix是size就是我只允许比如100G或者是更多的再多之后允许那个push然后第二个功能是webhook这个我认为是和ci-cd系统集成非常重要的一个featureharbor系统内部会有很多的event产生包括pro-pushdelete-image或者chart包括扫描镜像扫描那个镜像它的扫描结果它这个镜像是否含有漏洞包括replication这些信息然后通过webhook这种机制我们可以通知到比如和harbor系统集成的其他的一些系统然后方便整个webhook flow的串联第三个是retention policy当我们harbor比如和ci-cd系统集成我们每天可能会产生非常多的镜像然后有很多镜像可能是我们之后都不会用到的但是它却占据了大量的存储大量的资源所以我们想有一种自动的方式可以把这些无用的image清除掉这个retention policy就是这么一个feature然后它用户可以定义policy来定义自己想要保留的那些那些镜像比如我想保留最近一个月push的镜像就类似于这样的policy然后其余不符合条件都会被自动给清理掉最后一个是CVEY list这个刚才那个Steven已经讲到就是我们是允许用户定义策略如果发现这个镜像有一些漏洞的话我们是不允许用户去pull的但是可能某些情况下我们发现其中某一条CVEY这个漏洞信息我们是可以让它过的我们就通过这种版本的机制来实现这个功能大概就是这些然后后面请Steven继续给大家介绍这个route map好 谢谢你们然后我们先给你一会儿再问个问题吧然后再更远的话我们看到1.9了1.9有直达配置所以应该很多都是设计用户和期待的那我们再往更远的看一看在未来户9的未来我们还要做什么呢这个是从两个角为多一个是从管理性一个是从破产性那从管理性来说从管理性来说第一个我们想设计的是Corporate Operator就说通过operator来deploy harbour这么一个因为operator现在也比较popular嘛所以我们也会再考虑在未来是否提供harper operator一个说刚才是Quarter Poor Project从未来的话我们可能会提供更完善的quarter的机制包括从C这么级别或者说刚才只谈到Storage Sight和Charge Number或Amy Number这些比较简单的这么一个metrics将来会有更多的max出现那另外一个就是Advanced Access Control那现在 harbour是基于arback这么一个机制来做access control在未来的话可能我们有更完善基于比如说面向资源的或abc等等更高级的access control来实现更精细化的控制然后另外一个是Login Interpol之前的话我们的Sight Log可能会透到固定的地方之后我们会提供一些configure的机制让它透到用户配置的相关的地方另外一个我们也会开始去看performance和sigability也就是说我们会做一些verification或testing来发现我们的performance的薄热的地方会做针对性的做一些提升以及我们的sigability在这个角度来说第一个是HA其实大家如果用过harbor知道在harbor的charta里边是可以支持HA不属模式的但是刚才我已经谈到了其实现在的有个limitation就是在使用它之前你必须准备好你的HA的pcker和HA的redis在未来的话我们会提供一个tutu package就是一个完整的single简单的simple一个HA方案便于大家setupHA的harbor另外一个就是说我们的security增强一个方向就是说目前我们是基于clear做扫描可能在易界还有更多更fancy的一些scannerng所以我们未来会提供plugablescanner便于大家集成或者连接对应的不同的scanner来提供这么扫描服务当然还有一些complex checking等等其他的这些有助于提升安全的一些服务都会被集成进来另外一个就是proxycash这个可能有很多人所以这个我们也放在roadmap里边就是将来我们可以提供proxycash这种机制如果在harbor也没有发现我们从upstreamregister去把它铺下来另外一个是p2pdistribution这个就是说当我们在largescanner runtimedistribution的时候会对register造成很大的这种压力所以通过p2pdistribution可以在某种程度上某种意义上可以reduce一些workload到register的一些workload而且能提升就是在largescanner的时候可能比较有用那么目前我们已经开展了一些前期的一些groundwork而且这个distribution这个机制应该是由整个社区一起来完成另外一个就是reposterbeyond image和harm目前我们是image registry我们也是chargerreposter那在未来我们可能会提供更多的clonative content的一个统一的机制像snap operator大家在同样的user experience可以管理不同的clonative content所以未来我们的目标是clonative artifact registry好 这是我们的runemap一个成功的OSS project离不开社区的支持所以我们想在这儿谈一下harbor的community那harbor的community的话我们的go和mission在这儿也就列出来了就是我们是致力于build的一个什么样的一个开放的一个公平的并且是自制的社区也就是说这就是我们一直致力于推进harbor社区也就是也incourage更多的相关的就是对cloud artifact registry感兴趣的这么一些同行同学们都可以加入目前的话在github上其实我们已经超过8200个星了这个也印证了我们harbor是open然后fair也是受大家欢迎了好虽然harbor项目本身源自于中国然后但实际上目前已经冲出了中国走向世界了其实harbor项目本身已经是一个global country maintenance的一个项目大家可以看到我们的contribute其实已经来自于基本上我们126个来自于65个公司然后基本上36个国家分布在全球各地然后我们目前有14个regular maintenance大体应该来自于5家公司分布在中国和北美那么在未来我们会有更多更广泛的这些contribute和maintenance加入也许就是在座的某些各位好刚才也说了我们的目标和mission至于构建开放透明公平并且自治所以我们这边会encourage大家来加入harbor社区来共同推动harbor项目不断的向前发展那这有几种不同的这么参与方式一个就是说作为end user也就是说我们直接使用harbor在自己的系统里面支持自家的这个研发或者说把harbor wrap在自家的产品里面deliver给你们的客户那这个时候我们是希望就是说你们有问题可以在github和harbor社区的同行们做交流然后呢如果有一些好的experience sharing希望大家就是把它summary出来然后和整个社区分享也许你们的experience会对其他受其他问题困扰的其他的community member会产生一些更好的这么一个影响另外一个就是说我们有百威克力的regularcommunity meeting那欢迎大家在参会去问一些问题去讨论一些问题另外一个就是说如果做一个deliver你想做一些贡献对参与到开源项目来的话那就是可以做一个contributor方式那你可以通过越读contributing guide来了解如何去开展你的第一个commit当然我们鼓励从一个start point最佳的start point从fakes一些bug来开始来了解整个deliver的这么一个flow那如果你想做introduce就是引入一些更好的功能或者说去对harbor的某些不太好的地方不热的地方做一些change的话我们你可以follow这么一个document来提你的proposal那这个就是对harbor做一些big change或者说introduce一个新的feature进来那我们也鼓励你参与这个community mission来去share你的idea去向整个社区推荐你的idea这就是作为contributor参加community mission的一个方式方法另外一个说你想往前更进一步的话成为项目的maintenance的话那你就可以再贡献了很多commitments就是贡献了相关的比如说一个significate一个feature的时候那就可以作为我们的maintenancecandidate那作为maintenance的话你可能需要承担一些项外的respectability比如要review一些pr然后对项目未来的发展对项目下一阶段要deliver的这个plan要有一些comment要有一些贡献就是release plan需要你review需要你贡献另外一个你可能会代表项目代表社区去在相关的会议上做一些prejudication比如像我们一样然后呢当然作为每天你可能需要host一些community meeting来展示对吧和社区做更多的交流那在简单的提一下就是说在社区里边其实我们还有一个workgroup大家知道在commonities里边它有一些sag然后有一些sag下面可能会有些workgroup其实workgroup是一个很好的将来自于公司不同团队的对某一个topic有相同兴趣的这些developer可以聚集在一个virtual teamteam里面共同来完成一件事情那所以在harper里边我们也set up一些workgroupreplication是我们第一个workgroup那replication是来自于五家公司的不同的同事在1.8里边经历合作就是做了一个replication refactor我们成功deliverreplication ng看到功能比以前要强大得多这是来自于市区的力量那另外一个就是说刚刚建立的我们一个scanning我刚才也提了我们会提升我们的security service的一些能力所以会有一个scanning这么一个workgroup建立它第一个focus的topic就是提供一个plugablescanner这么一个framework来让harper可以对接不同的security以后忘了business scanning的产品那这个scanning是由美国的一个是anker一个是acore这两家都是做安全方面非常有经验的公司来set up那我想在不远的未来大家可以看到这个workgroup的一些成果另外的话还有更多的一个是notification大家说了我们webhawk的deliver也是由其他的公司几个通力合作还有left circle management就是刚才提到的第一个topic就是tag retation另外还有ptp distribution这个可能是一个更广泛的一个workgroup大家对ptp可能比较感兴趣的很多同行都已经在加入在里边好还有更多的方式和社区项目做沟通那就是如果你有什么问题疑问或者有些新的fature或者有些新的requirement或者需要和我们做一些和社区每天的项目每天的做一些讨论的话我们是非常欢迎的大家可以通过邮件组可以通过slack可以通过我们的推特都可以然后呢我们是鼓励大家如果自己有想法有内容或者有好的idea或者有些好的experience愿意去分享的话可以关注一下我们的社区会议另外有话我们在公园上搭了一个这么一个demo如果大家有兴趣想去尝试一下harper的话可以直接通过这个demo环境去做尝试好这是今天的主要的内容对我们的内容已经讲完了那现在是个问答时间大家有什么问题可以问看1.800元的那个同步作业增强对你好我想问一下这个因为我们公司里面有一个小团队在使用这个harper我们目前大部分的那个环境里面版本是1.6版本我们也看到这个1.8版本的升级然后对那个仓库的同步在这个同步做了一些增强对我想因为我们在升级过程中不一定能够把所有的环境都能够同步升级到1.8所以当我们某个环境升到1.8以后那个原税的同步它能够那个和1.6之间这样子你说是不同版本的harper之间的replication对嗯某种意义上说没有什么大问题但也有可能会遇到问题我们不能guarantee就说从因为毕竟是两个不同的架构两个不同的实现但是我们还是1.6.6.8应该是我们还是follow了v2的这么一个接口所以从从某种技术角度来说不应该有问题但是也有可能那我们做一下测试对 你可以试一下好我有第二个问题就是我看到你有后面那个opdrd里面有对着qlog的支持有这个计划是吧对什么支持keyclock对keyclock那个有具体的说1.9吗还是说目前不在1.9只是说未来会支持就是说对这个来说就是我刚刚说pdc的实现我们是follow了opdrdspec所以如果你的addit provider你是follow了那个spec从某种意义上它是一样的它应该是能通的但是我们没有做验证我们验证过了我们会在那里所以我们会在这里倡议大家如果大家用了不同的addit provider大家可以尝试着按照我们的一个guide去配一下它有可能会通通的话就可以给我们一个消息这个东西不是说很多时候是要去做reprecation的工作去验证就是说如果它不是标准open idspec支持的我们是我们自己是不支持的那我们自己验证以后到时候给社区对对对刚才看到的第三个p federate就是我们的社区用户中端用户自己验证的它验证完之后说ok然后我们就可以把它列在这告诉大家对对对管理的平台还有问题吗你好谢谢你的分享然后最开始的时候你提到了多环境的管理既可以用每个环境有一个hubber也可以一个hubber多个project那您建议是怎么玩呢这个其实没什么所谓建议什么Depend on你们自己环境的规模因为通过project本身如果能达到那个规模或者说便宜管理的话是可以的但是如果说比如说你这团队本身就很大的话你可能set up一个独立的hubber instance那可能是一个better practice但是就是说同一个不同的项目依然能达到相同的效果就相同的目的都是ok的主要还是看你的规模看你自己环境用用的一些需求明白这个没有没有一致的谢谢还有问题吗一分钟首先我是刚用hubber然后觉得特别好用然后就是说谢谢现在是hubber也是非粗发展的后边会有一些瘦身的计划吗因为觉得有点重瘦身你是重在哪呢因为scanning和content truss是option你可以不装选装根据get hub手册装然后是觉得组件比较多后边会不会组件会越来越多这是个怎么说呢因为就是说如果micro service它会有更多的对吧但是你觉得micro service可能有太多组件反而又不便于你你想来一个one container是吧单一容器或单一节点这种方式好我说这个比较难回答应该没有特别的受伸计划目前还是按照这个规模往前走吧好的你也可以考虑自己可以build如果你想把它缩减的话因为我们是开源的所有东西都在上面相关的build其实你还可以参考你可以把它build成更轻量化的东西好的谢谢先下吧它那个时间到了