天天看點

使用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内部基礎存儲倉庫,進行對接非常簡單,隻需要在初始化平台叢集的時候進行自定義即可。
使用Harbor作為Rainbond預設容器鏡像倉庫,擴充Rainbond鏡像管理能力

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

注意:一定修改倉庫的名字,倉庫的項目名稱, 使用者名,以及密碼,不然會出現鏡像上傳失敗的問題。

  1. 例:

  2. apiVersion: rainbond.io/v1alpha1

  3. kind: RainbondCluster

  4. metadata:

  5. name: rainbondcluster

  6. namespace: rbd-system

  7. spec:

  8. imageHub:

  9. domain: www.est.com/test

  10. password: Harbor12345

  11. username: admin

`

  • Harbor作為rainbond的外部倉庫進行提供服務,是基于harbor以及rainbond的webhook功能,配置如下。
  • 保證元件已經開啟了鏡像倉庫的webhook功能,且應用狀态不是已關閉狀态,并且需要将應用的 webhooks url 配置到目标鏡像倉庫的 webhooks 中
使用Harbor作為Rainbond預設容器鏡像倉庫,擴充Rainbond鏡像管理能力
  • 目标鏡像倉庫裡面,建立一個webhook,然後在 Endpoint 位址填寫應用的 webhooks url,配置符合需求的觸發事件類型即可
使用Harbor作為Rainbond預設容器鏡像倉庫,擴充Rainbond鏡像管理能力
  • 通過Harbor實作鏡像可視化存儲管理,提高了工作的便利性。
使用Harbor作為Rainbond預設容器鏡像倉庫,擴充Rainbond鏡像管理能力
  • 基于Rainbond進行建構的時候實作漏洞自動掃描,提高了安全管理。
使用Harbor作為Rainbond預設容器鏡像倉庫,擴充Rainbond鏡像管理能力
  • 通過鏡像自動清理的政策,合理利用存儲,降低存儲成本。
  • 推薦使用政策:應用到倉庫比對, 保留最近推送的3個 artifacts基于條件tags比對基于條件 無 Tag
  • 推薦定時清理:自定義 cron : 0 0 0 1 */1 * (秒,分,時,日,月,周)
  • 鏡像是否被簽名,漏洞的等級,也可以設定成為鏡像安全政策之一,這樣可以保證簽名過的鏡像或者漏洞等級低的鏡像才可以被拉取。

整合後的整體流程

使用Harbor作為Rainbond預設容器鏡像倉庫,擴充Rainbond鏡像管理能力

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

Rainbond

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