[CI & CD - AWS] 5 - Automated Deployment

2023. 4. 16. 00:54·⚙️ Ops/CI & CD

💡 Automated Deployment


배포 파이프라인을 구성하는 단계(stage)와 작업(actions)

  • Source단계 : 원격 저장소에 관리되고 있는 소스 코드에 변경이 생길 경우, 감지하고 다음 단계로 전달
  • Build단계 : 소스단계에서 받은 코드 컴파일 빌드 테스트 -> 가공 -> 결과물 전달
  • Deploy단계 : 전달받은 결과물을 실제 서비스에 반영
    * 실제 단계와 과정은 상황에 따라 세분화 & 간소화

AWS Development Tool

  • CodeCommit
    • Source단계 구성 시 사용하며, 버전 관리 도구이다
    • 보안에 강점
    • FreeTier이상 사용시 과금
  • CodeBuild
    • Build 단계 구성 시 사용하며, 유닛 테스트 & 컴파일 & 빌드 작업을 CLI를 통해 실행
  • CodeDeploy
    • Deploy 단계 구성 시 사용하며, 실행중인 서버에 변경사항 적용 가능
    • S3 버킷을 통해 업로드된 static site에 변경 사항 반경
  • CodePipeline
    • 파이프라인 구축 서비스
    • 1계정 2파이프라인 제한 (초과 시 과금)

💡 Install (Centos 7)


AWS CLI

  • curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
  • unzip awscliv2.zip
  • ./aws/install
  • aws --version

CodeDeploy Agent

  • yum -y update
  • yum -y install gcc (C Compiler)
  • gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
  • curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import - -> import gpg key
  • curl -sSL https://get.rvm.io | bash -s stable -> rvm 설치 스크립트
  • source /etc/profile.d/rvm.sh -> 시스템 환경변수 & rvm 정보 업데이트
  • rvm reload
  • rvm requirements run -> rvm 의존성 패키지 설치
  • rvm list known
  • rvm install [version]
  • rvm list
  • rvm use [version] --default
  • ruby -v
  • gem install aws-sdk -> Ruby용 sdk 설치

Install Ruby

img

  • wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
  • chmod +x install
  • ./install auto > /tmp/logfile
  • service codedeploy-agent status

Install CodeDeploy

img


💡 IAM Role 설정

기존의 Role에 정책 4개 추가해서 연결

img


신뢰 관계의 Service 수정

img


💡 Client Build 설정

  • Deploy - AppSpec
  • Build - BuildSpec
  • 스크립트 작성
    • init -> chmod build/**
    • clear -> rm -rf build
    • start -> nohup [start-server] > /dev/null
    • stop -> pkill -f 'java -jar'
  • 프로젝트 Push

💡 Deploy

  • CodeDeploy Console -> Create Application
  • Create Deploy Group -> IAM, Tag 등 지정하여 생성
  • Pipeline 생성
  • cd /opt/codedeploy-agent/deployment-root/deployment-logs -> 로그파일 위치

💡 AWS Parameter Store

환경변수 전달

  • AWS Parameter Store 파라미터 생성
    • name - /prefix/name/key 순으로 작성
      • ex) /spring-boot-aws/skw/spring.datasource.url
    • 값 - 파라미터 속성에 따른 값
      • ex) jdbc:mysql://skw.c0nwl8c1futc.ap-northeast-2.rds.amazonaws.com/test?useSSL=false&chareaterEncoding=UTF-8&serverTimezone=UTC

build.gradle 내용 추가

dependencyManagement { // 블록 추가
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-starter-parent:Hoxton.SR12"
    }
}

프로젝트 내 정적 폴더 내부에 bootstrap.yml 작성

aws:
  paramstore:
    enabled: true
    prefix: /spring-boot-aws
    name: skw # 리소스 이름을 작성합니다.
    profileSeparator: _
저작자표시 (새창열림)

'⚙️ Ops > CI & CD' 카테고리의 다른 글

Compress/Upload Error Report & Cache Gradle  (1) 2023.05.23
CI & CD Tool 선정  (0) 2023.05.23
[CI & CD - AWS] 4 - ELB & Cert & Route53  (0) 2023.04.16
[CI & CD - AWS] 3 - Connect RDS  (0) 2023.04.16
[CI & CD - AWS] 2 - Deploy Client  (0) 2023.04.16
'⚙️ Ops/CI & CD' 카테고리의 다른 글
  • Compress/Upload Error Report & Cache Gradle
  • CI & CD Tool 선정
  • [CI & CD - AWS] 4 - ELB & Cert & Route53
  • [CI & CD - AWS] 3 - Connect RDS
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      GStreamer #Pipeline
      Lock #Thread #Concurrency
      React #Markdown
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    [CI & CD - AWS] 5 - Automated Deployment
    상단으로

    티스토리툴바