Skip to main content

使用Harbor作为Rainbond默认容器镜像仓库,扩展Rainbond镜像管理能力

· 6 min read
info

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文件放在下面,复制就可以使用。

注意:一定修改仓库的名字,仓库的项目名称, 用户名,以及密码,不然会出现镜像上传失败的问题。

例:
apiVersion: rainbond.io/v1alpha1
kind: RainbondCluster
metadata:
name: rainbondcluster
namespace: rbd-system
spec:
imageHub:
domain: www.est.com/test
password: Harbor12345
username: admin
  • 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镜像仓库里面,然后等镜像扫描完成以后在进行自动拉取,自动进行构建容器实例。