Jenkins는 확실히 암덩어리 같은 존재다.
클라우드 엔지니어를 꿈꾸는 입장에서 CI/CD 환경 구성 한번 정도는 확실하게 해봐야 하지 않을까? 싶어서 이번 졸업작품에서 내가 우리 팀원들을 위한 빌드/배포 자동화를 구현하기로 마음을 먹었다.
흐름은 요거 --> GitHub -> Jenkins -> App Build -> Docker Build -> ECR -> ECS
GitHub Actions라는 요즘 좋은 기술도 있지만, 취준생 입장에서는 기업에서 쓰는 도구를 그래도 한번 써보는 게 좋지 않을까? 싶어서 국밥 같은 Jenkins로 구축해 보기로 정했다.
젠킨스 서버로는 AWS의 EC2 중 t2.micro 인스턴스를 사용했다. 원래는 private subnet 이용하는 게 정배지만, 개발단계이기도 하고, 우리는 돈 없는 가난한 학생이기에 그냥 public subnet에 생성해서 bastion host의 역할까지 한방에 해결하기로 결정했다.
그리고 이제 본격적으로 Jenkins를 이용한 파이프라인 구축 작업에 들어가는데...
나는 Jenkins가 밉다 - 1
인스턴스 생성 후 Jenkins on AWS 공식 문서를 참고하여 순조롭게 설치를 완료했다.
그리고 초기 플러그인 설치를 하는데.. 그냥 설치에 성공한 플러그인이 손에 꼽을 정도로 다 실패한다.
원인을 모르겠다.
실패한 환경은 다음과 같다.
windows pc + LAN 조합으로 젠킨스 서버에 접속했을 때는 < 그냥 플러그인 중 90%가량 다 설치 실패 떴다.
아무리 해도 안되길래 그냥 자포자기한 상태로 거실에 맥북 하나 들고나와서 와이파이로 젠킨스 서버에 들어가서 설치하니까 바로 성공했다;
우연의 일치인가? 싶어서 다시 인스턴스 지우고 윈도우 피씨로 젠킨스 서버 들어가서 까니까 또 실패한다.
어차피 네트워크 트래픽은 젠킨스가 돌아가는 EC2에서 발생할 텐데 왜 클라이언트 환경이 영향이 가는지 모르겠다.아직까지 우연의 일치인가.?
나는 Jenkins가 밉다 - 2
우여곡절 끝에 설치를 완료했다.
젠킨스에 들어가니까 Amazon linux 2는 더이상 지원하지 않는단다. (너네가 레퍼런스에 아마존 리눅스 2로 적어놨잖아..;)
잘 돌아는 가는데 올해 5월인가 6월인가에 지원이 끊긴다길래 쨌는 다시 지우고 Amazon Linux 2023으로 OS 바꿔왔다 다시
나는 Jenkins가 밉다 - 3
이거 지금 해결 중이다.
내 젠킨스의 일꾼(node)들이 저장공간 부족으로 파업을 했다 지금.
아니 근데 EBS 볼륨 4기가가 남아있는데 자꾸 450 메가밖에 안 남았다길래 보니까 이 일꾼들이 사용하는 공간이 EBS 루트 볼륨이 아닌 /tmp 볼륨에서 일을 하려 해서 자꾸 용량 부족을 호소한다.
해결: /tmp는 메모리 저장소라 1기가 램의 t2.micro에러는 부족한게 맞다. 그냥 노드들 최소 필요 공간 0으로 만들어서 해결했다.