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
1) 젠킨스에 플러그인 설치
대시보드 -> 젠킨스 관리 -> 플러그인 매니저 -> 설치 가능 -> Publish Over SSH 다운로드!
2) 젠킨스 서버에서 SSH 설정
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