젠킨스 ssh 설정
rm -rf ~/.ssh/* # 잘못만들었으면 지우고 다시 하자!
ssh-keygen -t rsa -b 4096 -m PEM
엔터 3번
ssh-copy-id root@[쿠버네티스마스터노드IP]
- 키를 발급해서 쿠버마스터에 저장해준 이유는 앞에서 확인했던 대화형 명령어이기 때문이다. 바로 ssh에 접속하기 위해서 키를 발급해 줬던것이다.
ssh root@마스터노드IP
이거 해줬을 때 바로 연결되었으면 오케이!
젠킨스 설정 변경
- 젠킨스 대시보드 -> Jenkins 관리 -> 플러그인 관리 -> Available plugins -> Publish Over SSH 검색 후 체크 -> Download now and install after restart 클릭
-> 설치가 끝나고 실행중인 작업이 없으면 Jenkins 재시작 체크
- 젠킨스 대시보드 -> Jenkins 관리 -> 시스템 설정 -> Publish over SSH -> Key: 키파일 내용 붙여넣기, SSH Servers에서 추가
-> Name: 아무거나, Hostname: 마스터노드의IP, Username: root, Remote Directory: / -> 저장
- key 파일은 jenkins에서 만들었던 키파일이다.
cat cd ~/.ssh/id_rsa
여기서 확인하자!
- 연결이 확인! success
파이프라인 만들기 - front
- 마지막 프로젝트를 이전에 깃웹훅 만들었던 레지스토리에 푸쉬해 놓자!
- 파이프라인 선택 -> 구성 -> 빌드 후 조치 에서 Send build artifacts over SSH
Name: 아무거나, Source files: * , # 모든 파일을 넘기겠다.
Remote directory: /tmp
Exec command:
sed -i "s/latest/$BUILD_ID/g" /tmp/deployment-frontend.yml
sudo bash -c "kubectl apply -f /tmp/deployment-frontend.yml"
- sed 명령어로 만들어지는 이미지의 넘버를 최신으로 유지시켜 주는 것이다.
- bash 명령어로 쿠버를 작동시켜주면 된다.
- yml 파일 작성할 때,
- 사용되는 이미지파일을 latest로 해주기!
- 이 친구는 docker.sock의 권한이 없으니깐 줘야한다.
chmod 666 /var/run/docker.sock
파이프라인 만들기 - back
- 사용하고자하는 프로젝트를 일단 깃 허브에 만들어 놓고 젠킨스와 통신할 수 있도록 레퍼지토리에서 깃 웹훅을 설정해 준다.
- 나머지 설정들은 front랑 동일
- 파이프라인 선택 -> 구성 -> 빌드 후 조치 에서 Send build artifacts over SSH
Name: 아무거나, Source files: * , # 모든 파일을 넘기겠다.
Remote directory: /tmp
Exec command:
sed -i "s/latest/$BUILD_ID/g" /tmp/deployment-backend.yml
sudo bash -c "kubectl apply -f /tmp/deployment-backend.yml"
- docker 이미지 파일을 만들 떄는 방화벽이 활성화되어 있어야한다.
- pip에서 오류가 나면 pip3로 도커파일을 실행해 보자!
- 설정들을 전부 완료했으면 3계층 만들기! 여기서 사용했던 것들중 서비스랑 컨피그맵을 참조해서 태그들을 잘 연결해 주면 된다!
- 젠킨스로 모든것을 컨트롤 하지 않고 연결시키기 위한 나머지 작업을 해줘야 한다!(컨피그맵, 서비스 등등)