Helm基于Harbor中存儲的chart快速發(fā)布服務(wù)
概述
??Harbor在v1.6版本開始支持Helm Chart倉庫功能,這樣就可以利用 harbor 同時管理鏡像和 helm charts 了,無需另外部署一套Helm Chart系統(tǒng)。在harbor中,chart倉庫由chartmuseum以插件的方式提供,可以自己選擇安裝或者不安裝。
ChartMuseum:提供了API管理非OCI規(guī)范的Helm Chart。在安裝了ChartMuseum組件后,當用戶使用“helm”命令向Harbor推送或拉取Chart時,Harbor的Core組件會首先收到請求,在校驗后將請求轉(zhuǎn)發(fā)給ChartMuseum進行Chart文件的讀寫。
??隨著兼容OCI規(guī)范的Helm Chart在社區(qū)上被更廣泛地接受,Helm Chart能以Artifact的形式在Harbor中存儲和管理,不再依賴ChartMuseum,因此Harbor會在后續(xù)版本中移除對ChartMuseum的支持。
??雖然被廢棄,但是并不意味著不能用Harbor存儲chart了,而是用 OCI chart替代。
- 從v2.6.0 開始棄用Chartmuseum,并在v2.8.0中開始刪除。更多詳情,請參閱討論:https://github.com/goharbor/harbor/discussions/15057 從 v2.6.0 開始棄用 Notary(簽名者和服務(wù)器),并在 v2.8.0 中開始刪除。更多詳情,請參閱討論:https://github.com/goharbor/harbor/discussions/16612
- Harbor版本必須是1.6+到2.8.0才支持存儲Helm Chart(我這用的是2.6.2);
- 默認新版harbor不會啟用chart repository service,需要在安裝harbor時指定--with-chartmuseum參數(shù);
- 創(chuàng)建項目chartrepo(公有項目);
環(huán)境說明
Harbor版本: 2.6.2Harbor地址:?https://192.168.2.30:443?部署路徑: /app/harbor證書位置:/app/harbor/ssl/
安裝Chartmuseum組件
2.1 修改配置文件
??在absolute_url?參使用ChartMuseum?組件時,客戶端獲取到的Chart的index.yaml?中包含的URL是否為絕對路徑。在不配置該項時,ChartMuseum組件會返回相對路徑,默認為disabled。
enabled表示使用絕對路徑!
2.2 停止Harbor
2.3 注入配置
??執(zhí)行./prepare將新的配置注入到各個組件中。
2.4 安裝chartmuseum
??在執(zhí)行install.sh安裝時,通過--with-chartmuseum參數(shù)安裝chart插件,安裝完后會自動啟動Harbor。
2.5 查看組件服務(wù)狀態(tài)
??通過docker-compose ps命令可以看到harbor的組件中多了個chartmuseum的容器。
2.6 驗證是否安裝了chartmuseum組件
登錄Harbor UI管理界面:【項目】==>【library】==> 【Helm Charts】
安裝helm-push插件
通過Harbor UI界面可以將制作好的chart包直接上傳到Harbor,但是命令行上傳、下載Chart則需要安裝helmpush插件。
通常在kubernetes的master節(jié)點進行操作,前提是已經(jīng)安裝好helm。
3.1 在線直接安裝
上傳Chart包到Harbor
4.1 Harbor UI上傳Chart
??登錄Harbor管理界面,進入要將chart包上傳的projects(項目),選擇【Helm Charts】,然后選擇【上傳】按鈕將本地電腦中制作好的Chart包上傳到Harbor中。
然后點擊【上傳】
4.2 命令行上傳Chart
1)下載測試用的chart包
2)添加Harbor repo
- 拷貝https相關(guān)證書
- 添加repo
harbor-library?:自定義的repo名稱;https://192.168.2.30:443/chartrepo/library?為chart連接地址,chartrepo固定格式,“l(fā)ibrary”為chart所在項目的名稱,請結(jié)合自身的實際環(huán)境修改。--username?:指定Harbor的用戶名(該用戶必須對project對象擁有權(quán)限);--password?:指定密碼;--ca-file?:為harbor頒發(fā)證書的頒發(fā)者證書;--key-file?: Harbor的私鑰;--cert-file:指定harbor的證書;
參數(shù) | 含義 | Cfssl工具格式 | Openssl工具格式 |
--ca-file | CA證書 | ca.pem | ca.crt |
--cert-file | 證書文件 | harbor.pem | harbor.crt |
--key-file | 私鑰 | harbor-key.pem |
- 查看是否添加成功
3)將打包應(yīng)用從命令行push到harbor
格式:helm cm-push chart包 repo名稱
4)驗證是否上傳成功
基于Harbor中的Chart包發(fā)布服務(wù)
??使用helm包管理工具將存放在Harbor中的chart包部署到kubernetes集群中
5.1 查看chart概要
??在Harbor UI點擊chart名稱即可查看該chart的概要信息,包括chart介紹、安裝、卸載、配置等,可以根據(jù)概要信息來使用相關(guān)的管理命令。
圖5.1-1
圖5.1-2
圖5.1-3
5.2 添加Harbor作為Chart倉庫
添加的命令格式:
1)拷貝harbor相關(guān)證書
將harbor相關(guān)的證書拷貝到Helm所在服務(wù)器(一般是kubernetes集群中的master節(jié)點)。
2)添加harbor的chart倉庫
輸出結(jié)果:
表示添加成功!
3)查看驗證
?5.3 發(fā)布服務(wù)
- 搜索chart
- 安裝chart