는 Java로 작성된 오픈 소스 지속적 통합 도구로서, 소프트웨어 개발을 위한 사용자 지정 통합 서비스를 제공합니다. 많은 개발 팀에서 사용하는 서버 기반 시스템입니다. 소프트웨어 개발 수명 주기(SDLC)를 가속화하고자 한다면 Jenkins를 사용해야 합니다. Jenkins를 사용하면 다양한 환경으로 빌드, 배포 및 테스트를 통합하고 개발 팀이 대기하는 시간을 줄일 수 있습니다. 그뿐만 아니라 지속적으로 통합할 수 있으므로 Jenkins는 빠른 반복 주기를 사용하는 민첩한 방법론과 데브옵스에 매우 적합합니다. AWS는 Jenkins와 같은 애플리케이션을 실행하는 데 적합한 안정적이고 확장 가능하며 안전한 인프라 리소스를 제공합니다. AWS 컴퓨팅에서 Jenkins를 실행함으로써 사용한 만큼만 비용을 지불하고 특정 요구 사항에 맞춰 용량을 확장하거나 축소할 수 있습니다.
해당 모듈은 가 완료 되어 있다는 것을 전제로 합니다.
2. Elastic Container Registry 생성
ECR 콘솔로 이동 합니다.
아래와 같은 이름을 가진 신규 ECR 리포지토리를 생성합니다.
Name : jenkins-ci-test
새로운 ECR Repository를 완성하고, 아래에서 처럼 푸시 명령 보기 버튼을 클릭하여 나오는 명령어를 복사 해놓습니다.
3. Jenkins 설치
Jenkins Node를 아래와 같이 설정하여 생성합니다.
Name - eksworkshop-jenkins-01-Node
OS Image - Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type
aws eks update-kubeconfig --region ap-northeast-2 --name eksworkshop
# 확인
kubectl get nodes
Jenkins Web UI에서 Job 수정
Configure > Build Steps 에서 Add build step 클릭 후 Execute shell 클릭
sed -i "s/CONTAINER_IMAGE/103787587884.dkr.ecr.ap-northeast-2.amazonaws.com\/jenkins-ci-test:$BUILD_NUMBER/" hello-k8s.yml
cat hello-k8s.yml
aws eks update-kubeconfig --region ap-northeast-2 --name eksworkshop
kubectl apply -f hello-k8s.yml
kubectl get all --selector=app=hello-k8s
github repository로 돌아가 다시 소스코드 수정 후 commit.
이미지 빌드 확인
배포가 잘 적용 되었는지 확인합니다.
kubectl get all --selector=app=hello-k8s
TeamRole:~/environment/myeks (master) $ kubectl get all --selector=app=hello-k8s
NAME READY STATUS RESTARTS AGE
pod/hello-k8s-56c474d7f5-48dfj 1/1 Running 0 47s
pod/hello-k8s-56c474d7f5-nwmvc 1/1 Running 0 47s
pod/hello-k8s-56c474d7f5-xmx7h 1/1 Running 0 47s
NAME DESIRED CURRENT READY AGE
replicaset.apps/hello-k8s-56c474d7f5 3 3 3 47s
Jenkins Credential Provider 에서 해두었던 Token 값을 Password에 입력합니다. Username은 GitHub 아이디를 입력합니다.