使用Harbor 2 管理docker嚣鄙,helm charts及AI模型文件

Harbor升級到2.1之后允蜈,就可以比較方便的統(tǒng)一管理docker, helm charts及AI model文件了磷箕。我們以一個(gè)個(gè)具體的示例demo选酗,來演示如何進(jìn)行這三類文件的管理。

更改docker配置文件岳枷,讓其支持內(nèi)部harbor倉庫

Insecure Registries:
 harbor.demo.com.cn
 127.0.0.0/8
Registry Mirrors:
https://docker.mirrors.ustc.edu.cn/

一芒填,docker鏡像

1,先在harbor里建立project項(xiàng)目(istio)

2空繁,從外網(wǎng)下載鏡像

docker pull istio/proxyv2:1.8.1

如果不能直接從外網(wǎng)拉取鏡像殿衰,也可以從其它地方拉取鏡像之后,通過save和reload命令盛泡,導(dǎo)入鏡像闷祥。

3,更改鏡像tag

docker tag istio/proxyv2:1.8.1 harbor.demo.com.cn/istio/proxyv2:1.8.1

4傲诵,上傳鏡像

docker push harbor.demo.com.cn/istio/proxyv2:1.8.1

如果項(xiàng)目是私有的凯砍,可能還需要使用docker login命令,先登陸harbor服務(wù)器拴竹。

5悟衩,拉取harbor鏡像到本地緩存

docker pull harbor.demo.com.cn/istio/pilot:1.8.1
1.8.1: Pulling from istio/pilot
Digest: sha256:2fe9f9cd22bcfb724c706124feadaaa18dfc11c1a434aad21c2b7ec5c52ccca2
Status: Image is up to date for harbor.demo.com.cn/istio/pilot:1.8.1

6,鏡像導(dǎo)出

docker save harbor.demo.com.cn/istio/pilot:1.8.1 -o pilot-1.8.1

會在當(dāng)前目錄下栓拜,生成一個(gè)名為pilot-1.8.1壓縮文件座泳,此文件可通過cp等方法斑响,在服務(wù)器之間轉(zhuǎn)移。

7钳榨,鏡像導(dǎo)入

docker load -i pilot-1.8.1

如果當(dāng)前目錄下,存在pilot-1.8.1這個(gè)鏡像壓縮文件纽门,此命令可以將之導(dǎo)入docker的本地緩存薛耻,以供docker run,docker tag赏陵,docker push等命令使用饼齿。

二, helm charts

Kubernetes提供了統(tǒng)一模式的API蝙搔,能以YAML格式的文件定義Kubernetes集群內(nèi)的資源缕溉。這些資源的種類繁多,例如無狀態(tài)應(yīng)用的部署 Deployment吃型、有狀態(tài)應(yīng)用的部署StatefulSet证鸥、配置項(xiàng)ConfigMap等。

在這個(gè)基于YAML文件的軟件交付體系不斷完善過程中勤晚,云原生社區(qū)衍生了一個(gè)更高維度的概念及其實(shí)現(xiàn)工具枉层,即Chart和Helm。

Chart是一系列Kubernetes集群內(nèi)資源描述文件的組合赐写,一個(gè)Chart可以是一個(gè)WordPress和MySQL的組合鸟蜡,也可以是一個(gè)etcd集群的組合。

Helm是一個(gè)命令行程序挺邀,用于管理這些Chart揉忘,以及其運(yùn)行態(tài)Release。

1端铛, Harbor里新建一個(gè)項(xiàng)目(helm-repo)

2泣矛, 定位應(yīng)用的helm charts目錄

這里以seldon-core-1.5.1項(xiàng)目為例,下載這個(gè)項(xiàng)目的源代碼目錄沦补,然后進(jìn)入到helm-charts子目錄乳蓄,此目錄即為seldon-core項(xiàng)目提供的helm charts文件。SeldonIO/seldon-core這里以seldon-core-1.5.1項(xiàng)目為例夕膀,下載這個(gè)項(xiàng)目的源代碼目錄虚倒,然后進(jìn)入到helm-charts子目錄,此目錄即為seldon-core項(xiàng)目提供的helm charts文件产舞。

