모든 강의 이미지 출처는 [인프런] 쿠버네티스 어나더 클래스(지상편) - Spring 1,2 입니다.
Rocky Linux 초기 세팅은 https://cafe.naver.com/kubeops/111 를 통해 수행하였으며, 설치 중 특이사항만 기재합니다.
jenkins 설치를 위한 스크립트 수행 시 아래 명령에서 Error: Failed to download metadata for repo 'jenkins': repomd.xml parser error: Parse error at line: 5 (EntityRef: expecting ';' )
가 발생하고 Jenkins 설치가 제대로 되지 않는 것을 확인하였다.
yum install -y jenkins-2.440.3-1.1
repomd.xml 파일과 연관이 있는 것 같아 서치(w. genimi)를 해보니, Jenkins 서버에서 보안상의 이유로 HTTP 통신을 허용하지 않기 때문에 요청이 거부되었을 것을 예상된다는 답변을 받았다.
찾아보니 Jenkins 홈페이지에서도 제시하는 설치 가이드에서 HTTPS를 사용하는 것을 볼 수 있었다.
따라서 Jenkins 저장소 정보가 들어있는 /etc/yum.repos.d/jenkins.repo
파일에서 HTTP 대신 HTTPS 로 baseUrl을 변경해주었다.
vi /etc/yum.repos.d/jenkins.repo
[jenkins]
name=Jenkins-stable
baseurl=https://pkg.jenkins.io/redhat-stable # http -> https로 변경!
gpgcheck=1
변경사항을 저장한 후, Jenkins 설치 명령어를 재수행했더니 정상적으로 다운되었다.👍
# 초기 비밀번호 확인
[root@cicd-server ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
# 초기 비밀번호로 Jenkins 대시보드 로그인
http://192.168.56.20:8080/login
플러그인 설치 후, Admin 계정 정보를 입력해주면 Jenkins 설치 완료!
jdk 경로 확인 후, /bin/java 경로를 제외하고 복사하기.
find / -name java | grep java-17-openjdk
/usr/lib/jvm/java-17-openjdk-17.0.15.0.6-2.el9.aarch64/bin/java
Gradle도 스크립트에서 설치한 경로로 지정하기. (이미 설치되어 있으니 Install automatically
는 체크 해제한다.)
DockerHub 계정은 이미 생성되어 있으므로 넘어가고, Jenkins가 Docker를 사용할 수 있게 권한을 추가해준다.
# jeknins가 Docker를 사용할 수 있도록 권한 부여
[root@cicd-server ~] chmod 666 /var/run/docker.sock
[root@cicd-server ~] usermod -aG docker jenkins
# Jeknins로 사용자 변경
[root@cicd-server ~] su - jenkins -s /bin/bash
# 자신의 Dockerhub로 로그인 하기
[jenkins@cicd-server ~] docker login
# 인증서를 저장할 폴더 생성
[jenkins@cicd-server ~] mkdir ~/.kube
# scp로 master node에서 인증서 복사
[jenkins@cicd-server ~] scp root@192.168.56.30:/root/.kube/config ~/.kube/
# kubectl 명령어 정상 수행 확인
[jenkins@cicd-server ~] kubectl get pods -A
Github fork 후kubernetes-anotherclass-sprint2/2121/deploy/k8s /deployment.yaml
파일에서 컨테이너 이미지 경로를 나의 docker Hub Repo로 변경한다.
2121-source-build
라는 이름의 새로운 Item 생성 후, Build 시 사용할 Github 정보를 입력한다.
그리고 Build 시 gradle clean build
명령을 수행하도록 Build Step을 추가한다.
지금 빌드 클릭 시, 설정했던 gradle clean build
명령어가 수행되며 Jenkins workspace 하위에 jar 파일이 생성된 것을 확인할 수 있다.
2121-container-build
라는 이름의 새로운 Item 생성 후, Build 시 사용할 Github 정보를 입력한다. (이 때는 fork한 본인의 레포 정보를 입력한다.)
Additional Behavior > Sparse Checkout paths 항목에 Container Build 대상이 될 Jar 파일의 경로 2121/build/docker
를 기재한다.
이후 Build Steps > Execute shell 항목에 Container Build 후 나의 Docker Hub Repo에 이미지를 push 하도록 스크립트를 기재한다.
빌드 수행 후 Docker Hub에 가면 이미지가 생성된 것을 확인할 수 있다.
2121-deploy
라는 이름의 새로운 Item을 2121-container-build
를 기반으로 생성한다.
Additional Behavior > Sparse Checkout paths 항목에 배포 대상이 될 yaml 파일의 경로 2121/deploy/k8s
를 기재한다.
이후 Build Steps > Execute shell 항목에 kubernetes 리소스들을 배포하도록 스크립트를 기재한다.
Deploy 수행 후, anotherclass-212 네임스페이스와 리소스들이 생성되는 것을 확인할 수 있다.