使用Harbor作為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內部基礎儲存倉庫,進行對接非常簡單,只需要在初始化平臺叢集的時候進行自定義即可。

使用Harbor作為Rainbond預設容器映象倉庫,擴充套件映象管理能力

​ Yaml檔案的格式要求非常嚴格,避免大家在配置的時候出現問題,已把正確的yaml檔案放在下面,複製就可以使用。

注意:

一定修改倉庫的名字,倉庫的專案名稱, 使用者名稱,以及密碼,不然會出現映象上傳失敗的問題。

例:apiVersion: rainbond。io/v1alpha1kind: RainbondClustermetadata: name: rainbondcluster namespace: rbd-systemspec: imageHub: domain: www。est。com/test password: Harbor12345 username: admin

`

Harbor作為rainbond的外部倉庫進行提供服務,是基於harbor以及rainbond的webhook功能,配置如下。

保證元件已經開啟了映象倉庫的webhook功能,且應用狀態不是已關閉狀態,並且需要將應用的 webhooks url 配置到目標映象倉庫的 webhooks 中

使用Harbor作為Rainbond預設容器映象倉庫,擴充套件映象管理能力

目標映象倉庫裡面,新建一個webhook,然後在 Endpoint 地址填寫應用的 webhooks url,配置符合需求的觸發事件型別即可

使用Harbor作為Rainbond預設容器映象倉庫,擴充套件映象管理能力

透過Harbor實現映象視覺化儲存管理,提高了工作的便利性。

使用Harbor作為Rainbond預設容器映象倉庫,擴充套件映象管理能力

基於Rainbond進行構建的時候實現漏洞自動掃描,提高了安全管理。

使用Harbor作為Rainbond預設容器映象倉庫,擴充套件映象管理能力

透過映象自動清理的策略,合理利用儲存,降低儲存成本。

推薦使用策略:應用到倉庫匹配

, 保留最近推送的3個 artifacts基於條件tags匹配

基於條件 無 Tag

推薦定時清理:自定義 cron : 0 0 0 1 */1 * (秒,分,時,日,月,周)

映象是否被簽名,漏洞的等級,也可以設定成為映象安全策略之一,這樣可以保證簽名過的映象或者漏洞等級低的映象才可以被拉取。

整合後的整體流程

使用Harbor作為Rainbond預設容器映象倉庫,擴充套件映象管理能力

​ 透過上面流程圖可以看到,整個搭載配置的過程,使用者可以自定義映象源進行拉取映象,經過Rainbond平臺自動推送到Harbor映象倉庫裡面,然後等映象掃描完成以後在進行自動拉取,自動進行構建容器例項。

Rainbond

是完全開源的企業級,面向應用的雲原生 DevOps, 開發、測試、生產運維一體化平臺,不要求開發者掌握容器、Kubernetes 等複雜能力,面向開發者友好;提供從原始碼或簡單映象持續構建雲原生應用的能力,對原始碼無侵入,業務持續釋出到雲端;高效的自動化運維,幫助開發者高效管理高可用的、安全的且去中心化的業務系統。