题图摄于犹他州Zion国家公园
(本文发布时,开源镜像仓库Harbor在Github上已获得3043颗星: https://github.com/vmware/harbor )
不久前的 CNUTCon 2017全球运维技术大会上,笔者接受了 InfoQ 的关于容器镜像运维的采访。下面是采访的视频,供大家参考。感谢 InfoQ 录制视频和整理文字,点击“阅读原文”可查看 InfoQ 的原文。欢迎转发给需要的朋友。
问题1: 请谈谈您对高效安全的镜像运维的理解。
答:很多现在做容器的用户,他们很关心的一个问题是怎么样把这个容器的应用跑得好,可能他会想,我是用Kubernetes,还是用Docker Swarm,或者其他的一些技术来跑我的容器应用。
我们觉得这仅仅是在容器运维上面动态的侧面。就是说,把这个运行的平台弄好了之后,还有另外一个侧面就是静态的容器平台,所谓静态的就是这个容器的镜像。通常来说,就是容器除了动态地在内存里面跑的一个容器化的实例之外,它还需要有一个静态的镜像放到存储里。就是说容器动态和静态的结合,才是完整的一个容器平台。所以高效安全的容器镜像的管理,在任何一个企业的运维里面都是非常必要的,应该说,做得好不好,会实际影响到它的效率,以及安全性的一些问题。
问题2: 采用Harbor开源企业级Registry实现高效安全的镜像运维,与其它的Registry项目相比,Harbor有哪些优势?
答:
Harbor这个项目是最早在我们VMware中国研发中心的一个很小的一个副产品,Side Project,这个项目做出来之后,我们在公司内部用了一段时间,觉得效果还不错,去年我们把它开源出来,面向全球的用户让他们去使用,最终效果也非常好。 总结起来,大部分用户对我们 Harbor 项目喜欢的地方,主要有几个:
第一个是说,我们这是开源的一个解决方案,而且是面向企业用户的开源解决方案,用的是 Apache License 2.0,这样的话,基本上谁都可以拿去使用或者修改,没有太多的义务或者约束。 第二点,我们是结合了很多社区里边的反馈信息,提炼出这么一个作品出来,这样使得 Harbor 一诞生的时候,已经非常符合整个用户的需求。 那怎么设计的呢?我们是用了最简单的功能去实现了用户百分之八九十的需求,相对来说它是非常简单的,像用户模型的设计,我们只有一层的设计,其他的 Registry 可能是有很复杂的用户模型,相比起来非常复杂难理解。简单是一个优势。 还有就是我们有些特色的功能,除了标准的 Role-Based Access Control,就是基于角色的访问控制之外,我们还有大家非常喜欢用的 Replication ,就是镜像的复制,是解决了运维中很常见的一类移动镜像问题。传统来说,可能需要用一些脚本,一些软件去做这个事情,我们全部用一个可视化的图形界面去把它有序地管理起来,同时能在出错时自动去重试。有的世界级的银行他们也在用我们的方案,把镜像从一个大洲的数据中心,复制到其他大洲的数据中心里。 第三点,特别对中国用户来说,我们有很多本地化的输入。我们有微信群,那么有几百个用户在给我们提供反馈,所以对我们中国用户来说,可能第一时间可以得到很多适合他们使用需求的定制化功能。而且,我们项目原生支持中文的界面。在容器的项目里面,很少是能原生支持中文的,所以这也是我们广大中国用户非常喜欢 Harbor 的一个原因。
问题3: 在运维环境中,镜像来源验证和镜像漏洞扫描为用户带来哪些价值?HA如何实现?涉及到技术上有哪些难点?
答:
有两个问题在镜像管理工作中是困扰很多企业的,第一个就是说镜像的真实可靠性,或者说镜像来源,因为大家现在知道很多时候你从Docker Hub或者别的地方抓过来的镜像,到底是谁产生的搞不清楚的,或者这个镜像里面有没有带什么漏洞、病毒也不知道,如果冒冒然去使用是个很危险的事情,所以就造成了需要去验证镜像可靠性的需求。
我们使用叫做Content Trust的功能(内容可信任)。主要的原理是,我们在发布镜像时做个签名,这个签名生成的摘要会存在一个 Notary Service 中。其他人去使用这个镜像的时候,先去获取这个摘要,然后再根据 Registry V2 协议 pull by content 的功能去获取镜像。如果是没有签过名的镜像 Registry 是拿不到的,通过这样一种机制,就可以实现这个Content Trust功能。 第二个是镜像扫描,有点像我们平常在电脑上进行病毒扫描,就把全盘的文件扫一遍,发现有没有被病毒感染过的或者有病毒存在的文件。那么在企业跑的镜像里边,这个扫描也是很需要的,就是我的镜像来源可能是不同的地方,那最终到底有没有一些漏洞。我怎么样能发现,需要有一个对镜像里面所有文件进行扫描的功能,然后发现和报警的机制。这部分功能叫做扫描镜像的 vulnerability 的scanning,我们在 Harbor 里集成了CoreOS 的 Clair,可以帮助我们去扫描Harbor里面放的这个镜像。扫描完之后,我们有个很详细的一个报告,会告诉我们这个镜像里面,有多少个Package,这些软件包有多少个是有问题的,严重程度是怎么样的。用户可以决定性地去使用,比如发现严重问题的,我就不允许这个镜像去下载了,如果是很轻微的,可以允许获取镜像。……