當(dāng)然魂奥,如果能直接連外網(wǎng),甚至在更好的網(wǎng)絡(luò)條件下易猫,我們是直接可以使用helm install或是helm pull命令耻煤,操作互聯(lián)網(wǎng)上的charts文件。

https://github.com/SeldonIO/seldon-core?github.com

3, 安裝配置helm

A,安裝helm

就一個(gè)helm可執(zhí)行文件哈蝇,放到合適的目錄即可棺妓。我使用的是3.4.2。

https://github.com/helm/helm?github.com

B炮赦,安裝插件

Helm要能推送charts到harbor倉庫怜跑,還得安裝一個(gè)helm-push插件。這里不考慮聯(lián)網(wǎng)條件吠勘,直接下載壓縮包性芬,使用如下命令安裝。

helm plugin install helm-push_0.9.0_linux_amd64.tar.gz

如果這樣有問題剧防,也可以直接把這個(gè)文件解壓到helm的插件目錄植锉。

https://github.com/chartmuseum/helm-push?github.com

C,配置helm倉庫

使用如下命令峭拘,為helm增加一個(gè)chart repo倉庫俊庇。

helm repo add harbor-test-helm-repo 
    --username=xxx 
    --password=xxx 
    http://harbor.demo.com.cn/chartrepo/helm-repo

這個(gè)harbor設(shè)置比較魔幻,chartrepo這個(gè)目錄不知如何界定的鸡挠,反正就是行暇赤。

之后,就可以通過如下命令宵凌,查看我們增加過哪些chart repo倉庫鞋囊。

helm repo list
NAME URL  
harbor-test-helm-repo http://harbor.demo.com.cn/chartrepo/helm-repo

D,更新本地charts緩存瞎惫,更新之后溜腐,才可以使用search命令搜索helm charts.

helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "harbor-test-helm-repo" chart repository
Update Complete. ?Happy Helming!?

E,搜索charts倉庫里的文件

helm search repo seldom

F瓜喇,下載helm應(yīng)用charts

helm pull harbor-test-helm-repo/seldon-mab
  • harbor-test-helm-repo表示harbor chart repo
  • seldon-mab表示這個(gè)repo里的具體的charts
  • 此命令將會在當(dāng)前目錄下挺益,生成一個(gè)seldon-mab-0.2.0.tgz文件。
    (我懷疑helm pull生成的文件和helm package文件是一樣的乘寒,一個(gè)從遠(yuǎn)程望众,一個(gè)從本地)

G,打包c(diǎn)harts文件夾

helm package seldon-core-operator/
Successfully packaged chart and saved it to: /opt/seldon-core-1.5.1/helm-charts/seldon-core-operator-1.5.1.tgz
  • 有時(shí)為了能在沒聯(lián)網(wǎng)的情況伞辛,在不同的環(huán)境和服務(wù)器之間烂翰,傳遞helm charts≡槭希可以使用helm package命令甘耿,將charts的目錄全部打包成一個(gè)tgz文件。
  • 有了這個(gè)文件竿滨,就可以使用正常的文件傳輸工具進(jìn)行cp和install部署了佳恬。

4捏境, 上傳helm charts到harbor倉庫

A,一種方式是直接上傳charts文件夾

helm push seldon-mab harbor-test-helm
  • seldon-mab是charts目錄
  • harbor-test-helm是harbor charts repo名稱

B毁葱,另一種是將charts package文件包push

helm push seldon-core-operator-1.5.1.tgz harbor-test-helm
Pushing seldon-mab-0.2.0.tgz to harbor-test-helm...
Done.
Pushing seldon-core-operator-1.5.1.tgz to harbor-test-helm...
Done.

C垫言,如果一切正常,在harbor里就可以看到這些charts的信息了倾剿。

5骏掀, 安裝helm charts應(yīng)用

A, 從遠(yuǎn)程harbor charts repo安裝

