AWS的自動部署工具codedeploy 負載均衡器和github

Elastic Load Balancing 提供了三種可用於 CodeDeploy 部署的負載均衡器:Classic Load Balancer、Application Load Balancer 和 Network Load Balancer。html

傳統負載均衡器

路由和負載均衡在傳輸層 (TCP/SSL) 或應用程序層 (HTTP/HTTPS) 進行。它支持 EC2-Classic 或 VPC。

應用程序負載均衡器

路由和負載均衡在應用程序層 (HTTP/HTTPS) 進行,並支持基於路徑的路由。它能夠將請求路由到您的 Virtual Private Cloud (VPC) 中每一個 EC2 實例或容器實例上的端口。git

注意

應用程序負載均衡器 目標組必須有一個目標類型 instance;github

Network Load Balancer瀏覽器

路由和負載均衡在傳輸層(TCP/UDP 層,即第 4 層)進行,依據是從 TCP 數據包標頭中而非從數據包內容中提取的地址信息。Network Load Balancer 能夠處理突發流量、保留客戶端的源 IP 以及在負載均衡器的使用壽命內使用固定 IP併發

負載均衡器在 CodeDeploy 部署中的做用

在 CodeDeploy 部署期間,負載均衡器會阻止 Internet 流量路由到未就緒的實例,目前正在部署的實例,或環境再也不須要的實例。可是,負載均衡器的具體做用取決於它是用於藍/綠部署仍是就地部署。app

注意負載均衡

Elastic Load Balancing 負載均衡器的使用在藍/綠部署中爲必需,在就地部署中爲可選。ide

藍/綠部署

依託於 Elastic Load Balancing 負載均衡器來從新路由實例流量是 CodeDeploy 藍/綠部署的基礎。ui

在藍/綠部署期間,負載均衡器根據您指定的規則,容許將流量路由到已部署最新應用程序修訂的部署組中的新實例 (替換環境),而後阻止運行較早應用程序修訂的舊實例的流量 (原始環境)。spa

替換環境中的實例註冊負載均衡器後,將取消註冊原始環境中的實例,並根據您的須要終止。

對於藍/綠部署,您能夠在部署組中指定 傳統負載均衡器、應用程序負載均衡器 或 Network Load Balancer。您能夠使用 CodeDeploy 控制檯或 AWS CLI 將負載均衡器添加到部署組。

就地部署

在就地部署的過程當中,負載均衡器能夠防止 Internet 流量路由到要部署的實例;實例部署完成後,可恢復對該實例的流量路由。

若是就地部署期間未使用負載均衡器,Internet 流量在部署過程當中可能仍會引向該實例。所以,您的客戶可能會遇到中斷、不完整或過期的 Web 應用程序。在將 Elastic Load Balancing 負載均衡器用於就地部署時,部署組中的實例將從負載均衡器取消註冊,更新爲最新的應用程序修訂,並在部署成功後向負載均衡器從新註冊同一部署組。

對於就地部署,您能夠指定 傳統負載均衡器、應用程序負載均衡器 或 Network Load Balancer。您能夠在配置部署組的過程當中指定負載均衡器,或使用 CodeDeploy 提供的腳本實施負載均衡器。

能夠使用 CodeDeploy 控制檯或 AWS CLI 將負載均衡器添加到部署組;

使用腳本爲就地部署設置負載均衡器

經過執行如下過程當中的步驟,使用部署聲明週期腳本爲就地部署設置負載均衡。

注意

您應該僅在使用腳本爲就地部署設置負載均衡器時使用 CodeDeployDefault.OneAtATime 部署配置。不支持併發運行,而且 CodeDeployDefault.OneAtATime 設置可確保腳本的順序執行;

在 GitHub 上的 CodeDeploy 示例存儲庫中,咱們提供了說明和示例,您可進行調整以使用 CodeDeploy Elastic Load Balancing 負載均衡器。這些存儲庫包含三個示例腳本 — register_with_elb.shderegister_from_elb.sh 和 common_functions.sh — 這些腳本提供了開始操做所需的所有代碼。只需編輯這 3 個腳本中的佔位符,而後從 appspec.yml 文件中引用這些腳本。

要使用已註冊到 Elastic Load Balancing 負載均衡器的 Amazon EC2 實例設置 CodeDeploy 中的就地部署,請執行如下操做:

  1. 下載要用於就地部署的負載均衡器的類型的示例:

  2. 確保每一個目標 Amazon EC2 實例均已安裝 AWS CLI。

  3. 確保每一個目標 Amazon EC2 實例均已附加至少一個 IAM 實例配置文件,而且具備 elasticloadbalancing:* 和 autoscaling:* 權限。

  4. 將部署生命週期事件腳本 (register_with_elb.shderegister_from_elb.sh 和 common_functions.sh) 包含在應用程序的源代碼目錄中。

  5. 在應用程序修訂的 appspec.yml 中,提供有關 CodeDeploy 在 ApplicationStart 事件期間運行 register_with_elb.sh 腳本以及在 ApplicationStop 事件期間運行 deregister_from_elb.sh 腳本的說明。

  6. 若是實例屬於某個 Amazon EC2 Auto Scaling 組,則可跳過此步驟。

    在 common_functions.sh 腳本中:

    • 若是您使用的是 傳統負載均衡器,請在 ELB_LIST="" 中指定 Elastic Load Balancing 負載均衡器的名稱,並對文件中的其餘部署設置進行所需的任何更改。

  7. 若是您使用的是 應用程序負載均衡器 或 Network Load Balancer,請在 TARGET_GROUP_LIST="" 中指定 Elastic Load Balancing 目標組的名稱,並對文件中的其餘部署設置進行所需的任何更改。
  8. 將應用程序的源代碼、appspec.yml 和部署生命週期事件腳本綁定到一個應用程序修訂中,而後上傳該修訂。將該修訂部署到 Amazon EC2 實例。在部署期間,部署生命週期事件腳本將向負載均衡器取消註冊 Amazon EC2 實例,等待鏈接耗盡,而後在部署完成後向負載均衡器從新註冊 Amazon EC2 實例。

