를 사용하여 Amazon ECS Anywhere를 설정하여 온프레미스 컨테이너 애플리케이션 관리 AWS CDK - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

를 사용하여 Amazon ECS Anywhere를 설정하여 온프레미스 컨테이너 애플리케이션 관리 AWS CDK

작성자: Dr. Rahul Sharad Gaikwad(AWS)

코드 리포지토리: amazon-ecs-anywhere-cdk-샘플

환경: PoC 또는 파일럿

기술: 현대화, 컨테이너 및 마이크로서비스 DevOps, 하이브리드 클라우드, 인프라

워크로드: 기타 모든 워크로드

AWS 서비스: AWS CDK, Amazon ECS, AWS 자격 증명 및 액세스 관리

요약

Amazon ECS Anywhere는 Amazon Elastic Container Service(Amazon )의 확장입니다ECS. ECS Anywhere를 사용하여 온프레미스 또는 고객 관리형 환경에서 네이티브 Amazon ECS 작업을 배포할 수 있습니다. 이 기능은 비용을 절감하고 복잡한 로컬 컨테이너 오케스트레이션 및 운영을 완화하는 데 도움이 됩니다. ECS Anywhere를 사용하여 온프레미스 및 클라우드 환경 모두에서 컨테이너 애플리케이션을 배포하고 실행할 수 있습니다. 따라서 팀이 여러 도메인과 기술을 배우거나 복잡한 소프트웨어를 자체적으로 관리할 필요가 없습니다.

이 패턴은 AWS 클라우드 개발 키트(AWSCDK) 스택을 사용하여 ECS Anywhere를 설정하는 단계를 보여줍니다.

사전 조건 및 제한 사항

사전 조건 

  • 활성 상태의 AWS 계정.

  • AWS 명령줄 인터페이스(AWS CLI), 설치 및 구성됨. (AWSCLI설명서AWS의 설치, 업데이트 및 제거CLI를 참조하세요.) 

  • AWS CDK 도구 키트, 설치 및 구성됨. (AWSCDK설명서의 AWS CDK 툴킷을 참조하고 지침에 따라 버전 2를 전역적으로 설치합니다.)

  • 노드 패키지 관리자(npm), AWSCDK에서 에 대해 설치 및 구성됨 TypeScript. (npm 문서에서 Node.js 및 npm 다운로드 및 설치 참조)

제한 사항 

제품 버전

  • AWS CDK 툴킷 버전 2

  • npm 버전 7.20.3 이상

  • Node.js 버전 16.6.1 이상

아키텍처

대상 기술 스택  

  • AWS CloudFormation

  • AWS CDK

  • Amazon ECS Anywhere

  • AWS 자격 증명 및 액세스 관리(IAM)

대상 아키텍처 

다음 다이어그램은 이 패턴으로 구현된 TypeScriptAWSCDK와 함께 를 사용하는 ECS Anywhere 설정의 상위 수준 시스템 아키텍처를 보여줍니다.

  1. AWS CDK 스택을 배포하면 에 CloudFormation 스택이 생성됩니다AWS.

  2. CloudFormation 스택은 Amazon ECS 클러스터 및 관련 AWS 리소스를 프로비저닝합니다.

  3. Amazon ECS 클러스터에 외부 인스턴스를 등록하려면 가상 머신(SSMVM)에 AWS Systems Manager 에이전트( 에이전트)를 설치하고 VM을 AWS Systems Manager 관리형 인스턴스로 등록해야 합니다. 

  4. Amazon ECS 클러스터에 외부 인스턴스로 등록하려면 VM에 Amazon ECS 컨테이너 에이전트 및 Docker도 설치해야 합니다.

  5. 외부 인스턴스가 Amazon ECS 클러스터에 등록 및 구성된 경우 외부 인스턴스로 등록된 VM에서 여러 컨테이너를 실행할 수 있습니다.

ECS AWSCDK와 함께 를 사용하여 어디서나 설정합니다 TypeScript.

자동화 및 규모 조정

이 패턴과 함께 제공되는 GitHub 리포지토리는 를 인프라 코드(IaC ) 도구AWSCDK로 사용하여 이 아키텍처에 대한 구성을 생성합니다. AWS CDK 는 리소스를 오케스트레이션하고 ECS 어디서나 설정할 수 있도록 지원합니다.

도구

코드

이 패턴의 소스 코드는 Amazon ECS Anywhere CDK 샘플 리포지토리 GitHub의 에서 사용할 수 있습니다. 리포지토리를 복제하여 사용하려면 다음 섹션의 지침을 따르세요.

에픽

작업설명필요한 기술

AWS CDK 버전을 확인합니다.

다음 명령을 실행하여 AWS CDK Toolkit의 버전을 확인합니다.

cdk --version

이 패턴에는 AWS CDK 버전 2가 필요합니다. 이전 버전의 AWS 가 있는 경우 AWS CDK 설명서의 지침에 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 리전에 AWS CloudFormation 템플릿을 배포하려면 다음 명령을 실행합니다.

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 install을 참조하세요.

DevOps 엔지니어

프로젝트를 빌드합니다.

다음 명령을 실행하여, 프로젝트를 구축합니다.

npm run build

프로젝트 구축 및 배포에 대한 자세한 내용은 AWS CDK 설명서의 첫 번째 AWS CDK 앱을 참조하세요.

DevOps 엔지니어

프로젝트를 배포합니다.

프로젝트 코드를 배포하려면 다음 명령을 실행합니다.

cdk deploy
DevOps 엔지니어

스택 생성 및 출력을 확인합니다.

https://console.aws.amazon.com/cloudformation에서 AWS CloudFormation 콘솔을 열고 EcsAnywhereStack스택을 선택합니다. 출력 탭에는 외부 VM에서 실행할 명령이 표시됩니다.

DevOps 엔지니어
작업설명필요한 기술

Vagrant를 사용하여 VM을 설정하세요.

데모 목적으로 HashiCorp Vagrant를 사용하여 VM을 생성할 수 있습니다. Vagrant는 휴대용 가상 소프트웨어 개발 환경을 구축하고 유지 관리하기 위한 오픈 소스 유틸리티입니다. Vagrantfile이 있는 루트 디렉터리에서 vagrant up 명령을 실행하여 Vagrant VM을 생성합니다. 자세한 내용은 Vagrant 설명서를 참조하세요.

DevOps 엔지니어

VM을 외부 인스턴스로 등록합니다.

1. vagrant ssh 명령을 사용하여 Vagrant VM에 로그인합니다. 자세한 내용은 Vagrant 설명서를 참조하세요.

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 설명서의 클러스터에 외부 인스턴스 등록을 참조하세요.

DevOps 엔지니어

ECS Anywhere 및 외부 VM의 상태를 확인합니다.

가상 상자가 Amazon ECS 제어 영역에 연결되어 실행 중인지 확인하려면 다음 명령을 사용합니다.

aws ssm describe-instance-information aws ecs list-container-instances --cluster $CLUSTER_NAME
DevOps 엔지니어
작업설명필요한 기술

리소스를 정리하고 삭제합니다.

이 패턴을 수행한 다음에는 추가 요금이 발생하지 않도록 생성한 리소스를 제거해야 합니다. 정리하려면 다음 명령을 실행합니다.

cdk destroy
DevOps 엔지니어

관련 리소스