使用 AWS CDK 在任何地方設定 Amazon ECS 來管理現場部署容器應用程式 - AWS 方案指引

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

使用 AWS CDK 在任何地方設定 Amazon ECS 來管理現場部署容器應用程式

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

代碼存儲庫:amazon-ecs-anywhere-cdk-示

環境:PoC 或試點

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

工作負載:所有其他工作

AWS 服務:AWS CDK;Amazon ECS;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) 堆疊設定 ECS 任何地方的步驟。

先決條件和限制

先決條件

限制

產品版本

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

  • 故宮版本 7.20.3 或更新版本

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

架構

目標技術堆疊

  • AWS CloudFormation

  • AWS CDK

  • Amazon ECS Anywhere

  • AWS Identity and Access Management (IAM)

目標架構

下圖說明使用 AWS CDK 進行 ECS Anywhere 設定的高階系統架構 TypeScript,如此模式所實作。

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

  2. 該 CloudFormation 堆疊佈建了一個 Amazon ECS 叢集和相關的 AWS 資源。

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

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

  5. 使用 Amazon ECS 叢集註冊和設定外部執行個體後,它可以在已註冊為外部執行個體的 VM 上執行多個容器。

自動化和規模

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

工具

Code

此模式的原始程式碼可在 GitHub Amazon ECS Anywhere 不在 CDK 範例儲存庫中取得。若要複製並使用儲存庫,請遵循下一節中的指示。

史诗

任務描述所需技能

驗證 AWS CDK 版本。

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

cdk --version

此病毒碼需要版本 1.116.0 或更新版本。如果您使用的是舊版 AWS CDK,請按照 AWS CDK 文件中的指示進行更新。

DevOps 工程師

設定 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]:
DevOps 工程師
任務描述所需技能

複製 AWS CDK 程式碼儲存庫。

使用以下命令克隆此模式的 GitHub 代碼存儲庫:

git clone https://github.com/aws-samples/amazon-ecs-anywhere-cdk-samples.git
DevOps 工程師

引導環境。

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

cdk bootstrap <account-number>/<Region>

如需詳細資訊,請參閱 AWS CDK 文件中的啟動安裝

DevOps 工程師
任務描述所需技能

安裝套件相依性並編譯 TypeScript 檔案。

安裝套件相依性,並執行下列命令來編譯 TypeScript 檔案:

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

這些指令會安裝範例存放庫中的所有套件。 

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

$npm ci  

—或—

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

如需詳細資訊,請參閱 npm 文件中的 npm ci 和 npm 安裝。

DevOps 工程師

建置專案。

若要建置專案程式碼,請執行下列命令:

npm run build

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

DevOps 工程師

部署專案。

若要部署專案程式碼,請執行下列命令:

cdk deploy
DevOps 工程師

驗證堆棧的創建和輸出。

https://console.aws.amazon.com/cloudformation 開啟 AWS CloudFormation 主控台,然後選擇EcsAnywhereStack堆疊。 [出] 索引標籤會顯示要在外部 VM 上執行的命令。

DevOps 工程師
任務描述所需技能

通過使用流浪者設置您的虛擬機。

出於演示目的,您可以使用HashiCorp 流浪者創建虛擬機。Vagrant 是用於構建和維護便攜式虛擬軟件開發環境的開源實用程序。通過從放置 Vagrantfile 的根目錄中運行vagrant up命令來創建一個流浪虛擬機。有關更多信息,請參閱流浪文檔

DevOps 工程師

將您的 VM 註冊為外部執行個體。

1. 使用vagrant ssh命令登錄到流浪虛擬機。有關更多信息,請參閱流浪文檔

2. 建立啟動碼和 ID,您可以用來向 AWS Systems Manager 註冊您的虛擬機器,以及啟用外部執行個體。此命令的輸出包括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>

如需有關設定和註冊虛擬機器的詳細資訊,請參閱 Amazon ECS 文件中的將外部執行個體註冊到叢集

DevOps 工程師

驗證 ECS 無所不在和外部虛擬機器的狀態。

若要驗證虛擬盒是否已連接至 Amazon ECS 控制平面並執行,請使用下列命令:

aws ssm describe-instance-information aws ecs list-container-instances --cluster $CLUSTER_NAME
DevOps 工程師
任務描述所需技能

清理和刪除資源。

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

cdk destroy
DevOps 工程師

相關資源