ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] 2. AWS CI/CD 구축하기
    tutorial/AWS클라우드 2021. 5. 28. 16:02

    [2]. AWS CI/CD 구축하기

    • Codebuild, CodeDeploy, CodePipeLine을 통하여 CI/CD 구축하기
    • CI/CD를 구축해보면서 CodeBuild를 경험해봅시다.

     

    실습 내용

    Github 레퍼지토리에 push한 이력을 자동으로 체크하여 새로 push될 때마다 호출됩니다.

    웹훅(webhook)을 통해 CodeBuild를 실행하여 빌드하고, 빌드가 완료된 파일(아티팩트)를 S3에 자동으로 업로드합니다.

    이후 그 업로드 된 아티팩트를 CodeDeploy에 배포하고 서비스 를 실행시킵니다.

     

    1. 깃허브에 푸쉬 → Codebuild가 감지 후 build실행
    2. build된 파일(아티팩트)를 S3에 업로드
    3. 업로드된 빌드파일을 CodeDeploy를 통해 EC2에 배포
    4. 이 모든 과정을 CodePipeLine으로 연결

     


     

    실습

    [1]. 프로젝트 생성 및 github에 올리기

    • IAM의 경우 사용자 별로 (EC2, RDS, S3 등..) 권한을 줄 수 있을 뿐만 아니라
      서비스별 각각의 인스턴스들도 권한을 가질 수 있으며 IAM 설정이 가능합니다.
      EC2 IAM Role 생성
      CodeDeploy 그룹 생성

     

     EC2 IAM Role 생성

     

    1. EC2 IAM Role 생성하기

     

        - AWS IAM 대시보드 → 역할 탭 → 역할 만들기

     

     

        - AWS 서비스 선택 → 일반 사용 사례 EC2 선택 → [다음:권한] 버튼 클릭

     

     

     

    2. Role 체크하기

         - AmazonEC2RoleforAWSCodeDeploy 검색 후 체크

         - AmazonS3FullAccess 검색 후 체크

         - AWSCodeDeployFullAccess 검색 후 체크

         - AWSCodeDeployRole 검색 후 체크

         - CloudWatchLogsFullAccess 검색 후 체크

        → [다음:태그] 버튼 클릭

     

     

    - [다음:검토] 버튼 클릭

     

    역할 이름 'aws-tutorial-ec2-iam'으로 입력 → [역할 만들기] 버튼 클릭

     

     

    최종적으로 1개의 역할이 정상적으로 생성이되었는지 확인합니다.

     

     

     

     CodeDeploy 그룹 생성

    • □ IAM의 사용자를 생성합니다.
    • □ CodeDeploy 그룹에 사용자 추가하기 → 자신의 계정을 추가합니다.
    사용자 그룹을 만듭니다.
    AWS IAM 대시보드 → 사용자그룹 탭 → 그룹 생성

    그룹의 정책을 JSON 형식으로 추가합니다. (참고)
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "autoscaling:*",
                    "codedeploy:*",
                    "ec2:*",
                    "lambda:*",
                    "elasticloadbalancing:*",
                    "s3:*",
                    "cloudwatch:*",
                    "logs:*",
                    "sns:*"
                ],
                "Resource": "*"
            }
        ]
    }

     

     

    [2]. EC2 인스턴스에 IAM Role 설정하기 

    • EC2 인스턴스에 IAM Role 부여하기
    • CodeDeploy-agent 설치하기

     

    EC2 인스턴스에 IAM Role 부여하기

     

    AWS EC2 대시보드 → 인스턴스 오른쪽 마우스 → 보안 → IAM 역할 수정 버튼 클릭

     

     

    생성한 'aws-tutorial-ec2-iam' 선택 후 [저장] 버튼

     

     

    정상적으로 해당 인스턴스 IAM역할이 할당되었는지 확인합니다.

     

     

     EC2 내부에 접속하여 CodeDeploy-agent 설치하기

     

     EC2에 접속

     

    ssh -i mingu.pem ec2-user@13.231.74.5 -p 22

     

     

    터미널을 이용하여 다음 명령어를 이용하여 설치합니다.
    아마존 리눅스 환경 세팅 참고

     

    sudo yum update
    sudo yum install ruby
    sudo yum install wget
    
    #!/bin/bash CODEDEPLOY_BIN="/opt/codedeploy-agent/bin/codedeploy-agent" $CODEDEPLOY_BIN stop
    yum erase codedeploy-agent -y
    
    # 참고 : 도쿄리젼 : ap-northeast-1
    sudo aws configure
    Access Key : [본인IAM계정] csv파일의 AccessKey등록
    Secret Access Key : [본인IAM계정] csv파일의 SecretAccessKey
    region name : ap-northeast-1 
    output format : json
    
    wget https://aws-codedeploy-ap-northeast-1.s3.amazonaws.com/latest/install
    chmod +x ./install
    sudo ./install auto
    
    # 에이전트가 제대로 설치되었는지 확인
    sudo service codedeploy-agent status

     

    완료 후 다음과 같이 'The AWS CodeDeploy agent is running ~ '이라는 문구가 나옵니다.

     

     

    [3]. AWS CodeDeploy Agent 자동실행하기

    • .[sh파일 생성] 쉘 스크립트 작성
          -> vi 명령어로 수정하겠습니다. ( wq:저장 q:나가기 i: 수정 )

     

     .[sh파일 생성] 쉘 스크립트 작성

     

    sudo vi /etc/init.d/codedeploy-startup.sh
    
    // i 버튼누르고 복사 붙여넣기
    #!/bin/bash 
    echo 'Starting codedeploy-agent' 
    sudo service codedeploy-agent restart
    // esc-> :wq 저장
    
    // vi 편집기에서 나온 뒤 
    // 실행권한 추가
    sudo chmod +x /etc/init.d/codedeploy-startup.sh

     

     

    [4]. CodeBuild 설정하기

    • 프로젝트에 buildspec.yml 작성하기 (루트경로에 작성)

     

    □. buildspec.yml 파일 추가하기

    • □ 프로젝트 루트경로에 yml파일을 추가합니다.
    프로젝트 루트경로에 yml파일을 추가합니다.

     

    version: 0.2
    
    phases:
      install:
        runtime-versions:
          nodejs: 12
        commands:
          - npm install
          - pwd
        run-as: root
    
    artifacts:
      files:
        - "**/*"
    cache:
      paths:
        - "node_modules/**/*"

     

    [5]. EC2 CodeDeploy 설정하기

    •  프로젝트에 appspec.yml 파일추가하기 (루트경로에 작성)
      - git pull을 받으셨다면 이미 있습니다.
      - 직접 프로젝트를 만들었다면 추가 후 ec2 내부로 접속하여 git pull를 하여 소스를 업데이트하세요.
    • AWS CodeDeploy 대시보드 → CodeDeploy 생성하기

     

    □. 프로젝트 루트경로에 yml파일을 추가합니다.

    • □ 프로젝트 루트경로에 yml파일을 추가합니다.
    • EC2 내부에 접속하여 build 폴더를 생성합니다.
    EC2 내부에 접속하여 build 폴더를 생성합니다.

     

    version: 0.0
    os: linux
    files:
      - source:  /
        destination: /home/ec2-user/build/
    # CodeDeploy가 배포하게 될 위치가 build폴더입니다.

     

     

    EC2 내부에 접속하여 build 폴더생성

     

    mkdir /home/ubuntu/build

     

    □. CodeDeploy 생성하기

    • EC2 인스턴스 태그 생성하기
    • AWS CodeDeploy 대시보드 →  CodeDeploy 생성

    EC2 인스턴스 태그 생성하기
    - CodeDeploy 생성 후 EC2와 연결을 할 때 태그를 참고합니다.

     

     

    AWS CodeDeploy 대시보드 → CodeDeploy 생성하기

     

    'tutorial > AWS클라우드' 카테고리의 다른 글

    [AWS] 3. 로드밸런싱 설정  (0) 2021.05.28
    [AWS] 1. EC2 서비스 배포  (0) 2021.05.28
    [AWS] AWS 클라우드 - 인프라 실습하기  (0) 2021.05.28
Designed by Tistory.