题图摄于加州蒙特雷港口
注:微信公众号不按照时间排序,请关注公众号“亨利笔记”,并加星标以置顶,以免错过更新。
(本文原文来自CNCF博客,作者为 Harbor 开源项目维护者邹佳,略有删改。)
Harbor 云原生制品仓库是首个中国原创的 CNCF 毕业级开源项目,在国内用户的生产系统中的使用率高达47%。Harbor 项目在6月正式发布了 Operator 1.0.0,对广大用户运维 Harbor 系统是一大福音。
Operator 是打包、部署和管理 Kubernetes 应用程序的一种方法。应用程序一般部署在 Kubernetes 上,可使用 Kubernetes API 和 kubectl 工具进行管理。Harbor Operator 允许用户更好地管理Harbor在 Kubernetes 中的整个生命周期,提升部署和运维能力。
Harbor Operator提供了可深度定制的能力,用户通过配置顶级 CRD HarborCluster,根据实际需要定义和配置自己的 Harbor 组件。下图显示了 Harbor Operator的整体架构。
一个 HarborCluster CR 可以包含多个子CR,其中包括代表核心组件的 CR Harbor以及相关服务(如 PostgreSQL 数据库、Redis 缓存和后端存储等)。有几种方法可以配置符合需求的 Harbor 的环境。
如果用户已经安装了一些外部的服务,那么Harbor 可以通过简单地设置来使用这些后端存储服务,具体来说,就是配置 imageChartStorage 规范、数据库服务的数据库规范和缓存服务的 redis 规范即可。
如果希望让 Harbor Operator 将相关的依赖服务和 Harbor 组件一起部署到 Kubernetes 集群中,只需要通过设置后端存储服务的 inClusterStorage 规范、数据库服务的 inClusterDatabase 规范和缓存服务的 inClusterCache 规范来声明相关需求。
目前默认的集群存储服务是 Minio,默认集群数据库是 zalando postgreSQL,默认集群缓存是 spotahome redis。Harbor 团队的计划是在将来验证其他第 3 方运营商并添加到 Harbor Operator 中。
为了通过 operator 成功部署 Harbor,用户需要在 HarborCluster CR 规范中配置和启用集群内服务之前,确保首先部署了相应的底层 operator。Harbor operator 代码库提供了一个多合一的部署清单,用于使用一个命令部署所有底层Operator以及 Harbor operator 本身。有关部署的其他选项,请参阅详细的安装指南。
Harbor仓库由多个服务组件组成。在 Harbor Operator中,每个服务组件都由具有自己的CR和对应的协调(reconciling)控制器,组件协调控制器共享相同的协调流程。每个组件 CR 由上面提到的顶层Harbor CR 拥有和控制。
组件分为两组:核心组件和可选组件。核心组件包括Portal、Core、Jobservice、Registry 和 Registry Controller,它们必须默认安装。Notary(服务器和签名者)、Trivy、Chartmuseum 和 Metrics Exporter 是可选的,可通过在规范中明确配置来添加到 Harbor 部署中。
Harbor Operator利用 cert-manager 项目来生成和管理 Harbor 所需的相关证书。为了暴露相关的访问服务,采用了 ingress (v1beta1)。目前为止, NGINX(默认)、GCE 和 NCP ingress 控制器已经验证完毕。
Harbor Operato r的特点如下:
1. 在部署中提供可深度定制能力(由 HarborCluster CR 提供)
最小化部署:仅配置核心组件,包括 Harbor Core、Registry、Registry Controller、Job Service 和 Web Portal 。
标准部署:在最小化部署的基础上,增加部署可选组件,例如 Notary、Trivy、ChartMuseum 和 Metrics Exporter 。
完全部署:提供数据库(PostgreSQL)、缓存(Redis)、存储(MinIO)等相关依赖服务
2. 支持配置集群外部或集群内部署的依赖服务
3. 支持多种后端存储配置
文件系统:配置为使用 Kubernetes 卷中的目录树的存储驱动程序。
os3:将对象存储在 Amazon S3 存储桶中的驱动程序。
oswift:在 Openstack Swift 中存储对象的驱动程序。
4. 支持更新已部署的Harbor集群
5. 可配置单个组件的副本数量
6. 支持就地升级
7. 删除Harbor集群时删除所有链接的资源
8. 使用 ConfigMap 以声明方式配置 Harbor 系统设置
9. 支持通过ingress暴露的服务(NGINX、GCE、NSX NCP)
Harbor 社区后续工作包括使 Harbor Operator能够使用 Contour 入口控制器 以及验证 OpenShift 平台上的兼容性等。完整的路线图请参考原文:
https://www.cncf.io/blog/2021/06/09/harbor-operator-1-0-is-available-now/
感谢以下Harbor 社区成员对此 Operator 的贡献: @holyhope, @steven-zou, @sguyennet, @jMonsinjon, @mhurtrel, @heww, @bitsf, @wangcanfengxs, @Ghostbaby, @soulseen, @chlins, @XavierDuthil。
《Harbor权威指南》目前京东优惠中,点击下图直接购买。
要想了解云原生、机器学习和区块链等技术原理,请立即长按以下二维码,关注本公众号亨利笔记 ( henglibiji ),以免错过更新。