您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何理解AWS的自動部署工具codedeploy概述和主要組件,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
codedeploy是aws上面的一個自動部署服務,可以自動的將應用程序部署到EC2實例、本地實例(任意的線上或線下自己的一臺機器)、無實例的lamda函數、ECS上面。
可以部署的應用程序包括:代碼、無服務器的lamda函數、web和配置、可執行文件、包、腳本、多媒體文件。
可以部署到一個或數千個實例。
1)就地部署:停止部署組中每個實例上的應用程序,安裝最新的應用程序修訂版,并啟動并驗證新版本的應用程序。您可以使用負載平衡器,以便在部署期間取消注冊每個實例,然后在部署完成后恢復為服務。只有使用EC2 / On-Premises計算平臺的部署才能使用就地部署。
工作原理:創建可部署的內容,添加應用程序規范文件 (AppSpec文件:定義了CodeDeploy執行的部署操作),將可部署內容和AppSpec文件捆綁到存檔文件中,然后上傳到s3或github中,此時的歸檔文件稱為應用程序修訂版 --> 告訴codedeploy新代碼或部署內容在哪,codedeploy調用一組EC2 --> 每臺EC2上面的EC2實例輪詢codedeploy,確定在哪獲得新的內容和時間 --> 每個實例上的CodeDeploy代理從S3或GitHub上提取新代碼,并使用AppSpec文件中的指令將內容部署到實例。
2)藍綠部署:藍/綠部署將應用程序原始環境中的流量重新路由到替換環境,環境取決于codedeploy應用程序的計算平臺。
AWS Lambda:流量從 Lambda 函數的一個版本轉移到同一 Lambda 函數的新版本。
Amazon ECS:流量從 Amazon ECS 服務中的任務集轉移到同一 Amazon ECS 服務中更新的替換任務集。
EC2/本地:流量從原始環境中的一組實例轉移到一組替換實例。
所有 AWS Lambda 和 Amazon ECS 部署都是藍/綠部署。EC2/本地部署可以是就地部署或藍/綠部署。藍綠部署相比較就地部署的優勢:
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部署應用程序的平臺。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警報信息,設置部署的警報監視。
關于如何理解AWS的自動部署工具codedeploy概述和主要組件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。