應用中心最佳實踐之 -- Git資料源釋出實戰
适用場景
- 希望使用應用中心
- 有自己git倉庫(包括github,bitbucket,自己搭建的gitlab)
- 部署模闆托管在git
前置資源準備
- 已經開通應用中心服務,參考連結 https://help.aliyun.com/document_detail/169923.html
- 部署模闆托管在公網可以通路倉庫中,比如 https://github.com/xianlubird/argocd-example-apps
應用中心手動部署托管在Git上的Kubernetes 模闆
這裡我們使用此模闆作為樣例,本模闆包含一個Ingress+Service+Deployment,對外通過Ingress提供服務。部署模闆的全量連結在此
https://github.com/xianlubird/argocd-example-apps/blob/master/ingress-demo/deploy.yaml。
建立應用
建立應用的所有參數如下所示,這裡的部署政策選擇手動。
Git倉庫位址需要輸入https或者git協定的位址,結尾需要以.git結尾,與git clone 指令需要的位址相同。這裡的Git版本就是指branch或者tag,路徑指的是存放部署模闆的檔案夾名稱,這裡要求部署模闆必須存放在檔案夾内。
目标叢集預設的In-Cluster 指的就是部署應用中心控制器的本叢集,選擇後顯示的
https://kubernetes.default.svc指的為本叢集的ApiServer 位址,因為是本叢集内部連接配接,是以使用的是内部Service 名稱。命名空間就是希望這個應用安裝到哪個命名空間,這裡要求必須指定一個存在的命名空間内。

部署應用
建立應用完畢後,我們就可以看到應用的全量拓撲結構,如下圖所示:
這裡的黃色的小辨別OutOfSync代表的意思是,目前模闆描述的資源和Kubernetes叢集内的實際情況不一緻,也就是說,目前的應用模闆并沒有部署到叢集中,下面我們點選右上角的部署按鈕,将應用部署到叢集中。
稍等片刻應用就會部署完畢,整個部署過程會實時的展現在使用者面前,最終的部署樣式如圖所示。這裡最下方的狀态顯示為Healthy 和Synced,表示目前模闆已經部署到Kubernetes 叢集中,且已經符合部署模闆的期望狀态。
除了檢視整個應用的部署拓撲外,我們還可以檢視應用的流量結構,點選右上角的圖示就可以觀察這個應用的流量拓撲情況。
更新應用
下面我們來示範一下如何更新應用,首先我們在github上更新一下應用模闆,将鏡像的tag由blue改為green,如這個commit 為例
https://github.com/xianlubird/argocd-example-apps/commit/dbc1296d20b2a92f0fc4826af2448b452d4a40ca。更新完畢後,我們回到應用中心頁面,點選重新整理按鈕,可以看到如下的圖檔:
這裡的OutOfSync就是表明,部署模闆已經發生了變化,但是Kubernetes叢集内的資源和git上托管的模闆不一緻,如果想檢視具體的版本差異,可以點選版本差異按鈕,檢視具體的不同點。
這裡就有詳細的對比,展示目前git上的變更與Kubernetes叢集内實際應用資源之間的關系。下面我們就可以部署這個更新。
可以看到部署模闆裡面,應用中心識别了隻有Deployment 發生了變化,我們點選部署就可以完成應用的更新。更新完畢後,可以看到鏡像已經變成了我們指定的green
復原應用
首先我們檢視一下目前釋出版本的曆史記錄,通過點選曆史版本就可以看到。
這裡會根據git commit和git 送出資訊來描述每個版本的具體情況,我們可以選取任何一個版本進行復原,比如這裡我們選取第一個版本進行復原。
復原過程中,可以重新整理檢視具體的情況,復原完畢後,可以看到鏡像已經回到了blue,但是整個應用的狀态是OutOfSync,這個是因為和git裡面存放的部署模闆不一緻導緻的。
應用中心自動部署托管在Git上的Kubernetes模闆
前面我們介紹了手動的部署應用,每次更新完畢git後,手動的觸發應用的更新。下面我們來介紹另一種方式,可以自動化的更新應用。
建立自動更新的應用
建立應用與前面的手動更新的應用差別不大,主要就是更新方式的選擇,隻需要部署政策選擇為自動就可以了,其他參數和前面的手動更新應用是一緻的。
這裡的修整資源和自我修複我們可以不選擇,具體的介紹如下。
建立完畢和上面的應用是相同的,下面我們來看一下更新的操作。
自動更新應用
首先我們還是需要去git上更新一下應用,這裡我們将green更新為blue,如這個commit 一緻
https://github.com/xianlubird/argocd-example-apps/commit/bfaa85784835281e7e30e4d0e88ab7cd9ff5c4b2。更新完畢後,稍等一會,大約1min,重新整理一下應用就會發現,應用已經被自動更新,新的鏡像為blue,同時釋出記錄也已經生成,一切都是自動的,不需要使用者手動介入任何事情,隻要把模闆送出上去,就可以完成自動化的釋出,同時釋出記錄也會記錄在冊。