* 1. 검색 창에 EC2를 검색하여 들어간 후 EC2를 생성(EC2에 서버구동을 위한패키지 설치, 포트설정은 되어있어야한다.)*
> 작업 -> 인스턴스 설정 -> 태그 관리 클릭
태그를 생성하는 이유:
* > AWS에서 사용하는 리소스들을 태그별로 분류해 관리하기 위함(비용적, 유지보수적 측면에서 유리)*
2. 새로운 태그 추가
3. **_IAM 역할 수정_**
> 작업 -> 보안 -> IAM 역할 수정 클릭
IAM 역할 수정하는 이유:
* > 인스턴스가 다른 AWS 서비스와 통신할 때, 접근 권한을 주기 위함*
4. 새 IAM 역할 생성 클릭
5. 역할 만들기 클릭
6. AWS Deploy를 이용하여 EC2에 작업할 것이므로 AWS 서비스 선택
> EC2 선택
7. CodeDeploy가 S3에 있는 코드를 사용할 것이므로 'AmazonS3 FullAcess' 선택, **_EC2에 Agent를 설치하기 위해서 'AmazonSSMFullAccess' 도 선택해준다. 그리고 마지막으로 'AWSCodeDeployRole' 까지 선택해준다._**
AWSCodeDeployRole 사용 이유
> CodeDeploy에서 배포하는 애플리케이션을 관리하는 데 필요한 권한을 제공
> CodeDeploy 배포 그룹을 만들 때 사용됩니다. 배포 그룹은 배포할 대상을 지정하는 데 사용
8. 역할 이름 지정하고 '역할 생성' 클릭
9. ec2 뿐만아니라 aws 서비스인 codedeploy도 리소스에 접근할 수 있도록 추가
10. 실습에 활용할 로컬 파일에 appspec.yml파일을 추가한다. 그리고 각 hook에 해당하는 파일들도 작성해준다.
> 소스코드의 위치를 지정하고, 각 hook에 해당하는 파일의 위치와 실행할 계정을 지정해준다.
> 배포 그룹 생성
11. AWS CodeDeploy 대시보드로 이동해 애플리케이션으로 이동하고 **_[ 애플리케이션 생성 ] 버튼을 클릭_**
12. 애플리케이션의 이름을 임의로 입력하고, 컴퓨팅 플랫폼을 'EC2/온프레미스'로 선택한 뒤, [ 애플리케이션 생성 ] 버튼을 클릭
13. 애플리케이션이 생성되면, 생성한 애플리케이션의 배포 그룹 탭을 클릭하여 [ 배포 그룹 생성 ] 버튼을 클릭
14. 배포 그룹의 이름을 임의로 입력하고, 서비스 역할 영역을 클릭한 후 전에 생성했던 'EC2Role'을 선택
15. 환경 구성 중 'Amazon EC2 인스턴스'를 선택하고, 태그 그룹에 EC2 인스턴스에 설정해놓았던 태그 키와 값을 선택
16. 로드 밸런싱 활성화 체크 해제 후, [ 배포 그룹 생성 ] 버튼을 클릭
> 배포 파이프라인 생성
17. CodePipeline 대시보드로 이동 후, [ 파이프라인 생성 ] 버튼을 클릭한다. 그리고 파이프라인 이름을 임의로 입력 후, [ 다음 ] 버튼을 클릭
18. 앞서 클라이언트에서 했던 파이프라인 생성과정을 진행해주고, GitHub연결을 이미 했으므로 생성해둔 GitHub연결을 가져온다.
19. 우리가 이용하는 서버 코드(애플리케이션)는 코드의 컴파일과 빌드 과정이 필요 없고 테스트 코드도 없으므로, [ 빌드 스테이지 건너뛰기 ] 버튼을 눌러 빌드 단계를 생략
20. 배포 스테이지의 각 항목을 적절하게 생성해준다. 이번엔 CodeDeploy를 사용하므로 CodeDeploy를 선택해준다.
21. 잘못된 것이 있는지 확인 후 파이프라인 생성
결과
> 환경변수 설정.
- 환경 변수를 AWS System Manager Parameter Store에서 설정할 것이기 때문에 AWS CLI를 먼저 EC2 instance에 설치해야 한다. 밑에 명령어를 차례대로 입력
AWS CLI를 다운로드 하기 위한 명령어
AWS 버전을 확인
이렇게 되면 aws CLI는 설치가 완료된 것이다
- RDS 생성
검색 창에 RDS 입력 후 데이터베이스 생성을 클릭
엔진 옵션에 원하는 데이터베이스 소프트웨어를 선택
탬플릿은 사용 용도에 따라 선택하면 되는데, 비용이 제일 싼 걸 선택했다
스크롤을 내려 DB 인스턴스 식별자, 마스터 사용자 이름, 암호를 기입
컴퓨터 리소스는 기존 EC2에 연결하고 싶으면 오른쪽을 아니면 왼쪽을 클릭
VPC는 기존 EC2 VPC에 연결할 수 있음
DB 서브넷 그룹도 기존 존재하던 것에 연결할 수 있음
보안 그룹도 기존에 존재하던 거와 연결할 수 있으며, 데이터베이스 인증 방식은 암호 인증 선택
데이터베이스 생성 클릭
- Parameter Store에 환경 설정
검색 창에 Parameter Store 입력 후 오른쪽 상단에 파라미터 생성 클릭
이름 -> appspec.yml가 실행할 스크립트에 있는 환경 변수 이름 기입
값 -> 이전에 생성한 RDS 값 입력
> 이후 파라미터 생성 클릭
예)
이름 : DETABASE_HOST
생성 완료 시 밑에 사진처럼 생성
- 깃허브에 appspec.yml이 인식할 수정한 스크립트 파일 push
> 환경 변수 이름은 Parameter Store에 추가한 이름,
> 값은 AWS SSM 파라미터 스토어에서 값을 가져와 환경 변수를 내보내는 셸 명령어
- 결과
AWS Parameter Store 장점
1. 보안: Parameter Store는 데이터를 안전하게 저장하기 위한 다양한 기능을 제공합니다. 예를 들어, AWS KMS를 사용하여 데이터를 암호화하고, IAM을 사용하여 액세스 권한을 관리할 수 있습니다.
2. 중앙 집중화된 관리: Parameter Store를 사용하면 설정 데이터를 중앙 집중화하여 관리할 수 있습니다. 이를 통해 여러 시스템에서 사용되는 설정 데이터를 효율적으로 관리할 수 있습니다.
3. 확장성: Parameter Store는 대규모 인프라스트럭처에서도 높은 확장성을 제공합니다. 필요에 따라 설정 데이터를 추가하거나 업데이트할 수 있습니다.
4. 유연성: Parameter Store는 다양한 데이터 형식을 지원합니다. 예를 들어, 문자열, JSON, 암호화된 문자열 등을 저장할 수 있습니다.
5. AWS 서비스와의 통합: Parameter Store는 AWS에서 제공하는 다양한 서비스와 통합됩니다. 예를 들어, AWS Lambda 함수에서 Parameter Store의 데이터를 사용할 수 있습니다.
'DevOps' 카테고리의 다른 글
[DevOps] 5/4 TIL : 마이크로서비스 Domain (1) | 2023.05.07 |
---|---|
[DevOps] 프로젝트 2 진행 (0) | 2023.04.30 |
[DevOps] 4/24 TIL : 배포 자동화 실습 - Client (0) | 2023.04.24 |
[DevOps] 4/24 TIL : 배포 자동화 개념 (0) | 2023.04.24 |
[DevOps] 4/20 TIL : GitHub Action을 사용한 테스트 자동화 실습 (0) | 2023.04.21 |