VMWare Harbor 在 Kubernetes 上的部署_Kubernetes中文社群
VMWare 家的 Harbor 是我目前能免費得到的最好的私庫管理工具了,除了解決了基礎的映象儲存、許可權控制這些基礎能力之外,還具備 對 DevOps 非常有幫助的映象同步功能。
原本這一產品只提供了基於 Docker Composer 的部署方法,後由社群為其新增了 Kubernetes 的部署支援。本文大部分基於官方文件而來。
部署過程大概分這樣幾個步驟:
- 環境準備
- 配置
- 執行
環境準備
- 首先是需要有一個正常執行的 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 叢集上執行起來了。接下來就可以按照網上的其他教程,來進行進一步的配置和應用了。