使用 Harbor 作为 Rainbond 默认容器镜像仓库,扩展 Rainbond 镜像管理能力
Rainbond 是一体化的云原生应用管理平台,它提供“以应用为中心”的抽象,使用者不需要学习 K8s 和容器,平台将 K8s 和容器封装在内部,这种封装方式能极大提高使用的易用性和安装的便利性,但封装的内部组件如何替换是一个问题,本文将讲解如何使用 Harbor 替换掉 Rainbond 原有的默认镜像仓库。
Harbor 简介
Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,也是首个中国原创的云原生基金会(CNCF)的开源企业级 DockerRegistry 项目,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。
通 Harbor 解决 Rainbond 镜像管理问题
Rainbond 之前默认使用的是 Docker 提供的基础 Registry,使用的过程中有很多问题,例如镜像安全性,镜像清理复杂麻烦等等问题,经过不断的调研,而 Harbor 不仅能解决这些问题,还能扩充很多镜像管理能力,Harbor 的功能主要包括四大类:多用户的管控(基于角色访问控制和项目隔离)、镜像管理策略(存储配额、制品保留、漏洞扫描、来源签名、不可变制品、垃圾回收等)、安全与合规(身份认证、扫描和 CVE 例外规则等)和互操作性(Webhook、内容远程复制、可插拔扫描器、REST API、机器人账号等)。
对接 Harbor
目前 harbor 支持两种形式对接 Rainbond,一种是作为 rainbond 内部基础存储仓库,另外一种就是作为外部自定义镜像仓库。
Harbor 作为 Rainbond 内部基础存储仓库,进行对接非常简单,只需要在初始化平台集群的时候进行自定义即可。
Yaml 文件的格式要求非常严格,避免大家在配置的时候出现问题,已把正确的 yaml 文件放在下面,复制就可以使用。
**注意:**一定修改仓库的名字,仓库的项目名称, 用户名,以及密码,不然会出现镜像上传失败的问题。
Harbor 作为 rainbond 的外部仓库进行提供服务,是基于 harbor 以及 rainbond 的 webhook 功能,配置如下。
保证组件已经开启了镜像仓库的 webhook 功能,且应用状态不是已关闭状态,并且需要将应用的 webhooks url 配置到目标镜像仓库的 webhooks 中
目标镜像仓库里面,新建一个 webhook,然后在 Endpoint 地址填写应用的 webhooks url,配置符合需求的触发事件类型即可
通过 Harbor 实现镜像可视化存储管理,提高了工作的便利性。
基于 Rainbond 进行构建的时候实现漏洞自动扫描,提高了安全管理。
通过镜像自动清理的策略,合理利用存储,降低存储成本。
推荐使用策略:应用到仓库匹配**, 保留最近推送的 3 个 artifacts 基于条件 tags 匹配**基于条件 无 Tag
推荐定时清理:自定义 cron : 0 0 0 1 */1 * (秒,分,时,日,月,周)
镜像是否被签名,漏洞的等级,也可以设置成为镜像安全策略之一,这样可以保证签名过的镜像或者漏洞等级低的镜像才可以被拉取。
整合后的整体流程
通过上面流程图可以看到,整个搭载配置的过程,用户可以自定义镜像源进行拉取镜像,经过 Rainbond 平台自动推送到 Harbor 镜像仓库里面,然后等镜像扫描完成以后在进行自动拉取,自动进行构建容器实例。
Rainbond 是完全开源的企业级,面向应用的云原生 DevOps, 开发、测试、生产运维一体化平台,不要求开发者掌握容器、Kubernetes 等复杂能力,面向开发者友好;提供从源码或简单镜像持续构建云原生应用的能力,对源码无侵入,业务持续发布到云端;高效的自动化运维,帮助开发者高效管理高可用的、安全的且去中心化的业务系统。
版权声明: 本文为 InfoQ 作者【Rex】的原创文章。
原文链接:【http://xie.infoq.cn/article/9ae9dcd214f66e191b74aa4dd】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论