AWS
-
[AWS 자동 배포 시스템] 10. Jenkins private subnet EC2(Ubuntu) 배포(Inoticoming)AWS 2022. 3. 14. 13:03
Inoticoming(특정 폴더에 파일을 감지하여 Event를 실행)를 사용하여 Jenkins 서버 -> Public 서버 -> Private 서버에 배포 해보려고 한다. Ubuntu에서만 설치 가능하다. 먼저 Public 서버와 Private 서버에 inoticoming을 설치하자. sudo apt install -y inoticoming 다음으로 Public 서버에 app.jar 라는 파일이 변경됬을 때 실행되는 shell script를 생성하자. app.jar를 Private 서버로 복사한다. #!/bin/sh scp -i ~/.ssh/private-server.pem ~/watch/app.jar ubuntu@10.0.3.31:/home/ubuntu/project/app/app.jar inotico..
-
[AWS 자동 배포 시스템] 9. ECS Jenkins 구축AWS 2022. 2. 23. 01:19
이제 마지막으로 ECS Jenkins를 구축하려고 한다. Jenkins Pipeline을 생성한다. Script는 아래 코드를 참고하면 된다. 환경 변수 코드만 본인 설정에 맞게 변경해주면 된다. pipeline { agent any environment { AWS_ACCOUNT_ID="844482743949" AWS_DEFAULT_REGION="ap-northeast-2" IMAGE_REPO_NAME="velnova" IMAGE_TAG="latest" REPOSITORY_URI="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${IMAGE_REPO_NAME}:${IMAGE_TAG}" PROJECT_NAME = 'velnova-server'..
-
[AWS 자동 배포 시스템] 8. ECS 구축AWS 2022. 2. 23. 00:02
이번 포스팅에서는 ECS 구축을 하려고 한다. 먼저 ECS 클러스트에 대한 보안 그룹을 생성하자. 그리고 ecs 작업 정의 시 awsLog를 cloudWatch에 연동시킴으로 ecsInstanceRole 역할에 CloudWathFullAccess 권한을 주자. 다음으로 ECS 클러스터를 생성하자. 필자는 EC2 Linux + 네트워킹 방식을 사용한다. 컨테이너 인스턴스 IAM 역할은 기본 ecs 역할을 사용 후 생성한다. 이제 작업 정의를 설정하자. EC2로 생성한다. 컨테이너를 추가하자. 이미지는 ECR의 latest의 URI를 입력한다. 호스트 포트는 도커 컨테이너의 동적 포트 매핑을 위해 0을 입력 후 컨테이너 포트는 app.jar의 포트를 입력하자. 메모리 제한은 소프트 제한으로 480으로 설정하..
-
[AWS 자동 배포 시스템] 7. ECR 구축AWS 2022. 2. 22. 18:15
이번에는 ECR를 구축하려고 한다. ECR에 도커이미지를 올려 다음 포스팅에서 ECS를 구축 할 것이다. 먼저 ECR를 생성하자. ECR은 ECS를 검색 후 선택해야한다. 이제 ECR Push 테스트를 하자. 추후 포스팅에서 ECS Jenkins 설정하기 위해 Jenkins 서버에서 작업하겠다. Jenkins가 설치된 서버에서 jenkins 계정에 로그인 한다. velnova/build/libs 폴더를 먼저 생성하자. 아직 Jenkins 연동전이니 수동으로 Jenkins 서버에 업로드 후 사용하면 된다. app.jar는 첨부 파일을 열어 db 정보를 변경 후 gradle build 후 사용하자. 또 Dockerfile은 첨부된 파일에서 사용하면 된다. velnova/Dockerfile velnova/bu..
-
[AWS 자동 배포 시스템] 6. 로드밸런서 구축AWS 2022. 2. 18. 14:50
이번 포스팅에서는 로드밸런서를 구축하려고 한다. 추후 로드밸런서를 통하여 private subnet(2a, 2c)에 있는 EC2에 접근할 예정이다. 먼저 서울 리전에 ACM 퍼블릭 인증서를 발급받자. 다음으로 elb의 대한 보안 그룹을 생성하자. 32768 - 65535는 도커의 대한 동적 포트이다. 다음으로 타켓 그룹을 생성하자. 나중에 도커를 활용한 ECS 동적 포트 매핑을 할 예정으로 타겟은 아무것도 선택하지 말자. 이제 ALB를 생성하자. 인터넷을 사용할 것으로 Internet-facing을 선택한다. VPC를 선택 후 각 가용 영역(2a, 2c)의 public network를 선택한다. 보안 그룹을 선택 후 443 포트를 타겟 그룹과 매핑한다. 그 다음으로 ACM을 선택한다. 이제 로드밸런스를 ..
-
[AWS 자동 배포 시스템] 5. RDS Mysql 구축AWS 2022. 2. 18. 14:34
이번 포스팅에서는 RDS Mysql(ACTIVE, STANDARD)를 구축하려고 한다. 먼저 RDS에 대한 보안 그룹을 생성하자. 인바운드 규칙을 MSSQL로 잘못 선택하였다. 꼭 MYSQL/Aurora를 선택하자. 다음으로 DB 서브넷 그룹을 생성하자. RDS의 가용 영역은 10.0.5.0/24(2a), 10.0.6.0/24(2c)를 사용한다. 다음으로 RDS를 생성하자. 먼저 Mysql를 선택 후 템플릿을 개발/테스트로 선택하자. 다음으로 마스터 계정을 설정하자. DB 인스턴스 클래스는 제일 낮은 사양으로 선택하였다. STANDARD DB 생성을 위한 다중 AZ 배포를 활성화하자. 다음 VPC의 대한 내용을 설정하자. RDS는 private 환경에서만 사용할 것으로 퍼블릭 엑세스는 비활성화한다. 이제..
-
[AWS 자동 배포 시스템] 4. VPC 구축AWS 2022. 2. 17. 17:37
이번에는 ECS 구축을 위한 VPC 설정을 하려고 한다. 가용 영역을 ap-northeast-2a, ap-northeast-2c를 사용하여 ap-northeast-2a에 public network 1개, private network 2개 ap-northeast-2c에 public network 1개, private network 2개를 만들 것이다. 각각의 private network 영역에 서버를 배치하고 다른 각각의 private network 영역에 RDS ACTIVE와 STANDBY를 배치할 것이다. 처음으로 VPC를 생성하자. 다음으로 각 영역(2a, 2c)에 public subnet, private subnet 2개 총 6개의 subnet을 만든다. velnova-pri4-2c을 만드는 과정에..
-
[AWS 자동 배포 시스템] 3. Jenkins를 활용한 S3 배포AWS 2022. 2. 16. 23:30
Jenkins Pipeline을 사용하여 S3에 웹 서버를 배포하려고 한다. 그냥 index.html 한개를 올리기에는 너무 간단하여 Vue를 이용하여 빌드 후 배포한다. Jenkins와 node가 설치되어 있다고 가정하에 진행한다. 먼저 빌드를 하기 위한 IAM 계정을 만들자. 추후 ECS 배포를 위한 권한(AmazonEC2ContainerRegistryFullAccess, AmazonS3FullAccess, AWSCodeDeployRoleForECS, AWSCodeDeployFullAccess)까지 추가하겠다. 발급 받은 엑세스 키 ID와 비밀 엑세스 키를 저장해놓자. Jenkins가 설치된 곳에서 사용할 예정이다 AmazonECS_FullAccess도 추가하자. Jenkins가 설치된 os에 jen..