導讀:當前,跨層級政務服務共享通常可採用兩種方式,一種是API級共享,一種是代碼組件級共享。前者多用於數據共享,後者則更適於算法與能力的輸出。在跨層級能力共享場景中,運行環境、資料庫和中間件往往不一致,無論是資料庫、網絡環境或者其他配置都有各自業務環境下的命名要求和規則,基於代碼級能力輸出與資源復用面臨很大的挑戰。容器漂移,即不同生產環境之間容器的自動轉移和動態部署,能夠較好地解決該問題。
近來,傑獅信息的研發團隊在東部某省份開展了省市縣多級政務雲之間容器漂移的技術路線研究與應用實踐,幫助用戶實現了跨層級技術與算法能力的共享。
在省市縣三級的政務雲環境中,資料庫、鏡像庫和支撐中間件各自部署,相互之間通過有限的網絡接口實現數據互通。我們充分依託阿里雲政務版來實現容器部署、漂移與配置的自動化切換。
採用EDAS服務託管容器應用
EDAS是一個應用託管和微服務管理的PaaS平臺,支持Spring Cloud、Dubbo等微服務運行環境。目前EDAS支持兩種方式部署應用,一種是雲伺服器(ECS)部署,一種是K8S容器部署。考慮到需要共享的服務數量是動態的,而且有很高的彈性伸縮要求,如果採用雲伺服器,一個服務一個ECS實例,開銷太大,所以不做考慮。我們採用K8S容器部署。
通過6步,實現在政務雲A網上的代碼JAR包的容器化部署與共享:
第一步,JAR上傳並構建鏡像;第二步,推送鏡像給EDAS,以生成容器;第三步,調用EDAS接口創建應用;第四步,啟動容器應用;第五步,通過SLB掛載物理網絡網絡;第六步,將服務掛載到CSB上,對外提供服務共享。
統一配置接管容器環境變量
在容器部署完成後,要能無縫地將能力遷移到阿里雲政務B網上,重點要解決配置切換和部署包遷移問題。
接入統一配置中心可以實現配置的在線修改,對於在程序啟動過程中就需要使用到的配置,例如配置中心的服務地址,可讓程序通過容器環境變量獲取,也就是說要求程序中動態的配置不能寫死,應該從外部進行獲取。通過環境變量的方式獲取配置,例子如下:
上述圈出的兩個變量可以通過調用EDAS的插入K8S接口在容器服務K8s集群中創建應用時動態傳入,Java只需要從環境變量裡自動獲取即可。
遷移配置部署包鏡像
完成配置後,即可開展部署包遷移,我們採用拉取方式獲取政務雲A網的鏡像,並將其推給B網,如下圖:
程序在推送必要的元數據(應用名稱、鏡像地址、版本等)給政務B網的應用後,即可直接從A網鏡像倉庫獲取鏡像,實現應用創建。
綜上,我們基於容器漂移實現了政務信息與技術能力的省市縣跨層級共享。未來,傑獅信息將不斷加強數位技術研究與應用實踐,為政府數字改革貢獻自己的力量。