本發(fā)明涉及微服務(wù)控制和數(shù)據(jù)處理,尤其涉及一種基于配置文件部署的微服務(wù)sidecar注入方法。
背景技術(shù):
1、service?mesh是一種處理服務(wù)間通信的基礎(chǔ)設(shè)施層,用于在微服務(wù)架構(gòu)中提供可靠、快速和安全的服務(wù)間調(diào)用。service?mesh平臺從架構(gòu)上主要分為控制平面及數(shù)據(jù)平面:控制平面由一系列控制組件組成,主要負責對數(shù)據(jù)平面的管理控制,包括sidecar鏡像、sidecar注入條件、服務(wù)治理規(guī)則等等;數(shù)據(jù)平面主要包括接入平臺的多個微服務(wù)及每個微服務(wù)專屬的一個網(wǎng)絡(luò)代理sidecar,微服務(wù)接入過程中為其配置sidecar的過程稱為sidecar注入。一般在控制平面配置sidecar各項參數(shù)以控制sidecar的注入過程及治理規(guī)則下發(fā)。若采用容器化方式部署微服務(wù),單個pod中會同時存在1個應(yīng)用容器和1個sidecar容器。sidecar本身作為微服務(wù)的網(wǎng)絡(luò)代理,負責實現(xiàn)網(wǎng)格內(nèi)微服務(wù)間的流量管理,包括服務(wù)發(fā)現(xiàn)、服務(wù)路由、負載均衡、可靠通信等。
2、各微服務(wù)接入服務(wù)網(wǎng)格過程中有不同定制化需求時,平臺方需發(fā)布維護多種版本sidecar以供使用。為保證微服務(wù)與特定功能sidecar之間的精確匹配注入,依賴于在控制平面配置sidecar注入過程中各微服務(wù)的唯一性條件作為生效范圍:比如微服務(wù)名稱、微服務(wù)配置yaml文件中的特定字段值等。sidecar鏡像及配置文件的增刪改查以及控制下發(fā)至微服務(wù)pod中,均依賴于網(wǎng)格平臺控制平面多個組件間的調(diào)用及kubernetes原理。
3、現(xiàn)有技術(shù)下復(fù)雜場景中sidecar注入過程主要包括:在mesh控制臺發(fā)布所有可用版本sidecar及其配置文件;在mesh控制臺配置微服務(wù)注入sidecar條件及規(guī)則;部署微服務(wù),由注入組件為其注入sidecar,此過程微服務(wù)無感知。其中,由于多個版本sidecar版本配置文件之間存在差異,為便于維護,可使用1-2級數(shù)據(jù)進行維護;1級則是將全量版本sidecar版本配置文件維護至mesh控制臺,所有微服務(wù)基于特定版本sidecar配置自己的注入規(guī)則,主要是劃定本規(guī)則僅對本應(yīng)用生效;2級則是抽象出多個大版本sidecar版本配置文件作為通用模板,各小版本引用通用模板替換占位符信息,各微服務(wù)找到特定版本sidecar配置注入規(guī)則。由于企業(yè)級背景下存在環(huán)境隔離等復(fù)雜場景,微服務(wù)部署位置各不相同。為便于mesh平臺管理,一般將所有接入網(wǎng)格微服務(wù)所在kubernetes集群進行納管,以便通過集群apiserver對微服務(wù)進行操作。在集群納管時需要將數(shù)據(jù)面集群的kubeconfig文件提交至mesh控制平面組件,通過接口傳遞給kubernetes的openapi,控制平面向?qū)?yīng)數(shù)據(jù)面集群寫入一個mutatingwebhookconfiguration,定義了kubernetes?webhook機制的生效場景。在集群部署微服務(wù)yaml配置文件,在webhook機制下,微服務(wù)所在集群apiserver將yaml文件發(fā)送至控制面的注入組件,注入組件讀取yaml信息,并與控制平面所有注入配置規(guī)則生成的configmap中匹配生效范圍一致的configmap,從中拿出sidecar?yaml并與微服務(wù)yaml拼接完成sidecar注入返回。由于sidecar版本配置文件數(shù)量較多,且在配置注入配置規(guī)則時需要用到各微服務(wù)專有信息,故在完成相關(guān)操作時需要微服務(wù)專業(yè)人員介入進行操作。
4、但是,現(xiàn)有技術(shù)在實際應(yīng)用中,由于各步驟之間存在強依賴關(guān)系,導致必須先進行sidecar注入配置,然后再部署啟動微服務(wù),如果順序錯誤,則微服務(wù)將無法注入sidecar;在添加各微服務(wù)的注入配置規(guī)則時,由于涉及多種sidecar版本和微服務(wù)信息,需要微服務(wù)方專業(yè)人員的介入,明顯增加了操作的復(fù)雜性,且長期存在service?mesh平臺方對自動化工具的研發(fā)、測試、發(fā)布、優(yōu)化、執(zhí)行等的工作量,人力資源浪費較為明顯,也無法實現(xiàn)無感注入。另一方面,現(xiàn)有技術(shù)下以微服務(wù)某一條件進行sidecar注入配置及下發(fā)時,若應(yīng)用進行灰度升級則可能出現(xiàn)無法滿足需求的問題。
技術(shù)實現(xiàn)思路
1、為解決現(xiàn)有技術(shù)的不足,本發(fā)明提出一種基于配置文件部署的微服務(wù)sidecar注入方法及系統(tǒng),通過優(yōu)化sidecar注入流程,減小微服務(wù)接入服務(wù)網(wǎng)格在sidecar注入方面的工作量,微服務(wù)方無需關(guān)注sidecar注入全流程,也無需關(guān)注服務(wù)與sidecar部署順序之間的依賴關(guān)系,只需關(guān)注自身服務(wù)部署情況即可,實現(xiàn)無感注入及透明注入,能夠有效幫助減小網(wǎng)格平臺方與sidecar注入過程相關(guān)的工作量,包括注入工具開發(fā)、測試、維護、推廣及問題排查等。
2、為實現(xiàn)以上目的,本發(fā)明所采用的技術(shù)方案包括:
3、一種基于配置文件部署的微服務(wù)sidecar注入方法,其特征在于,包括執(zhí)行下列步驟:
4、s1、維護注入模板配置文件,并將所述注入模板配置文件關(guān)聯(lián)至至少一個注入版本;
5、s2、發(fā)布sidecar版本配置文件,所述sidecar版本配置文件包括sidecar信息、注入版本和與所述注入版本具有關(guān)聯(lián)關(guān)系的注入模板配置文件;
6、s3、設(shè)置webhook的生效機制和執(zhí)行策略;
7、s4、配置待部署微服務(wù)對應(yīng)的微服務(wù)配置文件,所述微服務(wù)配置文件包括版本標簽,所述版本標簽與所述注入版本具有相同的數(shù)據(jù)格式規(guī)則;
8、s5、在kubernetes集群中部署微服務(wù)配置文件;
9、s6、使用webhook攔截pod創(chuàng)建動作,依據(jù)微服務(wù)配置文件的版本標簽匹配的注入版本獲取對應(yīng)的sidecar版本配置文件;
10、s7、執(zhí)行并完成sidecar注入操作,生成包含sidecar容器的微服務(wù)pod。
11、進一步地,所述步驟s3包括:
12、驗證sidecar版本配置文件有效性;
13、設(shè)定webhook的目標服務(wù)端點和觸發(fā)規(guī)則。
14、進一步地,所述sidecar版本配置文件和微服務(wù)配置文件采用yaml文件格式。
15、進一步地,所述使用webhook攔截pod創(chuàng)建動作包括:
16、判斷pod創(chuàng)建動作是否滿足webhook的觸發(fā)規(guī)則;
17、當判斷pod創(chuàng)建動作滿足webhook的觸發(fā)規(guī)則時,攔截pod創(chuàng)建動作并依據(jù)webhook的目標服務(wù)端點調(diào)取對應(yīng)的sidecar版本配置文件。
18、進一步地,所述執(zhí)行并完成sidecar注入操作包括:
19、依據(jù)sidecar版本配置文件包括的注入模板配置文件執(zhí)行sidecar注入操作。
20、進一步地,所述版本標簽與所述注入版本具有相同的數(shù)據(jù)格式規(guī)則包括所述版本標簽的鍵名與所述注入版本的鍵名相同,且所述版本標簽的鍵值選擇service?mesh平臺方發(fā)布的sidecar版本配置文件中的注入版本對應(yīng)鍵值。特別是,由注入組件拼接并保證微服務(wù)版本標簽鍵值與所述注入版本具有相同的數(shù)據(jù)格式規(guī)則包括所述版本標簽的鍵值與所述注入版本號一致,且拼接出的的字段值與service?mesh平方臺方發(fā)布的sidecar版本配置文件名稱相同。
21、本發(fā)明還涉及一種基于配置文件部署的微服務(wù)sidecar注入系統(tǒng),其特征在于,包括:
22、模板維護模塊,用于維護注入模板配置文件,并將所述注入模板配置文件關(guān)聯(lián)至至少一個注入版本;
23、sidecar版本配置文件發(fā)布模塊,用于發(fā)布sidecar版本配置文件;
24、webhook設(shè)置模塊,用于設(shè)置webhook的生效機制和執(zhí)行策略;
25、微服務(wù)配置文件設(shè)置模塊,用于配置待部署微服務(wù)對應(yīng)的微服務(wù)配置文件;
26、微服務(wù)配置文件部署模塊,用于在kubernetes集群中部署微服務(wù)配置文件;
27、攔截執(zhí)行模塊,用于使用webhook攔截pod創(chuàng)建動作,依據(jù)微服務(wù)配置文件的版本標簽匹配的注入版本獲取對應(yīng)的sidecar版本配置文件;
28、注入執(zhí)行模塊,用于執(zhí)行并完成sidecar注入操作,生成包含sidecar容器的微服務(wù)pod。
29、本發(fā)明還涉及一種計算機可讀存儲介質(zhì),其特征在于,所述存儲介質(zhì)上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述的方法。
30、本發(fā)明還涉及一種電子設(shè)備,其特征在于,包括處理器和存儲器;
31、所述存儲器,用于存儲sidecar版本配置文件和微服務(wù)配置文件;
32、所述處理器,用于通過調(diào)用sidecar版本配置文件和微服務(wù)配置文件,執(zhí)行上述的方法。
33、本發(fā)明還涉及一種計算機程序產(chǎn)品,包括計算機程序和/或指令,其特征在于,該計算機程序和/或指令被處理器執(zhí)行時實現(xiàn)上述方法的步驟。
34、本發(fā)明的有益效果為:
35、采用本發(fā)明所述基于配置文件部署的微服務(wù)sidecar注入方法及系統(tǒng),通過自定義label直接在微服務(wù)yaml文件中指定期望注入的sidecar版本,減少了在mesh控制臺上配置注入規(guī)則的步驟,優(yōu)化sidecar注入流程,mesh平臺不關(guān)注各注入規(guī)則配置情況,僅關(guān)注自身發(fā)布的各版本sidecar版本配置文件,一定程度上將微服務(wù)注入sidecar流程與mesh平臺解耦,減小微服務(wù)接入服務(wù)網(wǎng)格在sidecar注入方面的工作量,微服務(wù)方無需關(guān)注sidecar注入全流程,也無需關(guān)注服務(wù)與sidecar部署順序之間的依賴關(guān)系,只需關(guān)注自身服務(wù)部署情況即可,實現(xiàn)無感注入及透明注入,能夠有效幫助減小網(wǎng)格平臺方與sidecar注入過程相關(guān)的工作量,包括注入工具開發(fā)、測試、維護、推廣及問題排查等。使用本發(fā)明的微服務(wù)sidecar注入方法及系統(tǒng),顯著提高了靈活性和效率,微服務(wù)方可以根據(jù)自己的需求快速選擇和更換sidecar版本,能夠支持灰度發(fā)布等多場景下的sidecar注入。