프로젝트를 진행하며 github action과 aws를 이용해 ci/cd를 구현하기로 결정이 되어 이번에 CI,CD를 처음 구현해 보았다.
이 글에선 구현하는 방법보단 내가 겪은 삽질에 초점을 맞춰 기록할 생각이다 !
이번에 진행하는 프로젝트의 설계 사양이다.
원리는 생각보다 간단하다.
우리가 코드를 업데이트 후 github에 올리게 되면, 그 때 등록한 github action이 수행되고
해당 액션으로 s3의 버킷에 프로젝트 압축파일이 저장된다.
그리고, 또, 설정한 파일에 따라 codedeploy에 배포 명령을 내리게 되고
이런 순서를 거쳐 배포를 진행하게 된다.
이론적인 부분은 여기까지만 잡고 바로 설정을 해보자 !
1.EC2인스턴스 생성 및 설정
전에 해봤기도 하고 자료도 되게 많은 부분이라 설명은 생략하고 여기 글을 참고해서 만들면 손쉽게 만들 수 있다.
해당 글을 통해 EC2인스턴스 생성 및 탄력적 IP할당 그리고, 기본적인 설정을 할 수 있다. 또한, IAM Role을 설정하여 EC2에 적용하는 것 까지 수행한다.
2.S3 생성 및 설정
S3에 들어가 우측 하단의 버킷 만들기를 눌러준다.
그리고, 버킷의 이름과 위치를 골라준다.
나머지 옵션들은 만지지 않는다 !
즉, ACL 비활성화, 모든 퍼블릭 액세스 차단, 버킷 버전 관리-비활성화(지갑이 튼튼하면 해도 된다..), 기본 암호화 -S3관리형 키, 버킷 키 활성화로 유지한다.
그 후, IAM으로 이동해서 사용자 추가를 눌러준다.
사용자 이름을 적어주고, AWS Management Console에 대한 사용자 액세스 권한 제공 – 선택 사항 이라 적힌 체크 박스를 눌러주면
위 사진처럼 추가적인 설정 화면이 나오는데, 여기서 IAM사용자를 생성하고 싶음을 누른 후 다음 버튼을 눌러준다.
(참고로 맨 밑의 "사용자는 다음 로그인 시 암호를 생성해야 합니다"는 체크해도 되고 안해도 된다.)
그러면 권한 설정하는 페이지로 이동하는데, 여기서 AWSCodeDeployFullAccess와 AmazonS3FullAccess를 검색해 추가해준다.
그러면 이렇게 내가 설정한 이름 그리고 권한들이 쭉 나온다.
(앞에서 말했지만, "사용자는 다음 로그인 시 암호를 생성해야 합니다"를 체크하면 IAMUserChangePassword란 권한이 자동으로 추가된다)
확인 후 이상이 없다면 사용자 생성을 눌러준다.
그러면 이렇게 콘솔 로그인 url, 암호 그리고 자신의 이름이 나오는데 csv파일로 저장해 소중히 간직하고 있자.
완료 후 다시 iam 사용장 탭에서 방금 만든 사용자를 눌러 보안 자격 증명 탭으로 이동한다.
그 후, 하단의 액세스 키 만들기를 눌러준다.
그러면 이런 창이 나오는데 CLI를 선택하고 경고를 가볍게 읽어주고 다음을 눌러준다.
바로 뒤에 나오는 설명 태그도 선택사항이니 원하면 작성해주면 되겠다.
다음으로 넘어오면 이제 위 사진처럼 액세스 키와 비밀 액세스 키가 발급되는데 이건 매우 중요한거니 꼭 다운로드 받아야 한다.
이제 이 키를 가지고 적용할 프로젝트가 있는 git repository로 가자.
해당 프로젝트의 Settings-> Secrets and Variables의 Actions를 눌러 아래 페이지로 이동한다.
초록색 New Repository secret을 눌러 위의 사진처럼 이름을 설정한다.
여기서, 각 name의 secret은 다음과 같다
AWS_ACCESS_KEY_ID : 바로 전에 발급받은 액세스 키
AWS_SECRET_ACCESS_KEY : 바로 전에 발급받은 비밀 액세스 키
AWS_REGION : ap-northeast-2
3. CodeDeploy 생성 및 설정
CodeDeploy 생서에 앞서 다시 IAM으로 들어가준다.
IAM의 역할탭을 눌러 역할 만들기 버튼을 눌러준다.
EC2때와 다르게 위처럼 직접 CodeDeploy를 검색하여 선택해준다.
다음 버튼을 두 번 누르면 이렇게 정보 확인 및 이름 설정 창이 뜬다.
이름만 원하는 걸로 입력하고 넘어가준다. (CodeDeploy를 선택했기에 해당 권한이 자동으로 추가되어 있다)
그 후 다시 역할 탭을 눌러 활성화 된 역할을 보면 IAM_CODE_DEPLOY란 역할이 추가되어 있을 것이다.
이제 본격적으로 CodeDeploy를 생성해보자.
CodeDeploy로 이동 후 애플리케이션 탭을 눌러 애플리케이션 생성 버튼을 눌러준다.
그다음, 이름을 적고 우린 EC2로 배포할 예정이니 EC2를 골라준 후 애플리케이션 생성을 눌러준다.
그러면 이렇게 배포 그룹을 만들라고 알림을 띄워준다.
그러니, 배포 그룹 생성 버튼을 눌러 배포 그룹을 만들어보자.
이름을 정하고 서비스 역할에서 방금 만든 역할을 골라준다.
또, 우린 EC2 인스턴스를 사용하니 해당 박스를 체크해준다.
CodeDeploy에이전트는 뭔가 지속적 업데이트를 켜면 돈이 많이 들 것 같아 한번만으로 설정했다.
그리고, 로드 밸런싱은 체크박스를 해제하여 비활성화 해준다.
*로드 밸런싱 설정을 한게 있다면 체크박스를 해제 하지 않고 로드 밸런서를 만들어준다.
이제 배포 그룹 생성을 누르면 CodeDeploy설정까지 끝이 났다 !
최대한 단순하게 작성하려다 보니 스크린샷이 많이 들어가 좀 글이 길어졌지만, 여튼 이제 CI/CD까지 얼마 남지 않았다 !
다음글로 CI/CD를 마무리 지어 보려 한다.
참고한 글
https://goodgid.github.io/Github-Action-CI-CD-AWS-EC2/
https://goodgid.github.io/Github-Action-CI-CD-AWS-S3/
https://goodgid.github.io/Github-Action-CI-CD-AWS-CodeDeploy/
'DevOps' 카테고리의 다른 글
React+Github Action+AWS로 CI,CD 하기 (0) | 2023.05.01 |
---|---|
[Github actions, secret]github workflow로 배포 시 json 파일 추가하기 (0) | 2023.04.29 |
[AWS RDS] 로컬에서 RDS 연결이 안된다..! (0) | 2023.04.29 |
Github secret으로 배포용 application.yml 암호화 하기 (0) | 2023.04.17 |
GitHub Action, AWS S3,CodeDeploy, EC2로 CI, CD해보기 (2) (0) | 2023.04.16 |