코드 3형제를 사용하여 ECS를 계속 진행하는 방법

6174 단어 AWS
streampack의 Tana입니다.
CodeCommiit 는 Backlog Giit 를 지원하지 않으며, CodeXXX 는 매우 많아서 사용하기 어렵다는 인상을 준다
뿌리를 내리긴 했지만 AWS Summit Tokyo 2019 중외지에서 CodeBuild, CodeDeploy, CodePipeline
ECS 환경에서 (상) 디자인할 수 있는 곳이 있기 때문에 이 기회를 시험해 봤습니다.AWS資格試験 (땀을) 위해

개요


CodeCommiit 창고에 등록한 후
CodeBuild를 통한 Docker 이미지 구축
ECR별
ECS에 반영하는 단계입니다.

전제 조건

  • CodeCommiit 및 Giithub을 통한 코드 관리
  • ECS에서 미리 이동하는 환경 있음
  • CodeCommit


    이번에는 CodeCommiit 를 사용합니다.
    CodeCommiit에서 창고를 준비하고 구축하려는 응용 프로그램의 코드를 Commit & Push로 만듭니다.

    buildspec.yml의 준비


    다음 샘플buildspec.복사 후 사용 중인 어플리케이션을 업데이트합니다runtime-versions.
    runtime-versions에서 지원하는 언어 버전은 아래에 기재되어 있습니다.
    https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-available.html
    또한 <container-definition>는 ECS에서 사용되는 컨테이너 이름으로 변경됩니다.
    컨테이너 이름은 ECS의 작업 정의를 통해 확인할 수 있습니다.
    편집된 파일은 대상의 창고 경로에서commiit &push를 진행합니다.
    buildspec.yml
    version: 0.2
    
    phases:
      install:
        runtime-versions:
          # golang: 1.12   # アプリケーションによって書き換え
          # ruby: 2.6
    
      pre_build:
        commands:
          - echo Logging in to Amazon ECR...
          - $(aws ecr get-login --no-include-email --region ap-northeast-1)
      build:
        commands:
          - echo Build started on `date`
          - echo Building the Docker image...
          - docker build -t $ECR_NAME:$ECR_VERSION .
          - echo docker tag $ECR_NAME:$ECR_VERSION $ECR_ID.dkr.ecr.ap-northeast-1.amazonaws.com/$ECR_NAME:$ECR_VERSION
          - docker tag $ECR_NAME:$ECR_VERSION $ECR_ID.dkr.ecr.ap-northeast-1.amazonaws.com/$ECR_NAME:$ECR_VERSION
      post_build:
        commands:
          - echo Build completed on `date`
          - echo Pushing the Docker image...
          - docker push $ECR_ID.dkr.ecr.ap-northeast-1.amazonaws.com/$ECR_NAME:$ECR_VERSION
          - printf '[{"name":"<container-definition>","imageUri":"%s"}]' $ECR_ID.dkr.ecr.ap-northeast-1.amazonaws.com/$ECR_NAME:$ECR_VERSION > imagedefinitions.json    # <container-definition> もお使いのコンテナ名に書き換え
    
    artifacts:
      files: imagedefinitions.json
    
    ECR 의 복제품 과 버전 등 하드웨어 인코딩 도 가능 하다
    실전에 더욱 적합하도록 환경 변수로 정의한다.
    다음에 설명한 CodeBuild 프로젝트를 만들 때 이 환경 변수를 정의합니다.

    CodeBuild


    주의해야 할 항목만 기재되었다.

    CodeBuild 프로젝트 만들기


    Environment 설정

    요점
  • standard:1.0에서도 이동할 수 있음(buildspec.yml에서 설치,runtime-verions를 지정하지 않아도 됨)
  • docker build
  • 을 실행할 수 있도록 Previleged 검사
  • Role 제작 후 잊지 마세요AmazonEC2ContainerRegistryFullAccess수여
  • 참고 사항:
    설치 프로젝트 등runtime-versions를 설정하지 않아도 괜찮지만aws/codebuild/standard:2.0을 지정했을 때 반드시 필요합니다.
    환경 변수

    다음 항목과 일치하도록 환경 변수를 설정합니다.
    $ECR_ID.dkr.ecr.ap-northeast-1.amazonaws.com/$ECR_NAME:$ECR_VERSION
    
    ECR_VERSION(이미지 태그)은 기본적으로 사용됩니다latest.

    IAM Role for CodeBuild and ECR


    IAM RoleAmazonEC2ContainerRegistryFullAccess주다

    이렇게 하면 이미지를 ECR로 미룰 수 있다.

    개별 빌드 실행


    성공을 보장하기 위해 수동으로 구축합니다.
    여기서 성공하지 못하면 CodePipeline은 실패하겠죠.

    CodePipeline


    소스 공급자와의 ~CodeCommiit 협력


    CodeCommiit, Giithub 등의 공급업체를 선택하십시오.
    이번에 사용한 것은 CodeCommiit이기 때문에 CodeCommiit의 창고와 지점을 지정합니다.

    디버그 단계~ECS와의 합작 선택


    ECS 선택
    ECS의 클러스터 이름 및
    ECS의 서비스 이름
    선택하십시오.

    결과를 확인하다


    push 후 실행 여부 확인
    Deploy까지 Succeeded이면 ECS의 최신 코드(이미지 구축)
    (아마도)

    사용한 소감.


    ECS에서 이미 실행 중이면 CodeCommiit에서 ECS로의 디버깅까지 CI/CD를 사용할 수 있습니다.
    로컬build &push에서 의외로 시간이 걸리고 로컬 PC도 영향을 미쳐 의외로 사용할 수 있을 것 같다는 것을 느꼈습니다.
    백로그 지트에 지원돼 람바다 등을 사용하지 않고 depro 결과를 할 수 있는 슬랙 연대 등이 이뤄지면 이전을 논의할 예정이다.

    좋은 웹페이지 즐겨찾기