Cloud(Github Actions를 통한 컨테이너 배포 자동화)

Rina's·2023년 7월 27일

코드스테이츠

목록 보기
84/96
post-thumbnail

지속적 배포(CD)

Continuous Deployment
코드 변경시 자동 테스트와 빌드를 거쳐 운영환경에 배포하는 것
개발팀과 운영팀간의 협업을 돕고 안정적인 운영과 고객의 요구에 빠른 대응을 가능하게 함
보안과 안전성을 고려한
CI/CD 파이프라인 구성에 있어서 보안과 안전성에 대한 고려가 필요
지속적인 모니터링, 피드백을 통한 개선이 필요함

배포 자동화를 통한 지속적 배포

소스 코드 버전 관리
빌드 자동화
테스트 자동화
품질 테스트 및 승인 절차 자동화
모니터링과 피드백 등

Github Actions를 통한 지속적 배포

Github Actions 로

인텔리제이로 서버 애플리케이션을 만든다
도커파일과 Github Action 설정 파일을 만든다
깃 허브에 push한다
Github Actions Workflow에 의해 프로젝트 빌드/이미지 빌드/도커 허브 push
(추가)Github Actions Workflow에 의해 인스턴스 연결, 이미지 pull, 배포의 자동화 까지 실행

AWS 액세스 키 발급
외부 접근을 위한 AWS 액세스 키 발급
IAM - [사용자] - [보안 자격 증명] - '엑세스 키 만들기' - '외부에서 실행되는 애플리케이션'
*주의 액세스 키 출력 화면을 빠져 나갈 시 재 확인이 불가능 함
Github Actions Workflow 사용을 위해 Github Secret에 환경변수로 등록한다

Github Actions 설정 파일 수정 - 액션추가

#지속적 통합을 위한 스크립트 아래에 작성합니다.
- name: Configure AWS credentials		# AWS 인증
  uses: aws-actions/configure-aws-credentials@v1
  with:									# 시크릿 키에 등록한 엑세스 키 사용
    aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
    aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
    aws-region: ap-northeast-2			# 리전 - 대한민국/서울
- name: Start Session Manager session	# 세션메니저로 EC2연결
  run: aws ssm start-session --target {인스턴스 id}
- name: Deploy to Server		
  env:
    AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
    AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
    AWS_REGION: ap-northeast-2
  run: |
    aws ssm send-command \	# 세션메니저를 통해 실행할 명령어
      --instance-ids {인스턴스 id} \
      --document-name "AWS-RunShellScript" \
      --parameters "commands=[
        'if sudo docker ps -a --format \\'{{.Names}}\\' | grep -q \'^server$\\'; then',			# server라는 이름의 컨테이너가 실행중이면
        '  sudo docker stop server', 	# 컨테이너 종료
        '  sudo docker rm server', 		# 컨테이너 삭제
        'fi',
        'sudo docker pull ${{ secrets.AWS_ACCESS_KEY }}/spring-cicd:${GITHUB_SHA::7}',
        'sudo docker tag ${{ secrets.AWS_ACCESS_KEY }}/spring-cicd:${GITHUB_SHA::7} spring-cicd',		# 이미지 pull, 이미지 tag 변경
        'sudo docker run -d --name server -p 8080:8080 spring-cicd'
      ]" \		# 이미지로 컨테이너 실행
      --output text


수정 후 커밋


Action flow 완료


실행을 확인

profile
갭린이 리나

1개의 댓글

comment-user-thumbnail
2023년 7월 27일

좋은 정보 얻어갑니다, 감사합니다.

답글 달기