데브코스 TIL - 젠킨슨 프로젝트 설정
젠킨슨 프로젝트 설정
실습 단계
- 프로젝트 소스가 담긴 github 레포지토리 준비
- 젠킨스의 빌드 환경 설정
- Docker를 이용하여 이미지를 빌드하고 Docker Hub 레지스트리에 푸시
- kubectl을 이용하여 레지스트리로부터 이미지를 가져다가 같은 클러스터에 배포
실습
1. github 레포지토리 준비
https://github.com/hyemin12/pl-exp
2. 젠킨슨 플러그인 설치하기
- Docker Pipeline
- Kubernetes CLI
3. new Item 버튼 클릭해서 새로운 아이템 만들기
item name: simple-echo-1
Freestyle project
4. 아이템에 내용 작성하기
Source Code Management
섹션에서 Git을 선택하고, 레포지토리 url 링크 작성하기
Build Steps
에서 Execute shell
을 클릭하고 내용 작성하기
1
2
docker build -t hyeem66/simple-echo .
docker push hyeem66/simple-echo
5. 새로운 pod template 만들기
Manage Jenkins - Clouds - kubernetes 에서 새로운 템플릿 만들기
구분 | 내용 |
---|---|
name | sample |
namespace | default |
labels | jenkins-sample-agent |
Usage | Only build jobs with label expressions matching this node |
pod template to ingerit from | default |
컨테이너 1
구분 | 내용 |
---|---|
name | jnlp |
docker image | sheayun/jnlp-agent-sample |
Command to run | ”” |
Arguments to pass to the command | ”” |
Environment Variable key | DOCKER_HOST |
Environment Variable Value | tcp://localhost:2375 |
컨테이너 2
구분 | 내용 |
---|---|
name | dind |
docker image | docker:latest |
Command to run | /usr/local/bin/dockerd-entrypoint.sh |
Arguments to pass to the command | ”” |
Environment Variable key | DOCKER_TLS_CERTDIR |
Environment Variable Value | ”” |
advanced
옵션의 Run in privileged mode
체크
6. simple-echo-1의 Configure에서 옵션 설정하기
Restrict where this project can be run
이 아이템을 빌드할 때는 특정한 포트만을 사용하라.
라고 지정하는 옵션
Restrict where this project can be run의 값으로 jenkins-sample-agent
로 설정
7. 다시 빌드
Build Now
버튼을 눌러 다시 빌드해보기
=> 빌드에 실패함
왜?
docker hub에 권한 설정을 하지 않았기 때문에!
8. dockerhub 정보 입력하기
Manage Jenkins - Credentials
global
을 클릭하고 Add Credentials
를 입력하기
9. 프로젝트에도 환경변수 설정하기
Configure - Build Environment - Use secret text(s) or file(s)
구분 | 내용 |
---|---|
Username Variable | DOCKERHUB_USER |
Password Variable | DOCKERHUB_PASSWD |
Credentials | 직전에 만든 dockerhub credential 선택 |
Configure - Build Steps
스크립트에 코드 추가하기
1
2
3
docker build -t hyeem66/simple-echo .
docker login -u ${DOCKERHUB_USER} -p ${DOCKERHUB_PASSWD}
docker push hyeem66/simple-echo
10. 다시 빌드해보기
빌드가 성공하면 Configure - Build Steps
스크립트에 코드 추가하기
1
2
3
4
5
docker build -t hyeem66/simple-echo .
docker login -u ${DOCKERHUB_USER} -p ${DOCKERHUB_PASSWD}
docker push hyeem66/simple-echo
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
11. 쿠버네티스 클러스터 접근 권한 설정 - 준비하기
1
vi ~/.kube/config
를 사용하여 config파일을 확인하면 다음과 같은 정보들이 포함되어 있음
- 쿠버네티스 컨트롤로 플레인에 접속하기 위한 서버 url
- 접속할 계정 이름
- 계정을 인증하기 위하여 제출할 데이터
이 파일은 노출되면 안된다. 하지만 클러스터 내의 젠킨스에게는 알려줄 수 있다.
해당 파일의용을 kubeconfig
파일에 복사해서 붙여넣기
server만 다음과 같이 수정
1
server: https://kubenetes.default
simple-echo1 - Configure - Build Environmet에 들어가서 credentials 등록하기
Configure Kubernetes CLI (kubectl) with multiple credentials
옵션 체크하고, 방금 생성한 kubeconfig credential 등록하기
12. 빌드가 성공된다면
1
kubectl get deployments
1
kubectl get svc
명령어를 입력해 제대로 작동하고 있는지 확인하고,
1
curl localhost:30000
을 입력하여 IP 주소를 확인