本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS 副駕駛員將叢集應用程式部署到 Amazon ECS
由讓·巴蒂斯特·吉盧瓦 (AWS)、馬修·喬治 (AWS) 和托馬斯·斯科特 (AWS) 創建
程式碼儲存庫:叢集範例應用程式 | 環境:生產 | 技術:容器和微服務; 業務生產力; CloudNative DevelopmentAndTesting |
AWS 服務:Amazon ECS; AWS Fargate; Amazon ECR |
Summary
此模式示範如何以兩種方式在 Amazon 彈性容器服務 (Amazon ECS) 叢集中部署容器,方法是使用 Amazon Web Services (AWS) 管理主控台,並使用 AWS 副駕駛員,以示範 AWS Copilot 如何簡化部署任務。
Amazon ECS 是可高度擴展、快速的容器管理服務,可讓您輕鬆執行、停止和管理叢集上的容器。您可用來在服務中執行個別任務或任務的任務定義中會對您的容器進行定義。您可以在由 AWS Fargate 管理的無伺服器基礎設施上執行任務和服務。或者,若要進一步控制基礎設施,您可以在您管理的 Amazon 彈性運算雲端 (Amazon EC2) 執行個體叢集上執行任務和服務。
AWS Copilot 命令列界面 (CLI) 命令可簡化從本機開發環境在 Amazon ECS 上生產就緒容器化應用程式的建置、釋放和操作。AWS Copilot CLI 與支援現代應用程式最佳實務的開發人員工作流程保持一致:從使用基礎設施即程式碼,到建立代表使用者佈建的持續整合和持續交付 (CI/CD) 管道。您可以將 AWS Copilot CLI 用作日常開發和測試週期的一部分,作為 AWS 管理主控台的替代方案。
先決條件和限制
先決條件
限制
Docker 強制執行免費方案中每個 IP 位址每 6 小時 100 張容器映像的提取限制。
架構
目標技術堆疊
AWS 環境透過虛擬私有雲端 (VPC)、公有和私有子網路以及安全群組進行設定
Amazon ECS 叢集
Amazon ECS 服務和任務定義
Amazon Elastic Container Registry (Amazon ECR)
Amazon DynamoDB
Application Load Balancer
AWS Fargate
Amazon Identity and Access Management (IAM)
Amazon CloudWatch
AWS CloudTrail
目標架構
當您為此病毒碼部署範例應用程式時,會在不同的可用區域中建立和部署多個工作。每個任務都會將資料存放在 Amazon DynamoDB 中。當您訪問任務的網頁時,您可以查看所有其他任務的數據。
![使用 AWS 副駕駛部署容器的架構](images/pattern-img/d6bc00e4-f917-4e11-b574-d734e0ab7fd9/images/e509a0b8-7190-47b3-82f8-a57ebf6ee34d.png)
工具
AWS 服務
Amazon ECR — 亞馬遜彈性容器註冊表 (Amazon ECR) 是一種 AWS 受管容器映像登錄服務,安全、可擴展且可靠。Amazon ECR 支援私有儲存庫,其具有使用 IAM 的資源型許可。
Amazon ECS — 亞馬遜彈性容器服務 (Amazon ECS) 是一種高度可擴展、快速的容器管理服務,用於在叢集上執行、停止和管理容器。您可以在由 AWS Fargate 管理的無伺服器基礎設施上執行任務和服務。或者,若要進一步控制基礎設施,您可以在您管理的 Amazon 彈性運算雲端 (Amazon EC2) 執行個體叢集上執行任務和服務。
AWS Copilot — AWS Copilot 提供命令列界面,可協助您在 AWS 上啟動和管理容器化應用程式,包括推送到登錄、建立任務定義以及建立叢集。
AWS Fargate — AWS Fargate 是無伺服器 pay-as-you-go 運算引擎,可讓您專注於建置應用程式,而無需管理伺服器。AWS Fargate 與 Amazon ECS 和亞馬 Amazon Elastic Kubernetes Service(Amazon EKS)兼容。當您使用 Fargate 啟動類型或 Fargate 容量提供者執行 Amazon ECS 任務和服務時,將會在容器中封裝應用程式、指定 CPU 和記憶體需求、定義聯網和 IAM 政策,並啟動應用程式。每個 Fargate 任務都有自己的隔離邊界,不會與其他任務共享基礎內核,CPU 資源,內存資源或 elastic network interface。
亞馬遜 DynamoDB — Amazon DynamoDB 是全受管的 NoSQL 資料庫服務,可提供快速且可預測的效能以及無縫的可擴展性。
E@@ lastic Load Balancing (ELB) — Elastic Load Balancing 會自動將傳入流量分配到一或多個可用區域中的多個目標,例如 EC2 執行個體、容器和 IP 地址。其會監控已註冊目標的運作狀態,並且僅將流量路由至運作狀態良好的目標。當傳入流量隨著時間發生變化,Elastic Load Balancing 會擴展您的負載平衡器。他可以自動擴展以因應絕大多數的工作負載。
工具
Code
您可以在「叢集範例應用程式」存放庫中找到此模式中使用的範例應用程式的程
史诗
任務 | 描述 | 所需技能 |
---|---|---|
克隆存 GitHub 儲庫。 | 使用以下命令克隆示例代碼存儲庫:
| AWS 應用程式開發人員 DevOps |
建立您的 Amazon ECR 儲存庫。 |
如需詳細資訊,請參閱 Amazon ECR 文件中的建立私有存放庫。 | AWS 應用程式開發人員 DevOps |
建置、標記您的 Docker 映像檔,並將其推送至您的 Amazon ECR 儲存庫。 |
要向註冊表驗證您的 Docker 客戶端:
若要建立您的泊塢視窗映像檔:
要標記您的碼頭圖像:
要將 Docker 映像推送到您的存儲庫:
| AWS 應用程式開發人員 DevOps |
部署應用程式堆疊。 |
如需部署 CloudFormation 範本的詳細資訊,請參閱 AWS CloudFormation 文件中的建立堆疊。 | AWS 應用程 DevOps式開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
克隆存 GitHub 儲庫。 | 使用以下命令克隆示例代碼存儲庫:
| AWS 應用程式開發人員 DevOps |
使用 AWS 副駕駛 CLI 將您的容器映像部署到 AWS。 | 在專案的根目錄中使用下列指令,只需一個步驟即可部署應用程式:
然後,您應該可以使用作為輸出提供的 DNS 名稱來訪問應用程序。 | AWS 應用程式開發人員 DevOps |
任務 | 描述 | 所需技能 |
---|---|---|
刪除透過 AWS 管理主控台建立的資源。 | 如果您使用選項 1 (AWS 管理主控台) 部署應用程式堆疊,請在準備好刪除所建立的資源時遵循下列步驟:
| AWS 應用程式開發人員 DevOps |
刪除 AWS 副駕駛建立的資源。 | 如果您使用選項 2 (AWS Copilot CLI) 部署應用程式堆疊,請在準備刪除所建立的資源時,從專案的根目錄執行下列命令:
| AWS 應用程式開發人員 DevOps |
相關資源
安裝或更新最新版本的 AWS CLI (AWS CLI 文件)
使用 AWS 副駕駛員命令列界面 (Amazon ECS 文件)
AWS Fargate 上的 Amazon ECS(Amazon ECR 文檔)
碼頭桌面
(碼頭文檔)