透過 AWS CDK 設定 Amazon ECS Anywhere 可管理現場部署容器應用程式 - AWS Prescriptive Guidance

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

透過 AWS CDK 設定 Amazon ECS Anywhere 可管理現場部署容器應用程式

由拉胡爾·沙拉德·蓋克瓦德(AWS)創建

環境:PoC 或試驗

技術:現代化;容器與微服務;DevOps;混合雲;基礎架構

工作負載:所有其他工作負載

AWS 服務:AWS CDK;Amazon ECS;AWS CDK;AWS Identity and Access Management

Summary

Amazon ECS Anywhere 可見是 Amazon Elastic Container Service (Amazon ECS) 的延伸。您可以使用 ECS 無所不在,在現場部署或客戶管理的環境中部署原生 Amazon ECS 任務。此功能有助於降低成本,並減少複雜的本機容器協調流程和作業。您可以使用 ECS Anywhere 在內部部署和雲端環境中部署和執行容器應用程式。它不再需要您的團隊學習多個領域和技能集,或是自行管理複雜軟體。

此模式示範使用 AWS Cloud Development Kit (AWS CDK) 堆疊。

先決條件和限制

先決條件

限制

產品版本

  • AWS CDK 工具組 1.116.0 或更新版本

  • NPM 版本 7.20.3 或更高版本

  • Node.js 版本 16.6.1 或更新版本

Architecture

目標技術堆疊

目標架構

下圖說明了使用 AWS CDK 與 TypeScript 的 ECS 無所不在設置的高級系統架構,如此模式實現。

  1. 當您部署 AWS CDK 堆疊時,它會在 AWS 上建立 CloudFormation 堆疊。

  2. 雲端形式堆疊佈建一個 Amazon ECS 叢集和相關的 AWS 資源。

  3. 若要向 Amazon ECS 叢集註冊外部執行個體,您必須在虛擬機器 (VM) 上安裝 AWS Systems Manager 代理程式 (SSM 代理程式),並將虛擬機器註冊為 AWS Systems Manager 受管執行個體。 

  4. 您還必須在虛擬機器上安裝 Amazon ECS 容器代理程式和 Docker,才能將其註冊為 Amazon ECS 叢集的外部執行個體。

  5. 當外部執行個體註冊並使用 Amazon ECS 叢集配置時,它可以在虛擬機器上執行多個容器,該虛擬機器已註冊為外部執行個體。

自動化和擴充

所以此GitHub 儲存庫使用 AWS CDK 做為基礎設施即程式碼 (IAC) 工具來建立此架構的組態。AWS CDK 可協助您協調資源並在任何地方設定 ECS。

Tools

  • AWS CDK— AWS Cloud Development Kit (AWS CDK) 可協助您將雲端基礎設施定義為使用五種支援的程式設計語言之一的程式碼:TypeScript、JavaScript、Python、Java 和 C#。

  • AWS CLI— AWS 命 Command Line Interface (AWS CLI) 是統一的工具,可提供一致的命令列界面,用於與 AWS 服務和資源互動。

Code

此模式的來源碼可在 GitHub 上取得,ECS 隨處可見 CDK 樣品儲存庫。若要複製並使用儲存庫,請依照下一節中的指示進行。

Epics

任務描述所需的技能
驗證 AWS CDK 版本。

執行下列命令,驗證 AWS CDK 工具組版本:

cdk --version

此病毒碼需要 1.116.0 版或更新版本的。如果您有舊版的 AWS CDK,請按照AWS CDK 文件以更新它。

裝置工程師
設定 AWS 登入資料。

若要設定登入資料,請執行aws configure命令並依照提示操作:

$aws configure AWS Access Key ID [None]: <your-access-key-ID> AWS Secret Access Key [None]: <your-secret-access-key> Default region name [None]: <your-Region-name> Default output format [None]:
裝置工程師
任務描述所需的技能
複製 AWS CDK 程式碼存放庫。

