DevOps
컨테이너 서비스 소개
2020년 8월 12일
원문에서 보기 ↗지난 6월 말, TOAST에서는 컨테이너 기반의 서비스 구축에 필요한 두 가지 상품을 출시하였습니다. 하나는 컨테이너 이미지를 개인화된 비공개 저장소를 통해 사용할 수 있도록 해주는 컨테이너 레지스트리 서비스이며, 또 하나는 컨테이너 운용을 위해 널리 사용되는 쿠버네티스를 만들어 주는 서비스입니다. 이 글에서는 두 상품을 소개하는 자리를 가져보려고 합니다.
컨테이너 레지스트리 서비스
컨테이너를 이용한 서비스 환경을 구축 및 운영하는 과정에 있어서 필요한 것 중 하나를 꼽으라면 컨테이너 이미지 저장소라고 할 수 있습니다. 컨테이너 레지스트리(보통 도커 레지스트리로 널리 알려져 있음)는 다양한 컨테이너 이미지들의 저장소(repository)들을 모아서 관리해 주는 서비스입니다.
컨테이너를 처음 접하게 되면, 각종 문서 등을 통해 소개되는 도커 허브(hub.docker.com)에서 다양한 이미지를 받아서 사용해 본 경험이 있을 겁니다. 도커 허브와 같은 공개 레지스트리를 이용하면 잘 알려진 애플리케이션들(예를 들어 nginx, redis 등)에 대한 이미지를 쉽게 찾아서 사용할 수 있는 장점이 있습니다. 하지만, 내가 만든 컨테이너 이미지를 이와 같은 공개 레지스트리에 저장하는 경우, 이는 다른 사람들에게도 노출될 수 있음을 의미합니다.
이렇게 개인(혹은 조직)이 만든 이미지가 공개적으로 노출되는 것을 피하고 싶은 경우, 비공개 레지스트리를 직접 구축해서 활용하는 방법도 있습니다. 하지만, 비공개 레지스트리를 직접 구축하는 경우 다음과 같은 여러 가지 고민거리가 발생하게 됩니다.
- 레지스트리를 구동시킬 서버 확보(구성)
- 데이터를 저장할 스토리지를 어떤 것을 이용할지
- 저장된 데이터를 어떻게 안정적으로 유지할지
물론, 간단한 개발 환경에서 사용할 목적이라면 큰 고민 없이 아무 서버 한 대에 docker registry를 구동시키고, 로컬 파일 시스템에 그냥 저장되도록 하면 됩니다. 하지만, 실 서비스를 위한 개발 및 배포 환경에서의 사용이 목적이라면, 그렇게 단순하게 접근할 수만은 없는 문제가 됩니다.
이런 귀찮은 부분을 해결하는 데 도움이 되도록 TOAST에서는 컨테이너 레지스트리 서비스를 제공합니다. 컨테이너 레지스트리 서비스를 통해 사용자는 자신만의 비공개 레지스트리를 만들어서 자유롭게 이용할 수 있습니다.
TOAST 컨테이너 레지스트리 서비스의 주요 특징은 다음과 같습니다.
- 사용자의 컨테이너 이미지는 HTTPS 프로토콜로 암호화하여 전송되며 비공개 클라우드 레지스트리에 안전하게 저장됩니다.
- TOAST Object Storage를 기반 저장소로 삼아 뛰어난 확장성과 안정성을 제공합니다.
- 사용자는 스토리지 용량을 고려할 필요 없이, 원하는 만큼 컨테이너 이미지를 저장할 수 있습니다.
- 익숙한 Docker 명령줄 도구(CLI)를 이용해 컨테이너 이미지를 손쉽게 저장하고, 원하는 환경에 배포할 수 있습니다.
- Toast 컨테이너 레지스트리는 도커 이미지 레지스트리 API v2와 호환됩니다.
- Kubernetes로 컨테이너 배포 시 쉽게 연동하여 사용할 수 있습니다.
- TOAST 콘솔을 통해 저장된 이미지를 조회하고, 사용하지 않는 이미지를 삭제할 수 있는 기능을 제공합니다.
[참고]
사용자의 비공개 레지스트리는 TOAST 환경(예를 들어 TOAST 인스턴스)에서만 사용 가능한 것이 아닙니다.
인터넷 이용이 가능한 환경에서는 어디서든 사용 가능합니다.
아래의 그림은 사용자가 TOAST 인스턴스에서 생성한 이미지를 레지스트리에 이미지를 저장하고, 이를 다시 다른 곳(예를 들어 AWS)의 인스턴스에서 가져다 사용하는 과정을 보여줍니다. 
TOAST 컨테이너 레지스트리 사용에 대한 구체적인 내용은 사용 가이드(링크)를 참고해 주세요.
쿠버네티스 서비스
쿠버네티스는 구글의 오랜 컨테이너 운용 노하우를 기반으로 만들어진 오픈소스 컨테이너 오케스트레이션 플랫폼입니다. (쿠버네티스에 대한 개요는 '쿠버네티스란 무엇인가?'에서 자세히 살펴보실 수 있습니다)
다양한 컨테이너 오케스트레이션 플랫폼(docker swarm, apache mesos 등)이 존재하지만, 쿠버네티스는 사실상 업계 표준으로 자리매김 했습니다. 따라서, 컨테이너 기반의 서비스 구축을 고민하는 개발자(혹은 조직)라면 당연히 쿠버네티스의 도입을 함께 고려할 수밖에 없습니다.
쿠버네티스를 한 번이라도 직접 설치해 보신 경험이 있다면, 그 과정이 절대 쉽지만은 않았을 겁니다. 또한, 쿠버네티스 그 자체를 운영하는 부분도 큰 부담으로 다가올 수 있습니다.
TOAST 쿠버네티스 서비스는 관리형 쿠버네티스 클러스터를 제공합니다. 간단한 사용자 조작을 통해 쿠버네티스 클러스터가 생성되며, 클러스터의 컨트롤 플레인(마스터 컴포넌트)은 TOAST 쿠버네티스 서비스에서 관리합니다. 이를 통해 사용자는 앞서 말한 번거로운 부분을 줄일 수 있고, 더욱 자신의 서비스 구성 및 운영에 집중할 수 있게 됩니다.
또한, 사용자 클러스터는 TOAST에서 제공되는 block storage 및 load balancer 등과 동적으로 연동되는 형태로 사용 가능합니다. 사용자 필요에 따라 다양한 퍼시스턴트 볼륨 및 로드밸런서 타입 서비스(쿠버네티스 리소스 일종)를 자유롭게 이용할 수 있습니다.
TOAST 쿠버네티스 서비스의 주요 특징은 다음과 같습니다.
- TOAST에 최적화 된 쿠버네티스 클러스터 생성과 관리 기능을 제공합니다.
- TOAST Compute & Network & Storage 서비스와 연동
- TOAST 인스턴스 및 VPC를 기반으로 클러스터 구성
- 쿠버네티스의 load balancer type service 이용 가능(TOAST 로드 밸런서 연동)
- TOAST 블록 스토리지를 기반으로 하는 퍼시스턴트 볼륨(Persistent Volume, PV) 지원
- TOAST Compute & Network & Storage 서비스와 연동
- 고가용성 구조 기반의 컨트롤 플레인(쿠버네티스 마스터) 구성 및 관리
- 웹 콘솔을 이용한 쉬운 조작
- 클러스터 생성, 삭제, 조회
- 노드 그룹 생성, 삭제, 조회
- kubectl 설정 지원
아래의 그림은 TOAST 쿠버네티스 서비스를 통해 제공되는 쿠버네티스 클러스터의 구성을 간략히 보여줍니다. 또한, 인터넷을 통해 클러스터 사용자가 kubectl을 통해 명령을 내리거나, 혹은 인터넷을 통해 쿠버네티스에서 실행 중인 서비스에 대해 TOAST 로드밸런서를 통해 접근하는 모습도 보여주고 있습니다. 
TOAST 쿠버네티스 서비스 사용에 대한 구체적인 내용은 사용 가이드(링크)를 참고해 주세요.
맺음말
본 글에서는 신규 컨테이너 서비스 2종에 대해 간단히 소개하는 자리를 마련해 봤습니다. 새롭게 출시한 상품이라 아직 부족한 부분이 많을 수 있습니다. 꾸준한 개선을 통해 보다 사용자에게 도움이 되는 서비스로 발전시켜 나갈 수 있도록 하겠습니다.