如何為 Amazon ECS 上託管的服務執行藍/綠部署?

2 分的閱讀內容
0

我想為 Amazon Elastic Container Service (Amazon ECS) 上託管的服務執行藍/綠部署。

簡短描述

在執行藍/綠部署的步驟之前,請確定您具備下列項目:

解決方法

建立 AWS Identity and Access Management (IAM) 服務角色

在使用 Amazon ECS 為 AWS CodeDeploy 部署藍/綠類型之前,請先授予 CodeDeploy 服務許可,以代表您更新 ECS 服務。

1.    開啟 IAM 主控台

2.    在導覽窗格中,選擇角色

3.    選擇建立角色

4.    在選擇信任的實體類型區段,選擇 AWS 服務,然後選擇 CodeDeploy

5.    在選取您的使用案例區段中,選擇 CodeDeploy - ECS,然後選擇下一步:許可

**注意:**請保留預設 AWSCodeDeployforECS 政策。此政策包含 CodeDeploy 與 Amazon ECS 和其他服務正確互動所需的許可。

6.    選擇下一步: 標籤

7.    (選用) 輸入標籤名稱,然後選擇下一步: 檢閱

8.    對於角色名稱,請輸入 ecsCodeDeployRole

9.    選擇建立角色

建立 Application Load Balancer

1.    開啟 Amazon EC2 主控台

2.    在導覽窗格中,從負載平衡區段選擇負載平衡器

3.    選擇建立負載平衡器

4.    在選取負載平衡器類型區段中,對於 Application Load Balancer,請選擇建立

5.    對於名稱,請輸入負載平衡器的名稱。

6.    在可用區域區段中,選取建立 Amazon ECS 叢集所在的 VPC。然後,選取任意兩個可存取網際網路的子網路。

7.    選擇下一步: 設定安全設定

8.    選取建立新的安全群組

9.    對於安全群組名稱,請輸入 Sample Security-group

10.   選擇新增規則

11.    對於連接埠範圍,請輸入 8080。對於來源,請輸入 0.0.0.0/0

12.    選擇下一步: 設定路由

13.    對於目標群組,請輸入目標群組名稱。

14.    對於目標類型,請選擇 IP

15.    選擇下一步: 註冊目標,然後註冊目標群組並設定 IP。

16.    選擇下一步:檢閱

17.    選擇建立

建立任務定義

1.    開啟 Amazon ECS 主控台

2.    在導覽窗格中,選擇任務定義

3.    選擇建立新的任務定義

4.    選擇 Fargate,然後選擇下一步

5.   根據您的需求設定任務定義,然後選擇建立

下列範例任務定義使用 AWS Fargate 啟動類型和 Docker Hub 中的 NGINX 映像檔:

{<br>  "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",<br>  "containerDefinitions": [{<br>    "name": "sample-website",<br>    "image": "nginx:latest",<br>    "essential": true,<br>    "portMappings": [{<br>      "hostPort": 80,<br>      "protocol": "tcp",<br>      "containerPort": 80<br>    }]<br>  }],<br>  "requiresCompatibilities": [<br>    "FARGATE"<br>  ],<br>  "networkMode": "awsvpc",<br>  "cpu": "256",<br>  "memory": "512",<br>  "family": "sample-website"<br>}

建立 Amazon ECS 服務

1.    開啟 Amazon ECS 主控台

2.    在導覽窗格的 Amazon ECS 區段中,選擇叢集,然後選擇您的叢集。

3.    在服務標籤上,選擇建立以建立服務。

4.    在設定服務區段中,對於啟動類型,請選取 FARGATE

5.    對於任務定義,請選取您在上一節中建立的任務定義。

6.    對於服務名稱,請輸入服務的名稱。例如: Sample-Website

7.    對於任務數量,請輸入您希望服務執行的任務數目。

8.    在部署區段中,選取藍/綠部署 (由 AWS CodeDeploy 提供支援)

9.    對於 CodeDeploy 的服務角色,請選擇 ecsCodeDeployRole

**注意:**您之前已建立 ecsCodeDeployRole 服務角色。

10.    選擇下一步

11.    在 VPC 和安全群組區段中,選擇您的叢集 VPC 和子網路。

12.    在負載平衡區段中,對於負載平衡器類型,請選擇 Application Load Balancer

13.    對於負載平衡器名稱,請選取您先前建立的負載平衡器。

14.    在要進行負載平衡的容器區段中,選擇新增到負載平衡器

15.    在要進行負載平衡的容器區段中,對於生產接聽程式連接埠,請選取 80:HTTP

16.    選取測試接聽程式核取方塊。

17.    對於測試接聽程式連接埠,請選擇建立新項目,然後輸入 8080 作為接聽程式連接埠。

18.    在其他組態區段中,對於目標群組 1 名稱,請選擇您在建立負載平衡器時建立的目標群組。

19.    對於目標群組 2 名稱,請在 Amazon ECS 主控台中建立名稱為 sample-website-tg-2 的新目標群組。

20.    略過設定 Auto Scaling (選用) 頁面,然後選擇下一步

21.    選擇建立服務

現在,您可以看到自己建立的新服務,其中有一項任務正在執行中。

驗證 Amazon ECS 藍/綠部署是否正常運作

建立藍/綠 Amazon ECS 服務之後,請使用變更建立新的任務定義修訂,然後更新 Amazon ECS 服務。這會在 CodeDeploy 主控台中建立部署。

1.    開啟 Amazon ECS 主控台

2.    從導覽窗格中,選擇任務定義

3.    選取任務定義,選擇建立新修訂版本,然後選擇建立

**注意:**在下列範例中,image 屬性會更新為使用 httpd:2.4

{<br>  "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",<br>  "containerDefinitions": [{<br>    "name": "sample-website",<br>    "image": "httpd:2.4",<br>    "essential": true,<br>    "portMappings": [{<br>      "hostPort": 80,<br>      "protocol": "tcp",<br>      "containerPort": 80<br>    }]<br>  }],<br>  "requiresCompatibilities": [<br>    "FARGATE"<br>  ],<br>  "networkMode": "awsvpc",<br>  "cpu": "256",<br>  "memory": "512",<br>  "family": "sample-website"<br>}

4.    從導覽窗格中,選擇叢集,然後選擇您部署 Amazon ECS 服務的叢集。

5.    在服務標籤上,選取您的 Amazon ECS 服務,然後選擇更新

6.    在設定服務區段中,對於任務定義,請選擇您在步驟 3 中建立的最新修訂版本。

7.    選擇下一步以略過精靈中所有剩餘的頁面,然後選擇更新服務

8.    選擇檢視服務

9.    在部署標籤的部署 ID 欄中,選擇部署 ID 以檢視您的 CodeDeploy 部署。


AWS 官方
AWS 官方已更新 1 年前