• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

"Jenkins를 이용한 CI/CD 자동화 도구의 사용" 챕터에 대한 질문드립니다.

23.04.12 03:05 작성 23.04.12 03:23 수정 조회수 837

0

안녕하세요! 도원님 ! 강의영상 시간날때마다 잘 보고 있습니다. 다른 분들 질문 보시면 짜증내시는 분들도 많으시지만, 저는 개인적으로 이슈해결은 개발자들의 숙명이라고 생각하고 해결하는 과정도 하나의 공부로 보고 있습니다. 질문에 앞서서 양질의 강의를 제공해주셔서 감사하다는말 먼저 전합니다!

"Jenkins를 이용한 CI/CD 자동화 도구의 사용" 챕터 강의를 보면서 의문점이 들었습니다. 젠킨스서버와 도커서버를 두개로 나누셨는데, 이 목적이 실제 aws로 구축한다고 가정한다면,

-- 질문 1 --

ec2로 젠킨스 서버(1)를 구동시키고, 또 다른 ec2에 배포서버(2)가 존재한다는 가정을 보여주시기 위함일까요?

 

-- 질문 2 --

다른분이 질문 남겨주셨지만, 그렇다면 하나의 서버(ec2)에서 구동시키는 상황이라면 굳이 ssh를 이용해서 통신할 필요 없이 젠킨스에서 생성된 war을 서버에서 바로 실행하도록 하는걸까요?

 

 

-- 질문 3 --

m1 맥북 사용중입니다.

젠킨스에서 Configure System 설정을 해줄때

SSH Server와 고급에 관련된 모든 내용을 다 적어서 Test 접속을 해보면, 아래와 같은 에러가 뜨면서 접속이 되지 않습니다.

jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [docker-server]. Message [java.net.ConnectException: Connection refused (Connection refused)]]

docker-server status를 찍어보면 정상 작동중입니다. m1으로 docker-server는 별다른 설정 없이 바로 start가 되고, sysconfig에 docker와 같은 파일이 따로 존재하지 않던데, 그게 문제가 되는건가요?

docker-server에서 ifconfig를 찍어보면 en0은 없고 docker0, eth0, lo 3개가 있길래 eth0 ip주소로 접속 시도를 해봤습니다(docker0도 해봤습니다).

 

감사합니다.

 

답변 1

답변을 작성해보세요.

1

안녕하세요, 이도원입니다.

문의사하 질문에 답변 및 의견드립니다.

-- 질문 1 --

ec2로 젠킨스 서버(1)를 구동시키고, 또 다른 ec2에 배포서버(2)가 존재한다는 가정을 보여주시기 위함일까요?

-> ec2 서버를 분리하여 실습을 진행한 것은 배포서버와 운영서버(도커 및 K8s)를 분리해서 작업하는 환경으로 실습하기 위함이었습니다. 실무에서도 하나의 서버에 모든 환경을 구축하여 테스트하는 것은 개발자 테스트 단계까지는 가능할지 모르나, 통합테스트 환경만 되더라도 분리한 인프라에서 테스트해야 하기 때문에, 미흡하나마 분리된 환경으로 실습을 구성하였고, 대부분의 수강생분들이 하나의 PC에서 작업하기 때문에, Docker를 이용하여 가상 서버를 구성하고 SSH 접속을 통하여 작업이 이뤄질 수 있는 환경으로 도커이미지를 생성해서 공유해 드리고 있습니다.

-- 질문 2 --

다른분이 질문 남겨주셨지만, 그렇다면 하나의 서버(ec2)에서 구동시키는 상황이라면 굳이 ssh를 이용해서 통신할 필요 없이 젠킨스에서 생성된 war을 서버에서 바로 실행하도록 하는걸까요?

-> 하나의 EC2에서 Jenkins 및 Docker를 기동하여 실습하신 다면, 굳이 SSH 서버를 사용하지 않아도 가능합니다. EC2에 직접 Jenkins 배포판과 Docker Engine을 설치하시고 Jenkins의 결과물을 Docker Engine에서 사용할 수 있습니다. 다만, Jenkins를 Docker로 설치하실 경우에는 별도의 가상서버의 개념이기 때문에, SSH를 통한 파일 전송이 필요할 수 있습니다.

-- 질문 3 --

m1 맥북 사용중입니다.

젠킨스에서 Configure System 설정을 해줄때 SSH Server와 고급에 관련된 모든 내용을 다 적어서 Test 접속을 해보면, 아래와 같은 에러가 뜨면서 접속이 되지 않습니다.

jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [docker-server]. Message [java.net.ConnectException: Connection refused (Connection refused)]]

docker-server status를 찍어보면 정상 작동중입니다. m1으로 docker-server는 별다른 설정 없이 바로 start가 되고, sysconfig에 docker와 같은 파일이 따로 존재하지 않던데, 그게 문제가 되는건가요?

docker-server에서 ifconfig를 찍어보면 en0은 없고 docker0, eth0, lo 3개가 있길래 eth0 ip주소로 접속 시도를 해봤습니다(docker0도 해봤습니다).

->Jenkins에서 시스템 설정에서 SSH 서버 추가를 하시면서 Test를 반드시 진행하셔야 실제 배포 작업에서도 문제없이 사용될 겁니다. 만약 이과정에서 서버 접속이 되지 않는 경우라면, SSH 서버 접속에 문제(포트, 아이디, 패스워드 등)가 있을 수 있습니다. 만역, Host PC(M1)에서 직접 Docker 컨테이너 서버에 SSH로 접속하는데에 문제가 없다고 한다면, Jenkins와 Docker 컨테이너가 같은 Network 대역대인지도 확인해 보시면 좋을 것 같습니다. 예를 들어, Jenkins를 Docker로 기동하여 IP가 172.17.0.2로 할당되었다면, 이어서 docker-srver를 기동하였을 때는, 172.17.0.3으로 IP가 할당될 가능성이 높습니다. 이때는, 컨테이너와 컨테이너 간의 접속이기 때문에, ssh root@172.17.0.3 -p 22 (기본 포트)로 접속해 보시면 됩니다.

좋은 의견 감사드리면, 작업에 문의사항 있으시면 언제든지 글 남겨주세요.

감사합니다.