-
Notifications
You must be signed in to change notification settings - Fork 0
[INFRA] 1. infra 서버 세팅
본격적인 cicd 구축에 앞서 이러한 구조의 infra 서버를 세팅한다.
먼저 infra 서버에 접속한다.
ssh -i {pem키} ubuntu@{infra서버 ip}
가끔 WARNING: UNPROTECTED PRIVATE KEY FILE! 이라는 에러가 뜨는데
chmod 600 {pem키}
를 통해 pem키 파일의 권한을 바꿔주면 된다.
우리팀의 EC2는 메모리가 2GB여서 jenkins가 실행중에 메모리 부족으로 멈출 수 있다.
이를 방지하기 위해 swap 메모리를 설정하고 시작하자.
free -h
라는 명령어를 통해 현재 메모리 상태를 확인할 수 있다.
(현재 메모리는 2G, swap 메모리는 0B)
swap memory를 할당 하는 것은 하드디스크를 이용하기 때문에
df -h
라는 명령어를 통해 현재 하드디스크의 용량도 확인해본다.
하드디스크의 용량을 확인했다면, 그 중 얼마를 swap 메모리로 사용할지 정하고 아래 명령어를 입력한다.
sudo fallocate -l {N}G /swapfile
N에 본인이 생성할 swap 메모리를 지정한다.
(펀잇팀은 일단 2G만큼을 swap 메모리로 사용하기로 했다)
chmod 600 /swapfile
만들어진 swapfile에 대한 권한을 수정한다.
sudo mkswap /swapfile
sudo swapon /swapfile
생성된 swapfile을 이용하여 swap 메모리를 활성화시킨다.
시스템이 재부팅 되어도 swap 세팅이 적용될 수 있도록 설정 파일을 수정하자.
vi /etc/fstab
명령어를 이용해 에디터를 열고,
해당 파일의 마지막 라인에 /swapfile none swap sw 0 0
명령어를 입력한 후 wq!
로 저장하고 나온다.
위의 과정이 귀찮다면 이 명령어 한줄로도 가능하다
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
swap 메모리 설정 후의 메모리 상태
우리의 ubuntu machine에 jenkins를 직접 설치하려면 많은 과정을 거쳐야한다.
하지만 docker를 사용한다면 매우 간단하게 jenkins 컨테이너를 받아와 실행가능하다.
그러므로 펀잇은 docker를 사용해 jenkins를 설치하기로 했다!
먼저 apt
package의 index를 최신으로 업데이트하고, apt
가 HTTPS를 통해 패키지를 설치할 수 있도록 설정한다.
$ sudo apt-get update
$ sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
Docker의 공식 GPG키를 추가한다.
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
저장소를 설정해준다.
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
마지막으로, Docker Engine을 설치하면 끝!
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo docker run hello-world
라는 명령어를 입력했을 때 이미지가 정상적으로 작동된다면, 설치가 된 것이다!
아래 명령을 통해 젠킨스 이미지를 컨테이너로 띄울 수 있다.
sudo docker run -d --name jenkins -p {호스트 포트}:{컨테이너 포트} jenkins/jenkins:jdk11
-
-name
: 컨테이너의 이름을 jenkins로 설정한다 -
-p {호스트 포트}:{컨테이너 포트}
: 컨테이너의 외부와 통신할 포트(앞의 값)를 내부적으로 사용할 포트(뒤의 값)로 포워딩해준다.(펀잇의 ec2는 8080이 막혀있기 때문에 80으로 받아온 후 jenkins 포트인 8080으로 포트포워딩했다.)
sudo docker ps
라는 명령어를 통해 현재 가동적인 컨테이너를 확인할 수 있다.
여기까지 진행하면 infra 서버 안에서 해야하는 설정은 끝이난다!
이제 나머지는 jenkins의 웹 인터페이스에서 진행하면 된다.
{infra서버 ip}:80
를 웹에 입력하면 jenkins의 웹 인터페이스에 접근할 수 있다.
초기 접속을 하기 위해서는 Administrator password를 등록해야 한다.
해당 키를 확인하기 위해서 infra 서버에 접속해 다음 명령어를 입력하자.
$ sudo docker exec -it jenkins bash
$ cat /var/jenkins_home/secrets/initialAdminPassword
이를 통해 찾은 키를 입력하고 continue 버튼을 누른다.
위와같이 jenkins 초기 플러그인 설정 페이지가 나온다.
우리는 install suggested plugins를 눌러 추천 플러그인들을 설치하고 넘어가자.
플러그인이 설치되는 중~
플러그인 설치가 끝나면 위와 같이 유저 설정 페이지가 나온다.
유저 설정이 끝나면 앞으로 jenkins에 접속할 url을 설정할 수 있다.
이왕이면 기본값을 권장한다.
여기까지 했으면 초기 설정은 끝이난다!👏👏👏
jenkins관리 > script console에 들어가서 time zone 설정
jenkins관리 > tools > gradle installation에 들어가서 gradle 설정
이 글은 펀잇팀 오잉이 작성했습니다
- 📚 프론트엔드 개발 문서
- 🌏 브라우저 지원 범위
- 🧪 프론트엔드 테스트 전략
- [웹 접근성] a tag와 button의 차이는 무엇일까?
- multipart
- SvgSprite 컴포넌트 사용하기
- [INFRA] 프론트엔드 CI/CD 구축
- [기술 검토] 리액트 쿼리 도입 이유
- [기술] 로그인 기능 도입기
- 🐛 S3 배포 캐싱 오류
- 이미지를 위한 S3와 Cloudfront 설정하기
- 📓 성능리포트 ‐ 펀잇 서비스 최적화하기
- 펀잇 SEO 개선하기
- 📚 백엔드 개발 문서
- intellij에서 private DB 연결하기
- [INFRA 0] 전체 infra 구조 - ver1
- [INFRA 1] infra 서버 세팅
- [INFRA 2] 백엔드 CI/CD 구축
- [INFRA 3] 백엔드 DB 연결
- [INFRA 4] 깃허브 PR 라벨을 기준으로 젠킨스 빌드하기
- [LOG] 로그 세팅
- [Trouble Shooting] 일관된 테스트 격리 적용하기
- [Trouble Shooting] 프록시로 동작하는 @Transactional, 전파 옵션 관리