인프라

젠킨스 플러그인 설치 오류 - java.net.sockettimeoutException

EVO. 2024. 2. 6. 15:04

상황

프리티어 EC2에 Swap 메모리를 설정하고 도커를 설치한다음 Jdk 11버전 Jenkins 최신버전 이미지를 run 했다. 그리고나서 추천플러그인을 설치하는데..(참고로 이후에도 jenkins/jenkins:latest 로 최신버전 이미지를 pull했는데도 같은 상황이다)

 

다음과 같이 몇 개의 플러그인들은 설치가 됐지만 다른 것이 설치가 안되었다. 도커 로그 명령어 (docker logs -f [컨테이너명])을 봤는데 

 

네트워크 오류인가 SocketTimeoutException: connect timed out이라는 에러가 생겼다.

 

정말 여러 상황이 있는데 차근 차근 본인이 속한 오류가 뭔지 생각해보자

 

네트워크 연결 확인

젠킨스 이미지를 실행시킬 때 볼륨 생략하고 보통 이렇게 띄울 수 있다.`sudo docker run -d --name jenkins -p 8080:8080 jenkins/jenkins:latest`

 

8080포트를 열어놓았는지 인바운드 정책을 설정하자

 

그다음 8080포트가 잘 연결되었는지와 IP포트가 잘 연결되는 지 확인해보자

 

IP 확인은 클라이언트 기준에서 $ ping [ip]포트 확인은 $ telnet [Target Server IP] [Target Service Port] 

 

둘 다 정상적이다. 그렇다면 다음으로 넘어가자

 

Jenkins를 최신버전으로 업데이트

https://hub.docker.com/search?q=jenkins

 

Docker

 

hub.docker.com

 

플러그인과의 호환성 문제를 해결하기 위해 안정화된 최신버전 젠킨스를 pull 해야한다고 한다. 그래서  jenkins/jenkins:lts를 컨테이너화 시켰지만 여전히 몇 개의 플러그인만이 설치되며 로그를 확인하면 호환성문제보다는 네트워크 오류인것 같다. 

 

프록시 구성 확인

이건 나한테는 해당되지 않는다. 만약 젠킨스가 프록시 뒤에 있는 경우 젠킨스에서 프록시 설정이 올바르게 구성되있는지 확인해야한다고 한다. 겪어보지 않는 문제이니 pass

 

재설치 무한 반복

Retry를 계속 해보면 설치가 아주 조금씩 되고 있다. 하지만 이 방식은 정말정말 오래 걸린다. 한 사이클 돌 때마다 최소 10분.. 6번만 반복해도 1시간 금방 간다. 완벽하게 설치된다는 보장도 없다.

 

 

플러그인 센터에 접속 못하는 오류를 해결해보기

 

플러그인을 설치하는 곳인 updates.jenkis.io에 접근할 수 있는 지 http 접속을 해보고 ping을 날려 패킷이 정상적으로 응답을 받을 수 있는 지 확인해보라는 글이 있었다. 전자는 성공적으로 200이 와서 플러그인 레포지토리에 접근이 가능하다는 것을 알게 됐지만 ping을 날려보니 패킷이 전혀 돌아오지 않고 버려졌다. 그래서 이부분을 해결해야 할 것 같다.

 

예외스택트레이스에서도 다음과 같이 찍힌다.

 

전으로 돌아가 참고한 사이트의 명령어를 다시 하나하나 살펴보았다. 블로그 글에는 도커를 설치할때 다음과 같은 명령어를 통해 패키지를 설치했다.

출처: https://seongwon.dev/DevOps/20220715-CICD%EA%B5%AC%EC%B6%95%EA%B8%B01/

 

그때는 아무 생각없이 그대로 따라 복사했다. 그리고 예전에 도커 설치할때 내가 올린 글이 있는데 

https://babgeuleus.tistory.com/entry/ci-cd

 

github actions를 통한 CI/CD 구축 (+ 도커)

CI(Continuous Integration): 지속적 통합, 배포 가능한 아티팩트(Jar / Image)를 빌드하는 단계 CD(Continuous Delivery/Deployment): 지속적 배포, 실제 환경에 아티팩트를 배포하는 단계 CI/CD 파이프라인을 구축해야

babgeuleus.tistory.com

여기서 쓴 도커 설치할때 명령어와 다른점이 몇몇 보였다. 패키지 설치할때 참고한 블로그에 누락된 명령어가 있었다.

HTTPS를 통한 저장소 접근을 가능하게 하는 apt-transport-https와 저장소 관리를 위한 software-properties-common이 누락되있었는데 

그래서 그냥 내 블로그보고 도커를 설치하고 젠킨스를 컨테이너화 시켰더니 바로 성공했다.

 

아마 블로그글은 인스턴스를 설치하고 apt-transport-https는 필수적으로 설치해야할 패키지라서 누락시킨 것 같다. 아무튼 이제 젠킨스 플러그인 사이트에 접속이 가능해져서 필수적인 플러그인들을 빠르게 설치할 수 있었다.!

'인프라' 카테고리의 다른 글

github actions를 통한 CI/CD 구축 (+ 도커)  (0) 2024.02.01