helm install seldon-mab harbor-test-helm-repo/seldon-mab
  • seldon-mab這是命名,必須的柱告,要不然要自動產(chǎn)生名字--generate-name

B, 從本地目錄或壓縮文件安裝

kubectl create namespace seldon-system
helm install seldon-core \
    --namespace seldon-system 
    --set usageMetrics.enabled=true 
    --set istio.enabled=true 
    seldon-core-operator
  • install之后的參數(shù),對應(yīng)的是部署名稱笑陈,
  • 最后一個(gè)參數(shù)际度,對應(yīng)的是本地目錄或charts壓縮文件名。
NAME: seldon-core
LAST DEPLOYED: Fri Jan 24 18:04:29 2021
NAMESPACE: seldon-system
STATUS: deployed
REVISION: 1
TEST SUITE: None 

C, 查看已安裝charts

   helm list -n seldon-system

6涵妥, 刪除helm charts應(yīng)用

helm uninstall seldon-core -n seldon-system 

三乖菱,AI model

ORMB的名稱源自 OCI-Based Registry for ML/DL Model Bundle,它能夠?qū)⒛P秃湍P偷脑獢?shù)據(jù)利用已有的鏡像倉庫進(jìn)行分發(fā)蓬网。通過鏡像倉庫來分發(fā)模型窒所,可以幫助用戶更好的管理他們的機(jī)器學(xué)習(xí)/深度學(xué)習(xí)模型。通過ORMB帆锋,模型能更易于創(chuàng)建吵取、版本化、共享以及發(fā)布锯厢。

<u style="text-decoration: none; border-bottom: 1px dashed grey;">字節(jié)跳動將于近日完成對容器平臺才云科技(Caicloud)的全資收購皮官,收購?fù)瓿珊螅旁瓶萍嫉膱F(tuán)隊(duì)及業(yè)務(wù)实辑,將加入字節(jié)跳動火山引擎捺氢。</u>

ORMB 是 Klever 下的一個(gè)命令行管理工具子項(xiàng)目,可以像 Docker 管理鏡像一樣管理模型剪撬。它支持 OCI 標(biāo)準(zhǔn)摄乒,可以對模型文件和模型屬性進(jìn)行分層存儲管理。

Ormb的命令比較簡單残黑,和docker操作harbor的命令類似馍佑,對照起來學(xué)習(xí)更快。這里演示的AI MODEL模型梨水,是以ormb項(xiàng)目的examples里的文件列表為素材的挤茄。

1, ormb下載安裝

https://github.com/kleveross/ormb?github.com

將下載得到的ormb_0.0.10_Linux_x86_64.tar.gz解壓冰木,放于linux可執(zhí)行目錄即可穷劈。通過如下命令笼恰,輸出ormb的版本信息

ormb version
Version: 0.0.10
Git SHA: cd8d7163ecbdb4dfa91b422846140286c780443a
Repo Root: git@github.com:simon-cj/ormb.git
Go Version: go1.15.6
Go OS/Arch: linux/amd64

(壓縮包里還有另一個(gè)ormb-storage-initializer文件,此文件在部署klever時(shí)有用歇终,暫且不表社证。)

2, ormb登陸harbor

同docker一樣评凝,如何harbor里的項(xiàng)目是私有的話追葡,在上傳下載model時(shí),需要先登陸

ormb login --insecure harbor.demo.com.cn
Username: admin
Password: 
Login insecurely
INFO[2021-01-18T09:38:42+08:00] Error logging in to v2 endpoint, trying next endpoint: Get "https://harbor.demo.com.cn/v2/": http: server gave HTTP response to HTTPS client 
Login succeeded

因?yàn)闆]有使用Https登陸奕短,所以會有安全提示宜肉。

3, 將當(dāng)前目錄下的模型文件存儲到本地緩存中

ormb save PMML-model/ harebor.demo.com.cn/ai-model/PMML-model:v0.1
ref: harbor.demo.com.cn/ai-model/PMML-model:v0.1
digest: 47e6f69c39bf37ccd8bbe162cd208fd0bb9c602672efad04c40deb0721ab86b6
size: 6.1 KiB
format: PMML
v0.1: saved