從 GitHub 部署 CodeDeploy 修訂

要將應用程序修訂從 GitHub 存儲庫部署到實例,請執行如下步驟:

  1. 建立與 CodeDeploy 和將部署到的 Amazon EC2 實例類型兼容的修訂。

    要建立兼容版本,請按照計劃 CodeDeploy 的修訂將應用程序規範文件添加到 CodeDeploy 的修訂中的說明執行操做。

  2. 使用 GitHub 帳戶將您的修訂添加到 GitHub 存儲庫。

  3. 使用 CodeDeploy 控制檯中的建立部署頁或使用 AWS CLI create-deployment 命令將修訂從 GitHub 存儲庫部署到已配置爲在 CodeDeploy 部署中使用的目標實例。

    若是您須要調用 create-deployment 命令,則必須先使用此控制檯的建立部署頁,針對指定應用程序爲 CodeDeploy 授予表明您的首選 GitHub 帳戶與 GitHub 交互的權限。每一個應用程序只需進行一次這樣的操做。

github和codedeploy之間的交互:

GitHub 對 CodeDeploy 中的應用程序進行的身份驗證

在向 CodeDeploy 提供與 GitHub 交互的權限後,GitHub 帳戶和應用程序之間的關聯將存儲在 CodeDeploy 中。您能夠將應用程序連接到其餘 GitHub 帳戶。也能夠撤消 CodeDeploy 與 GitHub 交互的權限。

將 GitHub 帳戶連接到 CodeDeploy 中的應用程序

  1. Sign in to the AWS 管理控制檯 and open the CodeDeploy console at https://console.aws.amazon.com/codedeploy.

    注意

    使用您在 CodeDeploy 入門中使用的相同帳戶或 IAM 用戶信息登陸。

  2. 在導航窗格中,展開 Deploy (部署),而後選擇 Applications (應用程序)

  3. 選擇要連接到其餘 GitHub 帳戶的應用程序。

  4. 若是應用程序沒有部署組,請選擇建立部署組來建立一個部署組

  5. 部署中,選擇建立部署

    注意

    無需建立新的部署。這是目前將其餘 GitHub 帳戶連接到應用程序的惟一方式。

  6. 部署設置中,對於修訂類型,選擇個人應用程序將存儲在 GitHub 中

  7. 執行如下操做之一:

    • 要爲 CodeDeploy 應用程序建立與 GitHub 帳戶的鏈接,在單獨的 Web 瀏覽器選項卡中註銷 GitHub。在 GitHub 令牌名稱中,鍵入一個名稱來標識此鏈接,而後選擇鏈接到 GitHub。該網頁將提示受權 CodeDeploy 與應用程序的 GitHub 進行交互。繼續執行步驟 10。

    • 要使用已建立的鏈接,請在 GitHub 令牌名稱中,選擇其名稱,而後選擇鏈接到 GitHub。繼續執行步驟 8。

    • 要建立與其餘 GitHub 帳戶的鏈接,在單獨的 Web 瀏覽器選項卡中註銷 GitHub。在 GitHub 令牌名稱中,鍵入一個名稱來標識此鏈接,而後選擇鏈接到 GitHub。該網頁將提示受權 CodeDeploy 與應用程序的 GitHub 進行交互。繼續執行步驟 10。

  8. 若是還沒有登陸 GitHub,請按照 Sign in 頁上的說明執行操做以使用要將應用程序連接到的 GitHub 帳戶進行登陸。

  9. 選擇 Authorize application。GitHub 向 CodeDeploy 提供表明所選應用程序的已登陸 GitHub 帳戶與 GitHub 交互的權限。

  10. 若是您須要建立部署,請選擇 Cancel

撤消 CodeDeploy 的與 GitHub 交互的權限

  1. 使用要撤消 CodeDeploy 權限的 GitHub 帳戶的憑證登陸到 GitHub

  2. 打開 GitHub 應用程序頁,在已受權應用程序列表中找到 CodeDeploy,而後按照用於撤消應用程序受權的 GitHub 過程執行操做。

CodeDeploy 與私有和公有 GitHub 存儲庫進行交互

CodeDeploy 支持從私有和公有 GitHub 存儲庫部署應用程序。當您向 CodeDeploy 授予表明您訪問 GitHub 的權限後,CodeDeploy 針對您的 GitHub 帳戶有權訪問的全部私有 GitHub 存儲庫都將擁有讀寫訪問權。不過,CodeDeploy 只能從 GitHub 存儲庫進行讀取。它將不會對任何私有 GitHub 存儲庫進行寫入。

CodeDeploy 與組織託管的 GitHub 存儲庫進行交互

默認狀況下,組織託管的 GitHub 存儲庫(與帳戶本身的私有或公有存儲庫相對)未授予對第三方應用程序(包括 CodeDeploy)的訪問權。若是在 GitHub 中啓用組織的第三方應用程序限制,而且您嘗試從其 GitHub 存儲庫中部署代碼,則部署將失敗。可經過兩種方式解決此問題。

  • 做爲組織成員,您能夠要求組織全部者批准對 CodeDeploy 的訪問權。請求此訪問權的步驟取決於您是否已受權單個帳戶訪問 CodeDeploy

    使用 CodeDeploy 自動從 CodePipeline 進行部署

    當源代碼發生更改時,您能夠觸發從 CodePipeline 進行的部署

相關文章
相關標籤/搜索