作为云原生应用的必备组件, Harbor 已经在多个开源项目中得到集成和应用,本文介绍 Harbor 在联邦学习开源项目 FATE 及 KubeFATE 中的应用。
FATE (Federated AI Technology Enabler)是一个工业级的联邦学习框架,由微众银行发起并开源,后捐赠给 Linux 基金会,成为社区共同维护的开源项目。FATE 项目使用 Java 和 Python 等语言开发而成,早期版本在安装、部署时需要下载依赖软件包和进行较长时间的编译。FATE 从 1.1 版本开始,增加了全组件的容器化封装,在部署时无须下载复杂的依赖包和重新编译,使得 FATE 的部署得到了简化。为进一步使用云原生技术来管理、运维联邦学习平台,VMware 和微众银行等社区用户开发了KubeFATE 项目,致力于降低联邦学习的使用门槛和运维成本。
KubeFATE 将 FATE 的部署和配置流程自动化,使联邦学习平台的多个分布式的节点可用 Docker Compose 和 Kubernetes 两种方式部署,并提供了 API 和命令行工具与系统集成。在用户使用 KubeFATE 部署 FATE 平台时,虽然容器化部署方式节约了编译时间,但是遇到了下载镜像的问题。出于镜像较大(GB级别)、互联网网速等原因,国内用户往往不能顺利下载镜像。还有些企业内部的网络环境无法连接互联网,因此不能从 Docker Hub 等公有镜像源拉取镜像。
为了解决镜像下载的问题,KubeFATE 集成了 Harbor 镜像仓库的功能。用户可先在内网中安装 Harbor 服务,再把 KubeFATE 的镜像包和 Helm Chart 导入 Harbor ,在内网中安装和部署 FATE 时,就可以从 Harbor 获取镜像和 Helm Chart。Harbor 还提供了镜像的分发、远程同步和安全漏洞扫描等能力,在加速部署的同时提高了安全性。
在 FATE 版本更新时,用户可以从互联网下载新版本的镜像和 Helm Charts,再将其导入 Harbor 中供内部环境使用。另一方面, Harbor 除了充当本地镜像源,在网络条件允许的情况下(如开通网络防火墙),可通过镜像定时同步策略从 Docker Hub上获取 FATE 的镜像,以保证本地有最新版本的镜像。这样免除了手动导入 FATE 镜像的过程。此外,通过 Harbor 的镜像复制功能,可把镜像在多个数据中心之间进行复制,在遇到镜像的更新或丢失时可自动进行同步,从而简化运维复杂度。(本文为公众号亨利笔记原创文章)
KubeFATE 与 Harbor 集成的架构如下图所示。KubeFATE 以服务的形式运行在 Kubernetes 集群之上,用户可以通过 KubeFATE 命令行工具或者 API 与 KubeFATE 服务进行交互来管理 FATE 集群。完整的FATE集群包含 FATE-Board、 FATE -Flow、Rollsite、Node Manager 和 Cluster Manager 等多个容器,这些容器又分别对应不同的镜像,因此使用 Harbor 作为私有镜像仓库无疑能加速部署。
KubeFATE 使用了 Helm Chart 作为 Kubernetes 资源管理工具,因而能够实现FATE集群的定制化部署、动态扩缩容及在线升级等功能。KubeFATE 项目在公网上维护了一个 Chart 的仓库,该仓库对应 FATE 的不同版本,通过配置 KubeFATE 可在指定的仓库中获取最新的 Chart。(本文为公众号亨利笔记原创文章)
对于需要同时维护多个不同版本的 FATE 集群的用户来说,多个版本 Chart 的管理及同步会带来一定的复杂度。如下图所示,借助 Harbor 对 Chart 管理的能力,可以减轻用户的负担,特别是对于需要定制开发 Chart 的用户来说,只需为每个 KubeFATE 实例指定 Chart 仓库地址为内部的 Harbor ,就能实现在多个不同的 Kubernetes 集群中定制化部署 FATE。
KubeFATE 充分利用了云原生技术的优势,结合了 Harbor 的镜像和 Chart 的管理能力,具有以下优点。
◎免除构建FATE时需要各种依赖包的烦琐流程。
◎提供离线部署的能力,加速应用部署的速度。
◎实现跨平台部署FATE集群。
◎可按需灵活地实现多实例水平扩展。
◎升级实例的版本并进行多版本的维护。