리뷰 | VM웨어 포톤 OS “도커 컨테이너용으로 탁월”

InfoWorld
VM웨어는 포톤(Photon) 오픈소스 프로젝트를 통해 가상 환경에서 컨테이너화된 애플리케이션을 구동하는 환경 관련 커뮤니티를 구축하고자 한다. 포톤 프로젝트는 포톤 OS를 이용해 가상머신 ‘상’에 컨테이너를 배치하는 방법과 VM웨어 인프라 상에 가상머신‘으로’ 컨테이너를 배치하는 방법을 포함한 여러 프로젝트를 가리키는 포괄적인 용어이다.

포톤 OS은 작은 리눅스 컨테이너 호스트로, 가상머신에서 실행되도록 설계되었으며 VM웨어 하이퍼바이저용으로 최적화되어 있다. VM웨어는 도커라는 움직임을 본격적으로 받아들였으며, 이는 VM웨어에만 국한된 것도 아니다. 구글 컴퓨트 엔진(Google Compute Engine)과 아마존(Amazon) EC2를 비롯한 다른 하이퍼바이저에서도 포톤 OS를 실행할 수 있다. 단, 물리 서버에는 포톤 OS를 설치할 수 없다.

포톤 OS는 도커가 기본값으로 설치되지만, 컨테이너 관리 툴이 포함되어 있지는 않다. 관리자는 포톤 패키지 관리자를 이용해 기본 OS 위에서 원하는 컨테이너 관리 도구를 이용할 수 있다.



포톤 OS 시스템 관리
포톤 OS에서는 패키지 관리를 TDNF(Tiny Dandified Yum)으로 한다. TDNF는 VM웨어에서 만든 오픈소스로서 윰(Yum)의 대규모 파이톤(Python)이 없는 DNF 호환 패키지 관리를 제공한다.

VM웨어는 패키지 관리를 위해 자체 윰 호환 저장소를 제공하고 GPG(GNU Privacy Guard) 서명으로 패키지를 서명한다. 이렇게 하면 시스템을 기본적으로 안전하게 보호하는 데 도움이 된다. 서명 검증은 자동으로 이루어진다. 따라서 시스템 관리자나 스크립트에 의해 요구되는 추가 단계가 없다. 포톤 OS 저장소는 “큐레이트(curated)” 되어 있다. 따라서 모든 패키지를 다운로드할 수 있는 것은 아니다.

포톤 OS 1.0 리비전 2는 도커 구형 버전으로 패키징되어 있기 때문에 필자는 먼저 업데이트를 시도하고 싶었다. 업데이트는 순조롭고 진행되었고 1분 만에 필자의 모든 컨테이너가 최신 버전의 도커에서 실행되었다.

포톤 OS는 Systemd init 시스템을 사용하며, 보안에 중점을 두고 컨테이너 격리를 강화하기 위해 SE 리눅스가 시스템에 포함되어 있다. 방화벽(iptables)은 기본적으로 켜지고 외부 인터페이스의 패킷(SSH 트래픽 제외)은 누락된다. 따라서 관리자는 외부의 트래픽을 허용하기 위한 규칙을 추가해야 한다.

대부분의 경우 이 기본 보안 기능이 크게 불편하지 않지만, 클린 설치에서 루트 암호를 의무적으로 변경할 경우는 그렇지 않았다. 잘못하면 셸에서 쫓겨나 로그인 프롬프트로 되돌아가게 된다. 이 부분은 조금 더 사용자 친화적으로 만들 수도 있지 않았나 싶다.

포톤 OS 설치와 구성
필자는 다운로드 가능한 가상머신을 이용해 포톤 OS를 설치했다. 예상대로 필자의 VM웨어 워크스테이션 프로(VMware Workstation Pro) 설정에서는 힘들이지 않고 가능했다. 다운로드를 감지한 시스템에서 하드웨어 매개변수를 수락할 것인지 물었고 즉시 부팅이 되었다. 포톤 OS는 ISO로도 사용할 수 있으며, AWS와 구글 클라우드로도 사용할 수 있다. 루트로 로그인하여 암호 없는 로그인을 구성한 후에 활동을 시작했다.

최소의 설치에는 다른 컨테이너 리눅스 호스트와 마찬가지로 거의 아무것도, 심지어 sudo도 들어있지 않지만 SSH는 포함되어 있다. 여러 대의 포톤 OS 가상머신을 배치하는 관리자는 설치 과정을 스크립트로 작성하고 싶을 것이다. 이를 위해 포톤 OS는 Cloud-Init를 사용한다. 클라우드 배치와 구성을 쉽게 해 주는 파이썬 스크립트 및 유틸리티의 모음이다.

