AWS的自動部署工具codedeploy概述和主要組件

codedeploy概述:

codedeploy是aws上面的一個自動部署服務,能夠自動的將應用程序部署到EC2實例、本地實例(任意的線上或線下本身的一臺機器)、無實例的lamda函數、ECS上面。git

能夠部署的應用程序包括:代碼、無服務器的lamda函數、web和配置、可執行文件、包、腳本、多媒體文件。github

能夠部署到一個或數千個實例。web

CodeDeploy提供了兩種部署類型選項:

1)就地部署:中止部署組中每一個實例上的應用程序,安裝最新的應用程序修訂版,並啓動並驗證新版本的應用程序。您可使用負載平衡器,以便在部署期間取消註冊每一個實例,而後在部署完成後恢復爲服務。只有使用EC2 / On-Premises計算平臺的部署才能使用就地部署。json

工做原理:建立可部署的內容,添加應用程序規範文件 (AppSpec文件:定義了CodeDeploy執行的部署操做),將可部署內容和AppSpec文件捆綁到存檔文件中,而後上傳到s3或github中,此時的歸檔文件稱爲應用程序修訂版  -->  告訴codedeploy新代碼或部署內容在哪,codedeploy調用一組EC2  -->  每臺EC2上面的EC2實例輪詢codedeploy,肯定在哪得到新的內容和時間  -->  每一個實例上的CodeDeploy代理從S3或GitHub上提取新代碼,並使用AppSpec文件中的指令將內容部署到實例。服務器

2)藍綠部署:藍/綠部署將應用程序原始環境中的流量從新路由到替換環境,環境取決於codedeploy應用程序的計算平臺app

AWS Lambda:流量從 Lambda 函數的一個版本轉移到同一 Lambda 函數的新版本。負載均衡

Amazon ECS:流量從 Amazon ECS 服務中的任務集轉移到同一 Amazon ECS 服務中更新的替換任務集。函數

EC2/本地:流量從原始環境中的一組實例轉移到一組替換實例。測試

全部 AWS Lambda 和 Amazon ECS 部署都是藍/綠部署。EC2/本地部署能夠是就地部署或藍/綠部署。藍綠部署相比較就地部署的優點:spa

1)能夠在新的替換環境中安裝和測試應用程序,在部署的時候只須要從新路由流量就能夠應用到生產環境中;

2)若是是EC2或本地實例,切換回最新的程序版本將更快,更可靠。這是由於只要原始實例沒有被終止,流量就能夠路由回原始實例,而在就地部署中,必須從新部署上一個版本的應用程序來進行回滾;

3)若是生產環境使用的是EC2或本地實例,則會爲藍綠部署預置新的實例,而且新實例是最新的服務器配置,能夠避免生產實例長時間運行出現的問題;

4)若是使用的是lambda計算平臺,則須要控制流量如何從原始地lambda函數版本轉移到新的lambda函數版本。

例:在EC2或本地實例上作藍綠部署:

(使用藍綠部署必須使用AWS的EC2實例,不但是本地實例);若是使用EC2或本地計算平臺必須有一個或多個帶有標識的EC2標籤或EC2 Auto Scaling 組的 EC2 實例(這些實例必須知足:每一個EC2實例必須附加有正確的IAM實例配置文件,而且在每臺實例上安裝運行codedeploy代理);一般,您還會有一個在原始環境中的實例上運行的應用程序修訂,但這對藍/綠部署來講不是必需的。

當建立使用藍綠部署的部署組的時候,能夠選擇如何指定替換環境:{

複製現有 Amazon EC2 Auto Scaling 組:在藍綠部署中,codedeploy將在部署期間爲替換環境建立實例,CodeDeploy 將使用指定的 Amazon EC2 Auto Scaling 組做爲替換環境的模板,其中包括相同數量的正在運行的實例和許多其餘配置選項。

手動選擇實例:使用 Amazon EC2 實例標籤或 Amazon EC2 Auto Scaling 組名稱指定要計爲替換項的實例,選擇了此項,在部署前無需指定替換環境的實例。

操做方式:

1)已有充當原始環境的一些實例或一個 Amazon EC2 Auto Scaling 組。首次運行藍/綠部署時,您一般使用已在就地部署中使用的實例;

2)在codedeploy中建立一個藍綠部署,在其中除了就地部署所需的選項以外,還要指定如下內容:

在藍/綠部署過程期間,將流量從您原始環境路由到替換環境的負載均衡器。

當即將流量從新路由到替換環境仍是等待您手動路由。

流量路由到替換實例的速率。

被替換的實例是終止仍是繼續運行。

3)爲此部署建立了一個部署將會發生如下狀況:

若是選擇複製 Amazon EC2 Auto Scaling 組,則將爲您的替換環境預置實例;

指定部署的應用程序將安裝在替換環境上;

若是在部署組中設置了等待時間,部署將暫停,這是是對替換環境測試和驗證的時間,若是未在等待以前進行手動路由流量,部署將中止;

替換環境中的實例向 Elastic Load Balancing 負載均衡器註冊,流量開始路由到這些實例;

原始環境中的實例將取消註冊,並根據部署組中的規範進行處理,要麼終止,要麼繼續運行。

 

codedeploy的主要組件:

應用:惟一標識要部署的應用程序的名稱。代碼部署使用此名稱 (用做容器), 以確保在部署過程當中引用修訂、部署配置和部署組的正確組合。

計算平臺:codedeploy部署應用程序的平臺。EC2/本地:能夠做爲 Amazon EC2 雲實例或本地服務器的物理服務器實例。使用 EC2或本地計算平臺建立的應用程序能夠包括可執行文件、配置文件和映像等。使用 EC2/本地 計算平臺的部署經過使用就地部署或藍/綠部署類型,管理流量定向到實例的方式。

部署配置:codedeploy在部署期間使用的一組部署規則、部署成功條件、失敗條件。若是部署採用的是EC2或本地實例,能夠爲部署指定最少數量的運行正常實例。

部署組:一組單獨的實例。部署組包含單獨標記的實例或 Amazon EC2 Auto Scaling 組中的 Amazon EC2 實例

部署類型:用於在部署組中的實例上,提供最新的的應用程序修訂的方法。

IAM實例配置文件:一種附加到EC2實例的IAM角色。此配置文件包含了訪問S3和github的訪問權限。

修訂:lambda部署修訂是一種yaml格式或json格式的文件,指定有關要部署的lambda函數的信息。EC2本地部署修訂是一個存檔文件,包含源內容(源代碼、網頁、可執行文件和部署腳本)以及 application specification file (AppSpec file)。AWS Lambda 修訂可存儲在 Amazon S3 中。EC2/本地 修訂存儲在 Amazon S3 或 GitHub 中。

服務角色:一組用於向aws服務授予權限即可以訪問aws服務資源的IAM角色,在codedeploy中,服務角色用於:

讀取應用於實例的標記與實例關聯的EC2 auto scaling 組名,這使codedeploy可以標識它,可將應用程序部署到實例;(使codedeploy對實例有部署的權限,)

對實例、EC2 auto scaling 組和elastic load balancing負載均衡器執行操做;(有執行操做的權利)

將信息發佈到aws SNS主題,以便在發生指定的部署或實例事件時發送通知;(使codedeploy有發送信息到SNS的權利)

檢索cloudwatch警報信息,設置部署的警報監視。

目標版本:將要部署的目標版本

相關文章
相關標籤/搜索