使用以下命令複製此模式的 GitHub 程式碼存放庫:

git clone https://github.com/aws-samples/amazon-ecs-anywhere-cdk-samples.git
裝置工程師
引導環境。

若要將 AWS CloudFormation 範本部署到您要使用的帳戶和 AWS 區域,請執行下列命令:

cdk bootstrap <account-number>/<Region>

如需詳細資訊,請參閱「」引導在 AWS CDK 文件中。

裝置工程師
任務描述所需的技能
安裝軟件包依賴關係和編譯 TypeScript 文件。

安裝軟件包依賴關係,並通過運行以下命令編譯 TypeScript 文件:

$cd amazon-ecs-anywhere-cdk-samples $npm install $npm fund 

這些命令會從範例儲存庫安裝所有套件。 

重要:如果您收到任何關於遺失套件的錯誤,請使用下列其中一項命令:

$npm ci  

—或—

$npm install -g @aws-cdk/<package_name>

如需詳細資訊,請參閱「」npm CInpm 安裝在 npm 文檔中。

裝置工程師
建置專案。

若要建置專案程式碼,請執行命令︰

npm run build

如需建置和部署專案的詳細資訊,請參閱您的第一個 AWS CDK 應用程式在 AWS CDK 文件中。

裝置工程師
部署專案。

若要部署專案程式碼,請執行命令︰

cdk deploy
裝置工程師
驗證堆疊建立和輸出。

開啟位於 的 AWS CloudFormation 主控台https://console.aws.amazon.com/cloudformation ,然後選擇EcsAnywhereStack堆疊。 所以此輸出索引標籤會顯示要在外部虛擬機器上執行的命令。

裝置工程師
任務描述所需的技能
通過使用流浪漢設置您的虛擬機。

為了演示目的,您可以使用 HashiCorpVagrant以建立虛擬機器。Vagrant 是構建和維護便攜式虛擬軟件開發環境的開放原始碼公用程式。通過運行vagrant up命令從放置流浪文件的根目錄中。如需詳細資訊,請參閲 。流浪者文件

裝置工程師
將您的虛擬機器註冊為外部執行個體。

1. 登錄到流浪者虛擬機器,通過使用vagrant ssh命令。如需詳細資訊,請參閲 。流浪者文件

2. 建立可用來向 AWS Systems Manager 註冊 VM 以及啟用外部執行個體的啟用碼和 ID。此命令的輸出包括ActivationIdActivationCode有效值: 

aws ssm create-activation --iam-role EcsAnywhereInstanceRole | tee ssm-activation.json

3. 匯出啟用 ID 和代碼值:

export ACTIVATION_ID=<activation-ID> export ACTIVATION_CODE=<activation-code>

4. 將安裝指令碼下載到您的現場部署伺服器或 VM:

curl -o "ecs-anywhere-install.sh" "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh" && sudo chmod +x ecs-anywhere-install.sh

5. 在您的現場部署伺服器或 VM 上執行安裝指令碼:

sudo ./ecs-anywhere-install.sh \     --cluster test-ecs-anywhere \      --activation-id $ACTIVATION_ID \      --activation-code $ACTIVATION_CODE \     --region <Region>

如需 VM 設定和註冊的詳細資訊,請參閱將外部執行個體註冊到叢集在 Amazon ECS 文件中取得。

裝置工程師
確認 ECS 無所不在和外部虛擬機器的狀態。

若要驗證您的虛擬盒子是否已連線到 Amazon ECS 控制平面並在執行中,請使用下列命令:

aws ssm describe-instance-information aws ecs list-container-instances --cluster $CLUSTER_NAME
裝置工程師
任務描述所需的技能
清除並刪除資源。

執行此模式之後,您應該移除建立的資源,避免產生任何進一步的費用。若要清理,請執行下列命令:

cdk destroy
裝置工程師

相關資源