324
技術社區[雲棲]
雲效(原RDC)+ 容器服務完成持續集成
最近在將公司的持續集成架構做一個係統的調整,調整過程中受到了RDC團隊大量的幫助,所以利用國慶時間寫了幾篇RDC的分享,希望能讓更多的人了解和用好RDC這個產品。
我會把我最近3個月的使用體會分成5個部分:使用RDC的動機、PHP項目集成、JS項目集成、JAVA項目集成、Docker類項目集成這5個分支來寫
因為近期RDC的迭代比較頻繁,所以我的分享會比較的淺,點到為止,僅供參考,目錄:
1、RDC如何耦合進我們的業務
2、如何構建一個基於Composer的PHP項目
3、如何構建一個基於NodeJS的前後端項目
4、如何構建一個基於Maven的Java項目
5、RDC + 容器服務完成持續集成
一、現狀
在沒有切入RDC之前,我們公司的持續集成主要是通過Jenkins完成,定時構建、打包、製作docker鏡像,然後通過API發布到docker集群。
這套方案的優點在於:
1.隻要技術能力過硬,幾乎可以通過jenkins的自定義腳本實現99%的功能。想對更自由一些。
2.可以通過分布式的構建節點來降低構建壓力和提高穩定性,適合大並發的構建場景。
缺點也很明顯:
1.沒有過多技術精力的團隊,隻能使用jenkins自帶的功能、擴展插件來實現相關功能,較為繁瑣且jenkins的界麵和操作有時候確實有點反人類的,屬於用起來很簡單,要用好很難。
2.需要投入額外的部署、構建節點,成本,成本~
3.因為公司的服務基於docker部署,而jenkins+docker的構建和部署並非特別的好用。更關鍵的問題是安全,需要將相關集群的證書打入構建和部署節點,一旦被攻擊,可能公司/團隊就沒了~
二、RDC結合阿裏雲容器服務實現自動迭代
阿裏雲目前提供了Docker的集群服務,分為3種類型,一種是阿裏雲自己基於原生集群改造的版本、Swarm Mode、K8S,後兩個是新支持的,目前來說體驗體驗就好,不太建議在生產環境用。
具體的阿裏雲容器服務我就不介紹了,感興趣的朋友可以去cs.console.aliyun.com開通並使用。
那麼讓RDC自動部署到容器服務需要如下的步驟:
1.先修改應用的流程,進入項目—-流水線,找到下圖界麵,點擊某個流水線的修改按鈕:
2.調整部署規則,可以按需要刪除或添加新的部署點,環境選擇已有環境,如果此處沒有可用的環境,請進入 應用—–環境—-配置,進行設置,可以指定每個環境對應的docker集群、應用、服務、藍綠發布規則等。
3.調整完成後,保存即可,然後重新運行一次流水線,就OK啦。其實還有一些更高級的用法,比如加開關,日常部署全自動,正式部署由特定權限者手動點確認才能部署等。
是不是超級簡單!
部署到Docker集群的幾個小坑:
1.比如你的容器應用由(nginx+code)組成,而你在RDC中部署目標設置為code,更新後可能出現nginx的link目標還是上一次的集群IP,導致fpm轉發失敗。這個問題,小概率出現,不知是容器的問題還是RDC的問題,大概1000次部署,遇到1次。
2.如果你的應用名稱為中文,比如:門戶網站前端應用,通過RDC自動部署後,容器應用名會變成?????,對使用沒影響,就是看上去怪怪的,應該是2個產品的編碼沒協調好。
三、後記
幾個分享就說到這裏了,在寫分享的過程中發現一些功能經常在迭代,導致反反複複修改文章,如果你在看的時候發現文章和配套搭配不了,請重新按官方文檔進行理解吧~
5篇分享寫的比較淺,主要用作入門,後麵有時間會再寫3篇進階分享,主要聊聊如何用RDC等工具鏈完成一整套的持續集成工作。
文章原文出處:qipangzi.com (個人博客)
最後更新:2017-10-25 17:03:42