앞서 1부에서 Jenkins 설치를 완료 하였습니다.
Jenkins 배포 설정을 시작 합니다.
설치가 완료되면 ssh 터미널 접속 후 아래와 같이 ssh keygen 생성을 합니다.
.ssh 아래 id_rsa, id_rsa.pub 이 생성 됩니다. 저는 생성시 비밀번호 생략.
authorized_keys 파일도 생성 합니다.
maven 및 apache-maven 설치를 합니다.
apache-maven 설치를 합니다.
tomcat 을 설치 합니다. 본 내용에서는 tomcat 설치 내용은 너무 길어서 생략 합니다.
저는 tomcat, apache-maven 둘다 아래 경로로 하였습니다.
/opt/maven
/opt/tomcat
이제 jenkins 의 Global Tool Configuration 에서 설정을 합니다.
이제 save 하고 Jenkins 관리에 시스템 설정으로 들어가서
ssh 설정을 합니다. 이게 안보이시면 앞서 ssh 플러그인 설치를 하셨는지 다시 체크 바랍니다.
Passphrase 는 앞서 ssh keygen 으로 키 만들 때 입력한 비밀번호 입니다. 생략하였다면 빈칸으로 두어도 됩니다.
저는 생략하였습니다.
Key 는 id_rsa 개인키를 넣습니다.
앞서 설치한 tomcat 서버 정보를 입력 합니다.
이제 설정 완료 되었고
새로운 Item(Project) 를 생성 합니다.
저는 mysample 이라는 이름으로 생성 하였고 project 타입은
Freestyle project 로 하였습니다.
1부에서 생성한 SourceCommit 의 리파지포리 주소를 넣습니다.
Maven 빌드 설정을 합니다. 저는 POM 경로를 풀로 입력했는데 환경변수를 이용해서 경로 입력하시면 좋을거 같습니다.
빌드 후 조치 설정을 합니다.
최종 빌드 및 war 가 tomcat 에 배포가 잘 되었는지 확인 합니다.
성공적으로 배포가 완료 되었습니다.
이제 아래 부터는 파이프라인 설정 입니다....
사전에 앞서 만들었던 id_rsa 파일을 jenkins 디렉토리로 복사 합니다.
파이브라인 script 에서 사용하기 위함 입니다.
이제 다시 jenkins 로 돌아와서 파이프라인 생성을 합니다.
생성 후 파이프라인 설정을 합니다.
우선 아래와 같이 매개변수 설정을 합니다.
Pipeline 탭을 클릭하여 script 를 작성 합니다.
script 는 아래와 같습니다.
pipeline {
agent any
tools {
// Install the Maven version configured as "M3" and add it to the path.
maven "M2_HOME"
}
stages {
stage('git Pull') {
steps {
// Get some code from a GitHub repository
git credentialsId: '****', url: 'https://devtools.ncloud.com/****/myreposit.git'
}
}
stage('Build') {
steps {
// Run Maven on a Unix agent.
sh "mvn -Dmaven.test.failure.ignore=true -N -f ${JENKINS_HOME}/workspace/mysample/review/pom.xml clean package"
}
}
stage('Deploy') {
steps {
// Run Maven on a Unix agent.
sh "scp -i \"${JENKINS_HOME}/.ssh/id_rsa\" ${JENKINS_HOME}/workspace/mysample/review/**/*.war root@1****:/opt/tomcat/webapps"
}
}
stage('RESTART') {
steps {
// Run Maven on a Unix agent.
sh "ssh -i \"${JENKINS_HOME}/.ssh/id_rsa\" root@1**** systemctl restart tomcat"
}
}
}
}
script 에서 **** 부분은 각자에 맞게 수정하여 사용해야 합니다.
이제 위와 같이 SourceCommit 에 있는 소스를 가져와 빌드하고 배포까지의 과정(Pipeline) 이 정상 작동 하는지 확인 합니다.
아래 부터는 Docker 이미지 생성과 네이버클라우드 리포지토리 NCR 업로드 설정 입니다.
docker ps -a 로 docker가 설치 되어있는지 확인 후 설치 합니다.
저는 Ubuntu 20.4 에 apt docker-io 로 설치 하였습니다.
설치 방법은 인터넷에 많이 나와 있으므로 생략 합니다.
이미지를 만들기 위해 review_image 폴더를 만들고 해당 폴더에
server.xml , ROOT.war, Dockerfile 를 생성 하였습니다.
vi 편집기로 Dockerfile 를 아래와 같이 만들었습니다.
FROM tomcat:9-jre8-alpine
COPY server.xml /usr/local/tomcat/conf
RUN rm -rf /usr/local/tomcat/webapps/ROOT.war
RUN rm -rf /usr/local/tomcat/webapps/ROOT
RUN rm -rf /usr/local/tomcat/webapps/docs
RUN rm -rf /usr/local/tomcat/webapps/examples
RUN rm -rf /usr/local/tomcat/webapps/host-manager
RUN rm -rf /usr/local/tomcat/webapps/manager
COPY ROOT.war /usr/local/tomcat/webapps
ENV TZ=Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
EXPOSE 7000
이후 아래 명령어로 도커 이미지를 생성 하였습니다.
docker build -t review/ncp .
아래와 같이 생성된 이미지를 확인 합니다.
docker images
이제 네이버클라우드 콘솔로 가서 만든 이미지를 업로드할 NCR 레지스트리를 생성 합니다.
먼저 Object Storage 에서 버킷 생성 후 아래 Container Registry 에서
레지스트리 생성을 합니다.
저는 버킷명을 testmybucket 으로 하였고 레지스트리명은 registrytest 로 하였습니다.
아래와 같이 생성한 레지스트리 "이용 가이드" 버튼을 클릭하면
레지스트리에 로그인 하는 방법과 push 방법이 나와 있습니다.
먼저 로그인 하고 위에서 만든 이미지로 태깅을 합니다.
docker tag [image id] registrytest.kr.ncr.ntruss.com/review:latest
레지스트리의 Public Endpoint 주소 와 이미지명, 버전 입니다.
최종 push 명령어로 이미지를 업로드 합니다.
네이버클라우드 콘솔에서 아래와 같이 이미지가 올라온 것을 확인 할 수 있습니다.
마지막으로 NCR 와 NKS 연동에 필요한 secret 을 생성 합니다. 아래 URL 의 하단 부분에 5번 내용참고
ncloud 컨테이너 레지스트리와 쿠버네티스 연동에 필요한 명령어 (secret 생성 방법)
3부에서는 SourceCommit 에 yaml 파일을 올리는 것과 ㅜNSK(네이버클라우드 쿠버네티스), ArgoCD 설치를 하겠습니다..