젠킨스 깃허브 연동하여 서버 관리

LCJ·2022년 10월 25일

클라우드캠프

목록 보기
2/3

개발 도구와 연동

git

1) 개발 도구 설정
폴더 생성 -> 오른쪽 클릭 -> open folder as pycharm

2) 개발 도구에 git 계정 설정
file -> settings -> version control -> Github -> + 버튼 클릭 -> Login via Github -> 로그인

3) 원격 저장소에서 파일 받아오기
VCS -> Get From Version Control -> URL:[원격저장소 주소] -> Clone

4) 개발 도구에서 push 해보기
파일 생성 또는 수정 -> add -> commit -> push

Jenkins

1) 젠킨스에 플러그인 설치
대시보드 -> 젠킨스 관리 -> 플러그인 매니저 -> 설치 가능 -> Publish Over SSH 다운로드!

2) 젠킨스 서버에서 SSH 설정

  • EC2를 생성할 때 사용한 키 파일을 pem 형식으로 변환
  • puttygen.exe 프로그램 사용
  • puttygen에서 load 로 키 파일 불러오기
  • Conversions에서 Export OpenSSH Key로 저장
  • 저장한 키 파일을 젠킨스 서버로 옮겨두기

chmod 400 키파일
ssh ubuntu@[ec2의ip주소] -i [키파일]
접속이 되면 성공

3) 젠킨스 설정 수정
젠킨스 대시보드 -> Jenkins 관리 -> 시스템 설정 -> Publish over SSH -> Key: 키파일 내용 붙여넣기, SSH Servers에서 추가 -> Name: 아무거나, Hostname: ec2의ip주소, Username: ubuntu -> 저장

파이프라인 선택 -> 구성 -> 빌드 후 조치 에서 Send build artifacts over SSH -> Name: 아무거나, Source files: , Remote directory: /, Exec command: sudo bash -c "cp /home/ubuntu/ /var/www/html/" -> 저장

젠킨스로 컨테이너 이미지 만들기

1) 젠킨스 서버에 도커 설치

yum install -y yum-utils 
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-nightly
yum-config-manager --enable docker-ce-test
yum install -y docker-ce docker-ce-cli containerd.io --allowerasing

systemctl enable docker
systemctl restart docker
chmod 777 /var/run/docker.sock

2) 젠킨스로 도커 이미지 생성
파이참 프로젝트에서 Dockerfile 작성 및 github에 push

젠킨스 파이프라인 Build Steps에서

docker login -u [도커허브ID] -p [도커허브패스워드]

docker build --tag [이미지이름] .
docker push [이미지이름]

도커 허브에 업로드 되는 것 확인

쿠버네티스 환경에 배포

1) k8s master 노드에서 ssh 키 설정

rm -rf ~/.ssh/*
ssh-keygen -t rsa -b 4096 -m PEM 

ssh-copy-id root@마스터노드IP

2) 젠킨스에서 확인
마스터에서 개인키 복사( 마스터에서 ~/.ssh/id_rsa)

chmod 400 키파일이름
ssh root@마스터노드IP -i 키파일이름

접속되면 됨

3) 젠킨스에서 설정 변경
젠킨스 대시보드 -> Jenkins 관리 -> 시스템 설정 -> Publish over SSH -> Key: 키파일 내용 붙여넣기, SSH Servers에서 추가 -> Name: 아무거나, Hostname: 마스터노드의IP, Username: root -> 저장

파이프라인 선택 -> 구성 -> 빌드 후 조치 에서 Send build artifacts over SSH -> Name: 아무거나, Source files: *, Remote directory: /Exec command:

sed -i "s/latest/$BUILD_ID/g" httpd-deployment-prod.yml
sudo bash -c "kubectl apply -f httpd-deployment-prod.yml"

4) 개발 환경 설정
파이참에서 httpd-deployment-prod.yml 파일 추가

apiVersion: apps/v1
kind: Deployment
metadata:
 name: httpd-deployment-prod
 namespace: prod
spec:
 selector:
   matchLabels:
    type: web
 replicas: 2
 template:
   metadata:
     labels:
       type: web
   spec:
    containers:
    - name: container
      image: 이미지이름:latest
      envFrom:
      - configMapRef:
          name: httpd-cm-prod
      ports:
      - containerPort: 80
      resources:
        requests:
          cpu: 100m
        limits:
          cpu: 200m

0개의 댓글