使用 設定 Amazon ECS Anywhere 來管理內部部署容器應用程式 AWS CDK - AWS 方案指引

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

使用 設定 Amazon ECS Anywhere 來管理內部部署容器應用程式 AWS CDK

由 Rahul Sharad Gaikwad 醫生建立 (AWS)

程式碼儲存庫:amazon-ecs-anywhere-cdk-樣本

環境:PoC 或試行

技術:現代化;容器與微服務 DevOps;混合雲端;基礎設施

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

AWS 服務:AWSCDK;AmazonECS;AWSIdentity and Access Management

Summary

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

此模式示範使用AWS雲端開發套件 (AWS CDK) 堆疊ECS隨時隨地設定的步驟。

先決條件和限制

先決條件

限制

產品版本

  • AWS CDK 工具組第 2 版

  • npm 7.20.3 版或更新版本

  • Node.js 16.6.1 版或更新版本

架構

目標技術堆疊

  • AWS CloudFormation

  • AWS CDK

  • Amazon ECS Anywhere

  • AWS Identity and Access Management (IAM)

目標架構

下圖說明 TypeScript使用此模式實作的 AWS CDK 搭配 使用 ECS Anywhere 設定的高階系統架構。

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

  2. CloudFormation 堆疊會佈建 Amazon ECS叢集和相關AWS資源。

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

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

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

ECS AWSCDK搭配 使用 進行隨處設定 TypeScript。

自動化和擴展

此模式提供的GitHub 儲存庫使用 AWSCDK作為基礎設施作為程式碼 (IaC工具,來建立此架構的組態。AWS CDK 可協助您協調資源並ECS隨時隨地設定。

工具

Code

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

史詩

任務描述所需的技能

驗證AWSCDK版本。

執行下列命令來驗證 AWS CDK Toolkit 的版本:

cdk --version

此模式需要AWSCDK版本 2。如果您有較早版本的 AWS CDK,請依照AWSCDK文件中的指示進行更新。

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 工程師
任務描述所需的技能

複製AWSCDK程式碼儲存庫。

使用 命令複製此模式的 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 cinpm 安裝

DevOps 工程師

建置專案。

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

npm run build

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

DevOps 工程師

部署專案。

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

cdk deploy
DevOps 工程師

驗證堆疊建立和輸出。

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

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

使用 Vagrant 設定您的 VM。

為了示範目的,您可以使用 HashiCorp Vagrant 來建立 VM。Vagrant 是一種開放原始碼公用程式,用於建置和維護可攜式虛擬軟體開發環境。從放置 Vagrantfile 的根目錄執行vagrant up命令,以建立 Vagrant VM。如需詳細資訊,請參閱 Vagrant 文件

DevOps 工程師

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

1. 使用vagrant ssh 命令登入 Vagrant VM。如需詳細資訊,請參閱 Vagrant 文件

2. 建立啟用碼和 ID,您可以使用它向 AWS Systems Manager 註冊 VM,以及啟用外部執行個體。此命令的輸出包含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 文件中的將外部執行個體註冊至叢集

DevOps 工程師

驗證 ECS Anywhere 和外部 VM 的狀態。

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

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

清除和刪除資源。

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

cdk destroy
DevOps 工程師

相關資源