프론트를 할때 미약하게나 해봤지만 자세하게 공부하는 건 이번이 처음이다.
먼저 아래와 같이 구성을 해보았다.
미래에 과금이 되더라도 jenkins를 사용할 예정이지만 아직 공부하는 단계이니
비용이 발생하지 않고 이전에 사용해봐서 익순한 Github Actions를 사용하기로 했다.
장점
Docker 기반으로 서비스를 운영할 때 가장 간단하게 구성할 수 있는 인프라 구조
단점
무중단 배포를 구현하거나 여러 EC2 인스턴스에 배포를 해야하는 상황이라면 직접 Github Actions에 스크립트를 작성해서 구현해야 한다.
1️⃣ EC2 생성 및 세팅
저는 프리티어에 맞게 세팅을 하고 OS는 AWS Linux 2023으로 진행했습니다.
기존에 프리티어이신분들이 많이 사용하는 건 AL2이지만 미래와 효율성을 생각했을 때 AWS Linux 2023으로 구성하는 것이 더 좋다고 생각했습니다.
물론 트레이트 오프라 기존 레퍼런스를 참고하기에는 명령어가 다소 다르고 의존성도 상당부분 다르기 때문에 공식문서와 구글링을 많이 해야하는 단점이있습니다.
혹시 고민중이신 분들은 [AWS에서 비교글](https://docs.aws.amazon.com/ko_kr/linux/al2023/ug/compare-with-al2.html)을 작성해놓았는데 한 번 참고해보시면 좋을 것 같습니다.
AWS Linux 2023을 선택한 이유
1. AL2 EOL
![600](https://i.imgur.com/onKqtBq.png)
AL2 EOL은 2025/6/30 입니다. 즉 그 이후에는 마이그레이션을 해야한다는 소리입니다.
그리고 이번 AL2023 부터 운영 체제 수명 주기를 더 쉽게 계획하고 관리할 예정이라고 합니다.
2. 일정기간 지남
이제 막 출시한게 아니라 1년이 더지난 시점이라 이미 수많은 버그들이 고쳐짐 물론 1년으로 부족하다고 생각할 수도 있음
https://aws.amazon.com/ko/about-aws/whats-new/2023/03/amazon-linux-2023/
3. 릴리스 5년 지원
https://aws.amazon.com/ko/about-aws/whats-new/2023/03/amazon-linux-2023/
더많은 내용이 궁금하다면
https://docs.aws.amazon.com/ko_kr/linux/al2023/ug/what-is-amazon-linux.html
2️⃣ Docker 세팅
### 1. AL2023에 도커 세팅하는 방법
#### 🛠️ docker 설치
1. docker 설치
```bash
sudo dnf install -y docker
```
2. docker 서비스 시작 및 활성화
```bash
sudo systemctl start docker
sudo systemctl enable docker
```
3. 현재 사용자를 docker 그룹에 추가
```bash
sudo usermod -aG docker $USER
```
4. 그룹 멤버십 적용
```bash
newgrp docker
```
5. 도커 설치 확인
```bash
docker --version
```
#### 🛠️ Docker Compose 설치
1. 필요한 라이브러리 설치
```bash
sudo dnf install -y libxcrypt-compat
```
2. docker compose 다운로드
```bash
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
```
3. 실행 권한 부여
```bash
sudo chmod +x /usr/local/bin/docker-compose
```
4. 심볼릭 링크 생성 (필요시)
1. 기존링크에 문제가 있으면 제거하고 새로 생성
```bash
sudo rm -f /usr/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
```
5. docker compose 설치 확인
```bash
docker-compose --version
```
3️⃣ AWS ECR 접근 권한 획득
#### ❓AWS ECR이란?
Amazon Elastic Container Registry (ECR)는 Amazon Web Services(AWS)에서 제공하는 관리형 Docker 컨테이너 레지스트리 서비스입니다. AWS ECR는 개발자들이 애플리케이션의 컨테이너 이미지를 쉽고 안전하게 저장, 관리, 배포할 수 있도록 도와줍니다.
Amazon ECR은 IAM을 사용하여 리소스 기반 권한을 가진 프라이빗 리포지토리를 지원합니다.
**AWS ECR 사용 예시:**
1. **이미지 푸시**: 로컬에서 Docker 이미지를 빌드한 후, `docker push` 명령어를 사용하여 ECR에 이미지를 푸시할 수 있습니다.
2. **이미지 풀**: ECS나 EKS에서 작업을 실행할 때, ECR에서 이미지를 풀(pull)하여 사용합니다.
3. **이미지 스캔**: 저장된 이미지를 정기적으로 스캔하여 보안 취약점을 발견하고 보고서를 생성합니다.
어떻게 접근 권한 취득?
1. IAM으로 가셔서 사용자(없다면 생성) -
![400](https://i.imgur.com/ZRfBarn.png)
2. 권한 추가
![300](https://i.imgur.com/K1CkLAn.png)
3. 직접 정책 연결에서 EC2containerregistry 검색 -> AmazonEC2ContainerRegistryFullAccess 선택
![](https://i.imgur.com/ZqsRJUD.png)
4. 추가 완료
![](https://i.imgur.com/1Qq2oQs.png)
5. ECR로 이동후 private registry 생성
![](https://i.imgur.com/o0rcRwn.png)
6. 원하는 리포지토리 이름으로 생성
![](https://i.imgur.com/BY9dAPI.png)
aws 간단 소개 영상 - https://www.youtube.com/watch?v=sxPqBT19bfA
'정보' 카테고리의 다른 글
[Query dsl]hibernate.query.SemanticException : Could not interpret path expression (0) | 2024.05.21 |
---|---|
JIRA 이슈번호 자동으로 커밋메시지에 넣기 (0) | 2024.05.15 |
[에러 해결] cannot resolve class or package 'cj' (0) | 2024.05.03 |
[Effective java] 🚀 item 13. clone 재정의는 주의해서 진행해라 (0) | 2024.04.17 |
[Effective java] 🚀 item 12. 항상 toString을 재정의하라 Always override toString (0) | 2024.03.31 |