ACR 是阿里云容器镜像服务,是一个免费的Docker容器镜像托管服务,ACR对比国外的Docker Hub有更好的镜像拉取性能,对比完全自建的Horbar镜像仓库,免运维、且更容易和其他阿里云的服务进行集成。
ACR EE是ACR的企业收费版,对比免费版提供可赔付的SLA协议,并拥有更强的安全保障和全球分发能力,ACR EE根据功能不同有基础版、标准版、高级版三个版本可以选择。其中基础版的ACR EE对比免费版ACR主要有如下提升:
- 支持Helm Chart、Chart相当于k8s下的软件包,helm是管理Chart的工具,只有企业版的ACR 才支持对Chart的推送和拉取。
- 网络访问控制、默认情况下ACR EE不提供对公网的访问,可以手工打开公网入口并支持通过ACL进行细粒度的访问控制。
- 操作审计、就是在阿里云的操作审计系统(ActionTrail)中记录对镜像仓库的各种操作,操作审计看起来是没什么用,但假如没有操作审计的话,某天哪个毛头小子上来一通乱搞……,你也不知道是谁弄的。
标准版对比基础版又增加了这些功能:
- 大规模分发、当业务出现突发高峰需要紧急扩容时,大量的节点同时从镜像仓库拉取镜像难免出现瓶颈,通过该功能可通过P2P的方式快速分发镜像。
- 全球同步、对于有海外业务的企业来说,跨境进行镜像同步一直是一个痛苦的过程,通过该功能可以通过阿里云的内网专线进行镜像的同步而无需绕行缓慢的公共线路,再看看跨境带宽的价格,这个功能真香。
高级版对比标准版的差别主要在于云原生应用交付链的支持。通过以下问题可以更容易理解这个功能的意义:
- 什么是云原生应用交付链?交付链就是一个操作链条,通过该链条可以整合镜像构建、扫描、加签、全球同步分发等任务,可以通过创建规则让这些任务自动执行。
- 为什么要整合这些任务?不整合的话,每次构建完了就人工上来整合吧。
- 交付链整合的高频操作有哪些?镜像扫描可以发现一些镜像内部的安全漏洞,虽然免费的ACR也支持镜像扫描,但你应该更需要自动的镜像扫描;镜像加签功能可以通过加密签名保障镜像在分发过程中不被篡改,避免非法镜像的更新和运行,虽然ACR EE 基础版也支持镜像签名,但我猜你更需要每次推送后自动进行加签操作。
基于上面这些信息,我的建议是:
对于哪怕是最小的企业,基于可用性和安全的角度都应用选择ACR EE,哪怕是ACR EE 基础版。大多数情况下,ACR EE的高级版都是不二的选择,除非准备手工 DevOps,至于大规模分发和全球同步,就当是赠送的吧。