이제 해보고자 하는 것은 EC2 위에 Docker를 올리고, 그 Docker에 Jenkins container를 올려 local에서 작성한 spring 코드가 gitlab에 push되었을 때 build 및 pipeline을 거치면서 JUnit test, SonarQube 등 정적 검사를 거치고 docker image로 build하는 것을 목표로 한다.
1. EC2 instance 생성
먼저 EC2에 들어가서 인스턴스 시작 클릭
프리티어 이용 가능한 것을 선택
마찬가지로 프리티어 이용 가능한 것을 선택
다음으로 검토 버튼을 눌러서 검토를 본다. 보면 메노리가 1GiB로 상당히 적어, 추후에 swapfile 세팅을 해 주어야 한다. (OS에서 배우는 것, 스토리지를 ram처럼 사용할 수 있게 해 줌.
그리고 보안 그룹 같은 경우에는 지금 포트가 22로만 설정되어 있는데, 이것도 바꿔야 한다. 보안 그룹 편집을 눌러 보안 그룹 구성을 변경한다. 추후에 바꿀 수 있으니 지금 굳이 할 필요는 없다.
기본으로 있는 SSH 포트 22번을 빼고 아래 4개의 포트를 추가한다. 소스의 0.0.0.0/0은 IPv4의 모든 접근에 대해 허용하겠다는 말이다.
- 8080 : spring 코드를 실행할 포트.
- 8081 : jenkins를 실행할 포트
- 3306 : MySQL에서 사용할 포트
- 443 : HTTPS를 사용할 포트.
키 페어를 하나 만들자. 이 키 페어가 있어야 VS Code에서 EC2로 접속할 수 있다. 키 페어 이름을 내맘대로 하나 만들고(여기서는 프로젝트 명인 autobuild로 생성했다) 키 페어 다운로드를 눌러 키 페어를 다운로드 받자. 이후 인스턴스 시작.
좌측의 인스턴스 탭을 눌러 인스턴스를 확인해 보자. 아래의 것이 방금 생성한 인스턴스이다. 클릭해서 세부 요약으로 들어가자.
우측 상단의 연결 버튼을 클릭해 SSH 클라이언트가 어떻게 연결하는지 보자.
이렇게 연결한다고 한다. VS Code에서 연결해 보자.
2. VS Code로 EC2 접속
VS Code Extension 중 Remote - SSH를 설치하자.
다음으로, 아까 EC2 인스턴스를 생성하면서 다운로드 받았던 .pem 파일을 C:\ec2로 옮겼다. 그래서 pem 파일의 위치는 C:\ec2\autobuild.pem이다.
Ctrl + Shift + P를 눌러 Remote SSH : Connect to Host... - add new SSH host를 클릭하자.
그러면 이런 창이 뜬다.
EC2 인스턴스에 연결 - 예시를 보면 이런 글이 있다. 여기서 .pem 파일의 경로만 바꿔주면 된다. 나는 C:\ec2\autobuild.ssh니까 이렇게 바꾸어 준다.
ssh -i "C:\ec2\autobuild.pem" ec2-user@ec2-3-137-180-8.us-east-2.compute.amazonaws.com
이렇게 쓰고 확인 누르고, 다시 Ctrl + Shift + P 누르면 방금 추가한 게 있는 것을 볼 수 있다.
그러면 이대로 연결하면 되냐? 아직이다. pem파일에 대한 접근 권한을 바꾸어 주어야 한다.
pem파일 우클릭 - 속성 - 보안 - 고급
상속 사용 안 함 - 이 개체에서 상속된 사용 권한 모두 제거
추가 - 보안 주체 선택
개체 이름을 입력한다. windows 우측 하단의 검색 - 계정 관리 - 등록된 이름 / microsoft에 등록한 이메일을 입력 - 이름 확인 - 확인
읽기 및 실행, 읽기 권한 클릭 - 확인 - 확인 - 확인
이후에 VS Code Remote SSH로 접근해 보자.
좌측 하단에 SSH가 나온 것을 보면 잘 접속된 것을 확인할 수 있다.
Ctrl + `를 눌러서 whoami를 입력해 보자. ec2-user, 잘 출력된다.