Jenkins 셋팅 및 Pipline 생성 및 Docker 이미지, NCR 업로드 (2부)

mcock·2022년 5월 18일
0

NKS CI/CD구축

목록 보기
3/7

앞서 1부에서 Jenkins 설치를 완료 하였습니다.
Jenkins 배포 설정을 시작 합니다.

  1. publish over ssh 플러그인을 설치 합니다.

    플러그인 관리에서 ssh로 검색 후 publish over ssh 플러그인을 설치 합니다.

설치가 완료되면 ssh 터미널 접속 후 아래와 같이 ssh keygen 생성을 합니다.

.ssh 아래 id_rsa, id_rsa.pub 이 생성 됩니다. 저는 생성시 비밀번호 생략.

authorized_keys 파일도 생성 합니다.

  1. maven 및 apache-maven 설치를 합니다.

    apache-maven 설치를 합니다.

  2. tomcat 을 설치 합니다. 본 내용에서는 tomcat 설치 내용은 너무 길어서 생략 합니다.
    저는 tomcat, apache-maven 둘다 아래 경로로 하였습니다.
    /opt/maven
    /opt/tomcat

이제 jenkins 의 Global Tool Configuration 에서 설정을 합니다.

  1. JDK 설정을 합니다.
  2. maven 설정을 합니다.

    아래로 스크롤해서 하단에 maven 설정이 또 있습니다.
  3. git 설정을 합니다.

이제 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 설치를 하겠습니다..

0개의 댓글