도커 컨테이너용 OS인 경우에도 포톤 OS 설치는 매우 간단했다. 컨테이너에서 Nginx를 실행하게 하는 것은 도커에게 “Hello world”를 출력하는 수준으로 쉬운 듯 하다. 포톤 OS에서의 사용법은 아래와 같다.

# systemctl start docker
# systemctl enable docker
# docker run –d –p 80:80 vmwarecna/nginx

포톤 OS 스토리지와 네트워킹
가상화된 하드웨어 환경에서 실행되는 덕분에 스토리지 장치는 일반 하드웨어처럼 보이고 포톤 OS에서 표준 파일 시스템을 운영할 수 있다. 새로운 (가상) 디스크를 머신에 추가한 후 다른 디스크처럼 필요한 곳에 마운트할 수 있다. 포톤 OS 파일 시스템에는 Btrfs와 Ext4가 포함되어 있다. 기본 루트 파일 시스템은 Ext4이다. Btrfs의 예는 거의 없으며 Ext4가 지배적인 듯 하다.

원격 스토리지는 포톤 NFS 유틸리티로 처리한다. 필자가 사용해 본 컨테이너 지향적인 다른 리눅스들(알파인(Alpine), 랜처OS(RancherOS), 코어OS(코어OS), 아토믹 호스트(Atomic Host)) 중에서 NFS에 대한 설명이 포함된 것은 아무 것도 없었기 때문에 VM웨어의 설명을 보고 기뻤다. NFS는 엔터프라이즈 환경에서 여전히 활발히 사용되고 있으며, NFS 드라이브 마운팅이 포톤 OS 사용자에게 흔한 사용 사례가 되기를 기대한다.

포톤 OS에서 유일하게 특이한 스토리지 옵션은 읽기 전용 아니면 읽기-쓰기 파일 시스템을 선택하는 것이다. 사용례에 따라 달라지겠지만, 필자는 이런 옵션이 있다는 것이 마음에 들었다.

포톤 OS에서의 네트워킹은 iproute2 유틸리티를 사용한다. 단, 전통적인 ipconfig 및 netstat 명령은 포함되어 있다. 포톤 OS 설치에는 컨테이너 네트워크 구성이 기본적으로 포함되어 있지 않지만 여러 가지 유명한 구성(예: 도커, 로켓, DCOS 등)이 설명되어 있다. 네트워킹의 관점에서 보면 포톤 OS는 리눅스의 다른 버전들과 다를 게 없어서 놀랄만한 점이 없었다.

포톤 OS 업그레이드와 다운그레이드
레드햇의 아토믹 호스트와 마찬가지로 포톤 OS는 자체 OSTree 서버와 함께 rpm-ostree를 하이브리드 이미지/패키지 관리 시스템으로 사용한다. 관리자들이 rpm-ostree 명령 모음과 용어, 모범 사례를 이해하려면 시간이 좀 걸릴 것이다.

새 명령을 배우는 것 외에도 읽기 전용 디렉터리를 인지해야 하고 애플리케이션이 해당 디렉토리에 쓰는 일이 없도록 해야 한다. 예를 들면 rpm-ostree를 사용할 때 /usr 디렉터리는 읽기 전용이다. rpm-ostree 프로필은 설치 시간 옵션이다. 따라서 사용자들은 패키지 관리를 위해 TDNF 또는 rpm-ostree에서 선택할 수 있다. 관련 설명서는 훌륭하다.

포톤 OS 개발 당시 VM웨어는 리눅스 커널에서 각종 레거시 모듈을 모두 제거할 수 있었다. VM웨어는 하드웨어 및 OS 스택 일체를 통제하기 때문에 컨테이너 런타임과 하이퍼바이저 사이의 중복성을 제거하기 위한 플래그 컴파일, 타임 어카운팅(time accounting), 버퍼 튜닝 등도 가능했다. VM웨어 가상화 환경을 도입한 기업이라면, 포톤 프로젝트를 최우선으로 고려해야 할 것이다.

핵심 요약
VM웨어 환경을 구동하면서 컨테이너를 고민하고 있다면, 포톤 OS는 최우선 고려 대상이다.

장점
- 훌륭한 문서화
- 리눅스 베테랑에게는 놀랄 것이 전혀 없는 쉬운 사용법
- VM웨어 하이퍼바이저에 최적화
- 쿠버네티스를 포함한 모든 컨테이너 오케스트레이션 시스템 구동
- 다중 클라우드 배치 옵션

단점
- 베어메탈 설치 불가
- 컨테이너 오케스트레이션이 함께 제공되지 않는다
 editor@itworld.co.kr