Container Registry를 활용한 CI 구축하기

NAVER Cloud
NAVER Cloud
Published in
8 min readMar 14, 2019

오늘은 네이버 클라우드 플랫폼에서 Container Image를 저장하고 관리할 수 있는 Container Registry 상품을 활용해서 CI(Continuous Integration)를 구축하는 방법을 다룰 예정입니다.

Container Registry란?

Container Runtime 중 하나인 Docker의 이미지를 저장하기 위한 프라이빗 이미지 저장소를 제공하는 서비스입니다.

기존에는 컨테이너 이미지를 저장하기 위해서 Docker Hub나 기타 다른 오픈소스를 이용해서 자체 레지스트리를 구축했어야 했지만,

네이버 클라우드 플랫폼 Container Registry 상품을 이용하면 이미지 저장을 위한 인프라 운영, 관리에 대한 고민 없이 손쉽게 컨테이너 이미지 레지스트리를 구성하실 수 있습니다.

또한, Container Registry에 푸시 된 이미지는 네이버 클라우드 플랫폼 Object Storage에 저장되므로 이미지에 대한 고가용성이 유지되며, Sub Account의 policy를 이용해서 이미지 pull/push에 대한 접근 권한 관리도 가능합니다.

Container Registry 등록 및 CI 구축 방법

그럼 이제 본격적으로, Container Registry를 활용해 CI 구축을 진행해봅시다! 대략 아래의 그림과 같이 진행이 되는데요,

로컬에서 Container 디스크립션 파일인 dockerfile을 생성하고, 네이버 클라우드 플랫폼에서 퍼블릭 이미지로 제공하고 있는 Jenkins 이미지를 이용해서 구축한 Jenkins 서버가 Container image를 오토 빌드하고, 이렇게 생성된 Container 이미지가 자동으로 네이버 클라우드 플랫폼 Container Registry에 등록되는 일련의 과정을 다뤄볼 예정입니다.

※ Gitlab 과 jenkins에 대한 설치부터 webhook을 이용한 연동 과정을 모두 담기에는 지면이 모자라, 오늘 포스팅에서는 연동이 완료되었다는 전제하에 이후 진행 과정을 다루었습니다. 전체 작업 플로우를 담은 교육 영상 링크를 포스팅 최하단에 첨부해 두었으니, 참고 부탁드립니다.

먼저, 작업 순서를 정리하면 아래와 같습니다.

1. 네이버 클라우드 플랫폼 인증키 생성 & 확인

2. Container Registry 상품 신청

3. Dockerfile 작성 후 gitlab master branch에 merge

4. Container Registry에 오토 빌드 된 이미지 확인

5. Container Registry 로그인

6. 해당 이미지 pull

7. Container run 후 확인

이제 각 단계에 대해 자세히 설명해드리겠습니다.

(1) 네이버 클라우드 플랫폼 인증키 생성 & 확인

가장 먼저 네이버 클라우드 플랫폼 서비스 사용을 위한 인증키 생성을 진행해야 합니다.

네이버 클라우드 플랫폼 포털에 로그인한 후 [마이페이지] > [계정관리] > [인증키 관리]로 접속한 다음, [신규 API 인증키 생성] 을 클릭하면 고유한 인증키가 발급이 됩니다.

(2) Container Registry 상품 신청

콘솔에서 [All Products] > [Compute] > [Container Registry]로 접속하여 [+레지스트리 생성]을 클릭 후, 레지스트리의 이름 (ex) ncp_container)을 입력하고 [생성]을 클릭합니다.

(3) Dockerfile 작성 후 master branch에 merge

3–1. Dockerfile 생성

Dockerfile은 이미지를 생성할 Container에 대한 디스크립션 파일로, 순서대로 한 줄씩 실행되며 union file system 차용으로 라인별 이미지 layer를 추가하기 때문에 Docker file에 대한 최적화가 필요합니다.

(아래의 테스트 Docker file 생성 시 사용한 명령 변수에 대한 설명은 Docker 공식 홈페이지를 참고 부탁드립니다.)

3–2 Gitlab master branch에 merge

3–3 Jenkins 빌드 확인

merge 이벤트를 트리거로 하여 Jenkins 서버가 사전 등록한 빌드 Command에 따라 이미지를 생성하고, Container Registry에 등록하게 됩니다.

(참고) Jenkins Execute Shell

(4) Container Registry에 오토 빌드 된 이미지 확인

(5) Container Registry 로그인

(1) 번 과정에서 발급받은 ACCESS KEY와 SECRET KEY를 이용해서 (2) 번 과정에서 생성한 Private Container Registry에 로그인합니다.

Command : docker login -u {ACCESS KEY} -p {SECRET KEY} {Container Registry EndPoint}

(6) 해당 이미지 pull

Container Registry에서 (4) 번 과정에서 등록된 Container 이미지를 로컬에 다운로드합니다.

Command : docker pull {Container_registry_endpoint}/(Image):{tag}

(7) Container run 후 확인

로컬에 다운로드 한 Container 이미지를 이용해서 Container 구동하고, 웹에서 {VM 공인IP}:{Container external port}로 웹이 정상적으로 노출되는지 확인합니다.

Command : docker run –name {container_name} –p {external port}:{internal port} {Container 이미지 경로}:{tag}

네이버 클라우드 플랫폼 상품 및 서비스 사용

네이버 클라우드 플랫폼의 Compute 상품 및 서비스 플랫폼을 사용하기 위해서는 아래와 같이 네이버 클라우드 플랫폼 포털 사이트 및 설명서(구 사용자 가이드)를 참고하시면 쉽게 사용하실 수 있습니다.

- 네이버 클라우드 플랫폼 포털 : https://www.ncloud.com
- 네이버 클라우드 플랫폼 설명서(구 사용자가이드) : https://guide.ncloud-docs.com/docs

- 네이버 클라우드 플랫폼 Container Registry 소개 : https://www.ncloud.com/product/compute/containerRegistry
- 네이버 클라우드 플랫폼 Container Registry 설명서(구 사용자가이드) : https://guide.ncloud-docs.com/docs/container-ncr-1-3

※ 본 콘텐츠는 네이버 클라우드 플랫폼 온라인 교육 페이지에서 영상으로 시청이 가능합니다.

[NAVER CLOUD PLATFORM 온라인 교육 수강] “Container Registry를 활용한 CI 구축” >> 수강하기

  • 온라인 무료 교육 영상 시청을 위해서는 ncloud.com 회원 가입 및 로그인이 필요합니다.

[ 이렇게 사용하세요!] 빌드 및 배포 결과 구독을 위한 Jenkins 설치형 상품과 Slack Message 연동하기

--

--

NAVER Cloud
NAVER Cloud

We provide cloud-based information technology services for industry leaders from startups to enterprises.