안녕하세요.......원래는 git 연동 + 빌드 + 배포부터 먼저 글을 쓰려 했으나..(공부를 하다 막혀서 슬퍼하는 중)
그래서 오늘은 Jenkins agent 노드 추가에 대해서 글을 써보려고 합니다!
여기서 agent 노드는 현재 jenkins가 깔려있는 컴퓨터가 아닌
또 다른 컴퓨터(or 클라우드 컴퓨터)를 말하는데요
새로 추가할 agent 컴퓨터에 jenkins를 깔지 않아도 jenkins의 업무를 대리로 시키거나, 분산 처리 등을 할 수 있다고 하더군요(!)
마침 무료 평가판이 이틀 남은 GCP VM 인스턴스가 있어서 노드 추가를 해보았습니다(지금은 사라진 친구입니다)
그럼 추가 시작해보겠슴당!
일단 Jenkins 관리 -> 노드 관리에 들어갑니다
이후 신규노드를 입력하고 노드 명을 입력해줍니다!
노드 명은 외부 IP 주소로 설정해주면 됩니다!
그리고 Permanent Agent 버튼을 클릭해주면 됩니다!
그럼 다음과 같이 Node를 추가하는 화면이 나오게 됩니다
먼저 Remote directory 화면을 채우면 되는데, pwd쳐서 나오는 홈 디렉토리 주소를 써주시면 됩니다
Labels에는 Name과 마찬가지로 외부 IP 주소를 입력해주시면 됩니다
이후 Launch method 를 지정해줄 때 Launch agent via SSH로 지정했어요! 그럼 다음과 같은 화면이 나오게 됩니다
Host 에는 Name, labels와 마찬가지로 외부 IP 주소를 적어주면 됩니다
이후 Credential(인증)은 새로 만들어주면 되는데
Add를 클릭하면 Jenkins라는 버튼이 뜨게 됩니다 클릭!
그럼 Add Credential Provider 창이 등장하게 됩니다
첫번째로 Kind에서 저희가 추가하려는 SSH Username with private key를 클릭해주면 됩니다
그럼 다음과 같이 입력창이 바뀌게 됩니다
먼저 ID, Username에는 서버의 유저 이름을 써주면 됩니다
그 다음 Private key 를 추가하기 위해 Enter directly를 누르고, Add 버튼을 누르면 다음과 같은 입력창이 나타나게 됩니다!
그럼 이제 private key를 만들러 인스턴스에 접속하면 됩니다
일단 .ssh 폴더로 이동을 해주시고,
다음 명령어를 입력해서 RSA 키를 생성해주시면 됩니다
ssh-keygen -t rsa -f {key이름}
이후 authorized_keys에 생성된 public key를 붙여줍니다!
혹시 authorized_keys 파일이 없어도 생성되니 다음 명령어를 실행해주세요!
cat {키이름}.pub > authorized_keys
그리고 이제 private key의 내역을 복사해주고 Private Key 부분에 붙여넣어줍니다
이 때 ----BEGIN OPENSSH PRIVATE KEY----,
-----END OPENSSH PRIVATE KEY-----
부분도 다 붙여넣어줘야합니다!
위 부분들을 다 입력하고 ADD 버튼을 눌러주면, SSH 에 대한 Credential이 추가가 됩니다
그럼 이제 추가된 credential 을 선택해주면 됩니다
그 뒤의 Host key Verification Strategy는
Manually trusted key Verification Strategy를 선택했습니다!
이후 Save 버튼을 누르면, 다음과 같이 node가 추가된 것을 볼 수 있는데, 아직 연결은 안된 것을 확인할 수 있습니다!
연결을 하기 이전에 jenkins가 연결된 환경에서도 작동할 수 있도록 하기 위해서는 연결된 환경에 Jdk 8 이상을 설치해줘야합니다(Jenkins는 java runtime위에서 도는 서버입니다)
이후 연결을 위해 node이름을 클릭 후, Launch agent 버튼을 클릭하면 됩니다!(뒤에 에러 남 주의 에러 없이 연결해보고 싶다면 에러 설명 부분 스킵하고 뒤에 가시면 됩니다)
그럼 설치하는 것에 대한 로그가 뜨는데 에러가 난 것을 확인할 수 있습니다 Authentication failed 가 떴는데요
누군가 친절하신 분이 해결책을 올려주신 것!
ssh 폴더, public key 파일, private key 파일, authorized_keys 파일의 권한 문제라고 하더군요
다음과 같이 권한을 변경해주면 해결이 되는 것을 확인할 수 있습니다!
이후 다시 Agent launch 를 진행하면 다음과 같이 잘 연결이 되는 것을 확인할 수 있습니다!
아무튼 이렇게 추가가 됐습니다!
(이후에는 클라우드 만료가 돼서 아무것도 못한 것...다시 발급 받으러 가야합니다)
제가 jenkins를 업무용으로 사용해본게 아니라 혹시 틀릴 수도 있으니 틀리다면 댓글로 알려주세요..!
그럼 다들 즐코하세요!