1. 程式人生 > >VMWare Harbor 在 Kubernetes 上的部署_Kubernetes中文社群

VMWare Harbor 在 Kubernetes 上的部署_Kubernetes中文社群

VMWare 家的 Harbor 是我目前能免費得到的最好的私庫管理工具了,除了解決了基礎的映象儲存、許可權控制這些基礎能力之外,還具備 對 DevOps 非常有幫助的映象同步功能

原本這一產品只提供了基於 Docker Composer 的部署方法,後由社群為其新增了 Kubernetes 的部署支援。本文大部分基於官方文件而來。

部署過程大概分這樣幾個步驟:

  1. 環境準備
  2. 配置
  3. 執行

環境準備

  • 首先是需要有一個正常執行的 Kubernetes 環境,需要提供對持久卷和 Config Map 的支援,沒記錯的話應該是 1.2。
  • 下文需要執行的指令碼需要 Python 2.6 的支援。

映象獲取和上傳

https://github.com/vmware/harbor/releases可以找到離線版本的二進位制檔案包。

目前的版本是harbor-offline-installer-0.5.0.tgz,解壓之後其中包含一個harbor.0.5.0.tgz的映象包,使用docker load -i harbor.0.5.0.tgz命令裝入後,再用docker images列表檢視,會看到以下幾個映象:

  • vmware/harbor-log:0.5.0:Harbor 日誌服務
  • vmware/harbor-jobservice:0.5.0:Harbor 核心
  • vmware/harbor-ui:0.5.0:Harbor 介面
  • vmware/harbor-db:0.5.0:資料庫,其實是個 MySQL,附帶了初始化指令碼。

另外還需要獲取 Registry 2.x 和 Nginx 的映象。

接下來就需要把這幾個映象進行tag/push操作,推送到 Kubernetes 的私庫。

git clone https://github.com/vmware/harbor.git 獲得原始碼,其中的make資料夾包含我們需要的 Kubernetes Yaml 檔案和相關的支援檔案。

生成配置檔案

實際上這一過程之前首先要編輯 make 目錄下的 harbor.cfg 檔案,來完成一些個性配置。

進入原始碼的make/kubernetes目錄,python prepare

執行指令碼之後,利用git status命令可以看到,生成了幾個新的*.cm.*檔案,其中包含了各個元件的 Config Map 內容。

配置

持久卷(PV)

這裡利用持久卷 (pv/pvc) 的方式來配置各個元件的儲存。
根據叢集的儲存環境(例如 ceph/glusterfs 等)和容量需求,對每個檔案分別進行持久卷型別和容量的修改。
修改完畢之後,利用kubectl apply -f pv命令建立這些 PV 和 PVC 物件。

資料庫(MySQL)

  • rc 檔案:修改 image 行,把映象指向之前的 harbor-db 在私庫中的地址。
  • svc 檔案:一般無需修改,為除錯方便,可以更改服務型別暴露 MySQL 埠。
  • cm 檔案:MySQL 的 root 密碼。

存檔,執行。

私庫(Registry)

  • rc 檔案:只需要修改映象地址。
  • cm 檔案:這裡可以根據實際需要,對涉及到的證書等進行修改。
  • svc 檔案:因為 Habor 將代替 Registry 提供服務,因此無需暴露 Registry 埠。

存檔,執行。

Jobeservice

  • rc 檔案:映象地址。
  • cm 檔案:這裡有一些核心配置,例如 MySQL 連線資訊,私庫地址等,只是玩玩的話可以不用修改。

存檔,執行。

UI

  • rc 檔案:映象地址。
  • cm 檔案:此處的配置主要是 LDAP、MySQL 和認證方面的修改。如果之前修改過資料庫密碼,或者有自己的證書,都可以在這裡進行修改。

存檔執行。

Nginx

負責反向代理 UI 元件。

  • rc 檔案:指向我們 PUSH 到私庫的 Nginx 地址。
  • cm 檔案:此處需要注意,這裡並沒有提供證書內容,因此有兩個選擇:
    • 禁用 https 訪問
    • 或者自行提供證書。
  • svc 檔案:根據實際需要設定

執行。

尾聲

至此,Harbor 就在 Kubernetes 叢集上執行起來了。接下來就可以按照網上的其他教程,來進行進一步的配置和應用了。