컨테이너는 이미지로 배포 되고 실행됩니다. 컨테이너 이미지는 파드의 컨테이너 스펙에 이름으로 설정하는데, 이미지명:태그의 형식 입니다(예: nginx:latest). 이미지명에는 이미지가 위치한 리지스트리(Registry) 주소가 포함되는 데 도커(Docker)에서 제공하는 도커허브(hub.docker.com)인 경우는 생략됩니다.
칵테일 클라우드는 워크스페이스 별로 독립적인 이미지 리지스트리를 제공합니다. 또한 이미지 빌드 과정을 자동화 하는 ‘빌드(Build)’ 기능을 제공 합니다.
이미지 리지스트리는 컨테이너 이미지를 저장하고, 해당 이미지를 파드 실행 시 제공 합니다. 이미지 리지스트리의 저장/제공 인터페이스는 표준화 되어 있습니다. 보통 이미지를 만든 후 리지스트리에 저장 할 때는 ‘Push’를 컨테이너 실행 시 이미지를 가져올 때는 ‘Pull’ API를 사용 합니다.
칵테일 클라우드에서 이미지 리지스트리는 워크스페이스 마다 할당 할 수 있습니다. 팀에서 독립으로 사용하는 리지스트리 입니다. 또한 팀 간 이미지 리지스트리를 공유 할 수도 있습니다.
할당 된 이미지 리지스트리를 통해 서비스 맵에서 파드를 배포 할 경우, 이미지 설정은 이미지명이 아닌 ‘빌드’를 선택하여 수행합니다. 빌드는 이미지를 생성하는 과정을 자동화 한 것으로, 선택한 빌드의 ‘태그(Tag)’에 따라 최신의 이미지를 파드로 배포 할 수 있습니다.
빌드는 컨테이너 이미지를 생성하는 과정을 자동화하는 칵테일 클라우드의 리소스 입니다. 빌드는 하나 이상의 태그(Tag)를 갖는데, 각 태그마다 생성 과정을 다르게 정의 할 수 있습니다. 태그는 일종의 이미지 버젼이라 할 수 있습니다. 이미지 생성 과정을 빌드 플로우(Build Flow)라 합니다.
빌드는 워크스페이스에 할당되는 이미지 리지스트리에 생성된 이미지를 저장합니다. 따라서 이미지와 빌드은 같습니다. 다만 이미지 태그(버젼) 별로 고유 한 빌드 플로우를 가집니다. 이미지 리지스트리 - 이미지(빌드) - 태그(빌드 플로우)의 구조 입니다.
사용자는 워크로드의 파드에서 빌드(이미지)와 태그(버젼)를 선택해 배포합니다. 그러면 태그의 빌드 플로우가 생성한 이미지가 배포 되어 실행 되는 것 입니다. 서비스 맵의 파이프라인에서는 코드 변경 후 이미지 태그의 빌드 플로우를 실행하여, 이미지를 자동 업데이트 하는 전 과정을 자동화합니다.
빌드 플로우는 특정 태그(버젼)의 이미지 생성 과정을 자동화 합니다. 빌드 플로우가 이미지 생성을 위해 실행하는 각 단계를 ‘태스크(Task)’라 합니다.
칵테일 클라우드는 다양한 유형의 기본 태스크를 제공합니다. 또한 사용자가 직접 태스크를 만들어 빌드 플로우에 설정 할 수도 있습니다.
기본 태스크는 코드 저장소(Git)의 코드 다운로드, 사용자가 정의 한 스크립트 실행, 이미지 빌드 스트립트(Dockerfile)와 같은 것이 있습니다. 이 외에도 외부 시스템의 API 연계, FTP 기반의 파일 전송 등의 태스크도 제공됩니다.
태스크는 사용자가 개발하여 빌드 플로우에 추가/확장 할 수 있습니다. 이 때 사용자 태스크는 컨테이너화 하여 추가 하여야 합니다.
빌드 플로우의 태스크는 ‘빌드 서버(Build Server)’에서 실행 됩니다. 칵테일 클라우드는 빌드 서버의 용량을 조정하는 옵션을 제공합니다. 많은 자원을 필요로 하는 빌드 작업의 경우, 빌드 서버의 용량을 조정 할 수 있습니다.