本技術(shù)涉及微服務(wù)系統(tǒng),特別涉及一種微服務(wù)應(yīng)用集群部署的方法及裝置。
背景技術(shù):
1、微服務(wù)是一種架構(gòu)風(fēng)格,可以把一個項目拆分成獨立的多個服務(wù),并且多個服務(wù)獨立運行,都會占用線程。在業(yè)務(wù)規(guī)模復(fù)雜的軟件中,同一業(yè)務(wù)域往往包括多個大量的微服務(wù)應(yīng)用,從而涉及的開發(fā)及測試人員也很多。
2、現(xiàn)有技術(shù)中,各技術(shù)人員在開發(fā)測試過程中,需要部署不同業(yè)務(wù)系統(tǒng)、不同模塊、不同中間件、不同版本、不同配置文件構(gòu)成的微服務(wù)集群,這將導(dǎo)致大量重復(fù)勞動和部署耗時。因此,如何針對中、大規(guī)模的多微服務(wù)集群進行快捷、靈活地部署,成為了一個亟需解決的問題。
技術(shù)實現(xiàn)思路
1、基于上述問題,本技術(shù)提供了一種微服務(wù)應(yīng)用集群部署的方法及裝置,以針對中、大規(guī)模的多微服務(wù)集群進行快捷、靈活地部署。
2、本技術(shù)公開了一種微服務(wù)應(yīng)用集群部署的方法,所述方法包括:
3、獲取用戶名,根據(jù)所述用戶名創(chuàng)建命名空間;
4、獲取用戶確定的待部署應(yīng)用的配置信息;所述配置信息包括部署類型、模板和動態(tài)掛載的配置文件;所述部署類型包括業(yè)務(wù)系統(tǒng)和中間件;
5、根據(jù)所述配置信息獲取鏡像,制作所述待部署應(yīng)用的文件包;
6、在所述命名空間中部署所述文件包。
7、可選的,所述配置信息包括倉庫組、倉庫、模塊和代碼,所述獲取用戶確定的待部署應(yīng)用的配置信息,包括:
8、獲取所述用戶名;
9、獲取與所述用戶名的權(quán)限對應(yīng)的倉庫組列表;
10、獲取所述用戶在所述倉庫組列表中選擇的倉庫組,展開對應(yīng)所述倉庫組的倉庫列表;
11、獲取所述用戶在倉庫列表選擇的代碼倉庫;
12、當(dāng)所述代碼倉庫為多模塊應(yīng)用時,請求所述用戶選擇所述多模塊應(yīng)用下可啟動的模塊;
13、獲取所述代碼倉庫中的打標(biāo)簽的代碼。
14、可選的,所述部署類型為中間件,所述獲取用戶確定的待部署應(yīng)用的配置信息,包括:
15、在鏡像倉庫中可發(fā)布版本的中間件中選擇待部署中間件,作為所述待部署應(yīng)用;
16、復(fù)制得到與所述待部署應(yīng)用對應(yīng)的所述模板;所述模板包括聲明持久化存儲卷大小、存儲位置和對外訪問端口;
17、用所述用戶名替換所述模板中的命名空間占位符。
18、可選的,所述部署類型為業(yè)務(wù)系統(tǒng),所述獲取用戶確定的待部署應(yīng)用的配置信息,包括:
19、在業(yè)務(wù)倉庫中可發(fā)布的應(yīng)用中選擇待部署應(yīng)用;
20、復(fù)制得到與所述待部署應(yīng)用對應(yīng)的所述模板;所述模板包括聲明持久化存儲卷大小、存儲位置和對外訪問端口;
21、用所述用戶名替換所述模板中的命名空間占位符。
22、可選的,所述根據(jù)所述配置信息獲取鏡像,制作所述待部署應(yīng)用的文件包,包括:
23、當(dāng)所述部署類型為業(yè)務(wù)系統(tǒng)時,拉取所述代碼,通過gradle的應(yīng)用程序編程接口api制作jar包,并根據(jù)所述配置文件,將所述jar包打包為docker鏡像,作為所述文件包;
24、當(dāng)所述部署類型為中間件時,拉取所述待部署中間件的docker鏡像,作為所述文件包。
25、可選的,在用所述用戶名替換所述模板中的命名空間占位符后,所述方法還包括:
26、將所述配置文件中的kafka地址、redis地址、mysql地址分別替換為預(yù)設(shè)地址,使所述命名空間中的待部署應(yīng)用注冊到目標(biāo)注冊中心。
27、可選的,在獲取所述代碼倉庫中的打標(biāo)簽的代碼前,所述方法還包括:
28、當(dāng)所述標(biāo)簽代碼為空時,支持所述用戶針對待打標(biāo)簽的代碼輸入標(biāo)簽名稱,對所述待打標(biāo)簽的代碼進行打標(biāo)簽。
29、可選的,所述在所述命名空間中部署所述文件包,包括:
30、將所述文件包移交kubernetes集群的主節(jié)點,執(zhí)行所述待部署應(yīng)用的部署。
31、基于上述一種微服務(wù)應(yīng)用集群部署的方法,本技術(shù)還公開了一種微服務(wù)應(yīng)用集群部署的裝置,包括:創(chuàng)建單元、確定單元、制作單元和部署單元;
32、所述創(chuàng)建單元,用于獲取用戶名,根據(jù)所述用戶名創(chuàng)建命名空間;
33、所述確定單元,用于獲取用戶確定的待部署應(yīng)用的配置信息;所述配置信息包括部署類型、模板和動態(tài)掛載的配置文件;所述部署類型包括業(yè)務(wù)系統(tǒng)和中間件;
34、所述制作單元,用于根據(jù)所述配置信息獲取鏡像,制作所述待部署應(yīng)用的文件包;
35、所述部署單元,用于在所述命名空間中部署所述文件包。
36、可選的,所述配置信息包括倉庫組、倉庫、模塊和代碼,所述確定單元,包括:
37、用戶名獲取子單元,用于獲取所述用戶名;
38、倉庫組獲取子單元,用于獲取與所述用戶名的權(quán)限對應(yīng)的倉庫組列表;
39、倉庫列表獲取子單元,用于獲取所述用戶在所述倉庫組列表中選擇的倉庫組,展開對應(yīng)所述倉庫組的倉庫列表;
40、倉庫獲取子單元,用于獲取所述用戶在倉庫列表選擇的代碼倉庫;
41、模塊獲取子單元,用于當(dāng)所述代碼倉庫為多模塊應(yīng)用時,請求所述用戶選擇所述多模塊應(yīng)用下可啟動的模塊;
42、代碼獲取子單元,用于獲取所述代碼倉庫中的打標(biāo)簽的代碼。
43、可選的,所述部署類型為中間件,所述確定單元,包括:
44、中間件選擇子單元,用于在鏡像倉庫中可發(fā)布版本的中間件中選擇待部署中間件,作為所述待部署應(yīng)用;
45、模板復(fù)制子單元,用于復(fù)制得到與所述待部署應(yīng)用對應(yīng)的所述模板;所述模板包括聲明持久化存儲卷大小、存儲位置和對外訪問端口;
46、替換子單元,用于用所述用戶名替換所述模板中的命名空間占位符。
47、可選的,所述部署類型為業(yè)務(wù)系統(tǒng),所述確定單元,包括:
48、應(yīng)用獲取子單元,用于在業(yè)務(wù)倉庫中可發(fā)布的應(yīng)用中選擇待部署應(yīng)用;
49、復(fù)制子單元,用于復(fù)制得到與所述待部署應(yīng)用對應(yīng)的所述模板;所述模板包括聲明持久化存儲卷大小、存儲位置和對外訪問端口;
50、占位符替換子單元,用于用所述用戶名替換所述模板中的命名空間占位符。
51、可選的,所述制作單元,包括:
52、制作子單元,用于當(dāng)所述部署類型為業(yè)務(wù)系統(tǒng)時,拉取所述代碼,通過gradle的應(yīng)用程序編程接口api制作jar包,并根據(jù)所述配置文件,將所述jar包打包為docker鏡像,作為所述文件包;
53、拉取子單元,用于當(dāng)所述部署類型為中間件時,拉取所述待部署中間件的docker鏡像,作為所述文件包。
54、可選的,所述裝置還用于:
55、將所述配置文件中的kafka地址、redis地址、mysql地址分別替換為預(yù)設(shè)地址,使所述命名空間中的待部署應(yīng)用注冊到目標(biāo)注冊中心。
56、可選的,所述裝置還用于:
57、當(dāng)所述標(biāo)簽代碼為空時,支持所述用戶針對待打標(biāo)簽的代碼輸入標(biāo)簽名稱,對所述待打標(biāo)簽的代碼進行打標(biāo)簽。
58、可選的,所述部署單元,包括:
59、移交子單元,用于將所述文件包移交kubernetes集群的主節(jié)點,執(zhí)行所述待部署應(yīng)用的部署。
60、本技術(shù)公開了一種微服務(wù)應(yīng)用集群部署的方法及裝置。根據(jù)用戶名創(chuàng)建命名空間,保證命名空間之間環(huán)境隔離,實現(xiàn)各命名空間內(nèi)的微服務(wù)應(yīng)用相互調(diào)用,且能夠在命名空間內(nèi)獨立地進行聯(lián)調(diào)測試。獲取用戶確定的業(yè)務(wù)系統(tǒng)或中間件的配置信息,其中包括配置信息包括部署類型、模板和動態(tài)掛載的配置文件,保證靈活性、高度擴展性且無業(yè)務(wù)侵入,接入新增代碼倉庫時無須任何腳本改造。最后根據(jù)配置信息獲取鏡像,制作文件包,并在命名空間中部署文件包。本技術(shù)基于交互界面,能夠針對中、大規(guī)模的多微服務(wù)集群進行快捷、靈活地部署。