본문 바로가기

CICD(BUILD tool)

docker-swarm 이용해서 jenkins / jenkins slave 설치

728x90
반응형

docker swarm으로 로컬에서 젠킨스를 설치하고 슬레이브를 띄워보려고 한다.

 

jenkins image 

https://hub.docker.com/r/jenkins/jenkins

 

Docker Hub

 

hub.docker.com

 

 

jenkins-slave 

https://hub.docker.com/r/jenkins/ssh-agent

 

Docker Hub

 

hub.docker.com

 

 

jenkins-master 올리기

jenkins swarm overlay network를 생성한다.

$ docker network create -d overlay jenkins-net

jenkins-master.yml

version: '3.7'

services:
  jenkins-master:
    image: jenkins/jenkins:lts-jdk11
    ports:
      - 8080:8080
      - 50000:50000
    restart: always
    volumes:
    - ~/Desktop/docker/data/jenkins_master:/var/jenkins_home
    environment:
      TZ: "Asia/Seoul"

networks:
  default:
    name: jenkins-net
    external: true

볼륨은 미리 생성해야 한다.

 

 

docker-swarm을 이용해서 마스터 올리기 

$ docker swarm init 

$ docker stack deploy -c jenkins-master.yml jkns-master

젠킨스 로그를 확인하면 password를 확인할 수 있다.

 

로그보는법 

$ docker service logs jkns-master_jenkins-master

 

 

젠킨스 플러그인 설치 Install suggested plugins 선택 

 

 

s

 

 

공개키 생성 ssh-keygen 실행

% docker exec -it jkns-master_jenkins-master
% ssh-keygen -t rsa -C ""

 

id_rsa와 id_rsa.pub 파일이 잘 생성됐는지 확인 

 

jenkins-slave 올리기

jenkins-worker01.yml

version: '3.7'

services:
  jenkins-worker01:
    image: jenkins/ssh-agent
    restart: always
    volumes:
    - ~/Desktop/docker/data/jenkins_worker01:/var/jenkins_home
    environment:
      - JENKINS_SLAVE_SSH_PUBKEY=ssh-rsa AAAAB3NzaC1yc2....
      
networks:
  default:
    name: jenkins-net
    external: true

JENKINS_SLAVE 값은 master의 id_rsa.pub 값이다.

 

Jenkins worker sevice up

$ docker stack deploy -c jenkins-worker01.yml jkns-worker01

 

master node에서 ssh-copy-id

ssh-copy-id를 이용하면 암호없이 ssh 로그인이 가능하다.

$ ssh-copy-id jenkins@jenkins-worker01

 

master에 노드 추가

jenkins관리 > set up agent

 

노드명을 설정하고 Permanent agent선택 

 

 

고급설정에 worker의 java경로를 써준다

(which java)

 

 

Jenkins-slave 노드 

 

 

728x90
반응형