4翎碑, 更改模型的tag

ormb tag harbor.demo.com.cn/ai-model/PMML-model:v0.1 harbor.demo.com.cn/ai-model/pmml_model:v0.2
harbor.demo.com.cn/ai-model/PMML-model:v0.1: tagged
  • 如果有一天谬返,發(fā)現(xiàn)后現(xiàn)的ormb push命令老是報(bào)錯(cuò),不要懷疑自己的實(shí)力日杈,有時(shí)遣铝,就是單純的tag不準(zhǔn)使用大寫字母等緣故。

5莉擒, 將存儲在本地緩存中的模型推送到遠(yuǎn)端倉庫中

ormb push --plain-http harbor.demo.com.cn/ai-model/pmml_model:v0.2
The push refers to repository [harbor.demo.com.cn/ai-model/pmml_model]
ref: harbor.demo.com.cn/ai-model/pmml_model:v0.2
digest: 47e6f69c39bf37ccd8bbe162cd208fd0bb9c602672efad04c40deb0721ab86b6
size: 6.1 KiB
format: PMML
v0.2: pushed to remote (1 layer, 6.1 KiB total)

無圖無真相

6酿炸, 將存儲在遠(yuǎn)端倉庫的模型拉取到本地緩存中

ormb pull --plain-http harbor.demo.com.cn/ai-model/pmml_model:v0.3
v0.3: Pulling from harbor.demo.com.cn/ai-model/pmml_model
ref: harbor.demo.com.cn/ai-model/pmml_model:v0.3
digest: 47e6f69c39bf37ccd8bbe162cd208fd0bb9c602672efad04c40deb0721ab86b6
size: 6.1 KiB
format: PMML
Status: Downloaded newer model for harbor.demo.com.cn/ai-model/pmml_model:v0.3

7, 將存儲在緩存中的模型導(dǎo)出到當(dāng)前目錄

ormb export harbor.demo.com.cn/ai-model/pmml_model:v0.3
ref: harbor.demo.com.cn/ai-model/pmml_model:v0.3
digest: 47e6f69c39bf37ccd8bbe162cd208fd0bb9c602672efad04c40deb0721ab86b6
size: 6.1 KiB
format: PMML

此條命令涨冀,與save命令相反填硕,會在當(dāng)前目錄下,展開解壓成model本來的文件鹿鳖。

總之一句話廷支,harbor越來越強(qiáng)大!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末栓辜,一起剝皮案震驚了整個(gè)濱河市恋拍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌藕甩,老刑警劉巖施敢,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異狭莱,居然都是意外死亡僵娃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門腋妙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來默怨,“玉大人,你說我怎么就攤上這事骤素〕锥茫” “怎么了愚屁?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長痕檬。 經(jīng)常有香客問我霎槐,道長,這世上最難降的妖魔是什么梦谜? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任丘跌,我火速辦了婚禮,結(jié)果婚禮上唁桩,老公的妹妹穿的比我還像新娘闭树。我一直安慰自己,他們只是感情好荒澡,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布报辱。 她就那樣靜靜地躺著,像睡著了一般仰猖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奈籽,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天饥侵,我揣著相機(jī)與錄音,去河邊找鬼衣屏。 笑死躏升,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狼忱。 我是一名探鬼主播膨疏,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼钻弄!你這毒婦竟也來了佃却?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤窘俺,失蹤者是張志新(化名)和其女友劉穎饲帅,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瘤泪,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灶泵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了对途。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赦邻。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖实檀,靈堂內(nèi)的尸體忽然破棺而出惶洲,到底是詐尸還是另有隱情按声,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布湃鹊,位于F島的核電站儒喊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏币呵。R本人自食惡果不足惜怀愧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望余赢。 院中可真熱鬧芯义,春花似錦、人聲如沸妻柒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽举塔。三九已至绑警,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間央渣,已是汗流浹背计盒。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芽丹,地道東北人北启。 一個(gè)月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像拔第,于是被迫代替她去往敵國和親咕村。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容