CloudFormation에서 시작하는 최초의 ECS(with Blue/Green Deployment)

소개



요 전날, 2018년 8월에 쓴 「 Laravel 애플리케이션을 로컬 또는 AWS에서 Docker로 이동 」라고 하는 기사가 100 LGTM 에 도달했습니다.
2021년 2월 현재 제가 쓴 기사 중 가장 LGTM 되고 있는 기사로 해, 올해 들어도 LGTM 되고 있는 것으로부터 관심의 높은 내용일까라고 생각하고 있다 합니다.
그렇다고는 해도, 3년 가까이 경과하고 있는 기사이기 때문에, 구축 방법도 포함해 업데이트하고 싶습니다.
이 기사에서는, CloudFormation 를 사용해, 몇개의 커멘드를 두드리는 것으로, 짧은 단계로 ECS 환경을 구축해 갑니다.

구축을 시작하기 전에 해 두는 것



구축을 시작하기 전에 해 두는 것을 이하에 나타냅니다.
  • AWS CLI 설치
  • AWS CLI 버전 2 설치, 업데이트 및 제거 - AWS Command Line Interface

  • aws configure --profile=$(profile)에 의한 자격 증명 설정
  • 구성 및 자격 증명 파일 설정 - AWS Command Line Interface

  • Docker 설치
  • Get Started with Docker | Docker
  • ECRDocker 이미지를 푸시할 때 필요합니다

  • Windows 의 경우, Make 커멘드를 사용할 수 있도록 해 둔다
  • Windows 10에서 make하고 싶다 - Qiita

  • githubpersonal access token 만들기
  • 개인 액세스 토큰 사용 - GitHub Docs
  • repoadmin:repo_hook 권한을 선택하십시오
  • CodePipeline 에 의한 배포에 필요합니다


  • 막상, 구축


    CloudFormation의 템플릿과 간단한 응용 프로그램은 imunew/ecs-blue-green-demo에 있습니다.
    리포지토리를 fork 하고 git clone 합니다.
    $ git clone [email protected]:{forkしたアカウント}/ecs-blue-green-demo.git
    $ cd ecs-blue-green-demo
    

    이하, imunew/ecs-blue-green-demo 를 사용해 구축해 갑니다.

    1. VPC , Subnet ,... LoadBalancer 구축



    다음과 같이 make 명령을 실행합니다.
    $ make deploy-vpc-subnet profile=$(profile)
    $ make deploy-nat-instance profile=$(profile)
    $ make deploy-network profile=$(profile)
    $ make deploy-security-group profile=$(profile)
    $ make deploy-load-balancer profile=$(profile)
    

    2. ECR 리포지토리 생성 및 Docker 이미지 푸시



    먼저 ECR 리포지토리를 만듭니다.
    $ make deploy-ecs-ecr profile=$(profile)
    

    그런 다음 Docker 이미지를 빌드하고 ECR로 푸시합니다.
    $ make push-docker-images profile=$(profile)
    

    3. ECS 클러스터 및 서비스 구축


    ECS 클러스터와 서비스를 빌드합니다.
    $ make deploy-ecs-cluster profile=$(profile)
    $ make deploy-ecs-service profile=$(profile)
    
    ECS 서비스가 정상적으로 구축되고 있으면, 그 시점에서 LoadBalancerDNS 로부터 엔드 포인트에 액세스 가능하게 될 것입니다.
    ( phpinfo() 하고 있는 페이지가 표시되어야 합니다.)



    4. GitHub 개인 액세스 토큰을 Secrets Manager에 등록합니다.


    access-token 는 미리 작성한 개인 액세스 토큰을 지정합니다.
    $ make deploy-secrets-github profile=$(profile) access-token=$(access-token)
    

    5. CodeDeploy 애플리케이션 및 배포 그룹 만들기


    CodeDeploy 응용 프로그램 및 배포 그룹을 만듭니다.
    $ make deploy-code-deploy profile=$(profile)
    

    6. CodePipeline 만들기


    CodePipeline 를 작성합니다.
    $ make deploy-code-pipeline profile=$(profile)
    

    Blue/Green 배포



    포크 한 리포지토리에 코드를 푸시하면 아래와 같이 CodePipeline가 움직입니다.


    Deploy 스테이지의 詳細 링크를 클릭하면 Blue/Greenデプロイ 의 상세를 아래와 같이 확인할 수 있습니다.



    결론


    ECS 환경을 구축할 수 있었습니까?
    포크한 리포지토리를 여러가지 커스터마이즈 하거나, 나름대로의 템플릿을 만들어 보세요.
    뭔가 막힌 곳이 있거나, 의견 등 있으면, 이 기사에 코멘트 주시는지, imunew/ecs-blue-green-demoissue 인가 pull-request 주세요.

    그럼.

    좋은 웹페이지 즐겨찾기