2019년 5월 25일 토요일

Docker를 위한 Linux - Atomic Host 소개

Atomic Host란?

이 글은 공식 홈페이지의 내용의 발번역과 관련 자료를 정리하여 만들고 있습니다.

공식 홈페이지 : http://www.projectatomic.io

홈페이지의 일부 내용을 발췌하자면, "변경 불가능한 인프라"를 원칙으로 시스템을 다시 구성한 수많은 프로젝트의 산물입니다.  LDK(Linux, Docker, Kubernetes)를 기반으로 구성되었습니다.

"변경 불가능 인프라(Immutable infra)" 라는 용어는 생소하시겠지만, 내용을 간단히 정리하여 살펴보면 다음과 같습니다. 실제로 서버를 변경하지 못하도록 한다는 것입니다.
Docker는 변경 불가능한 인프라를 구성하는 핵심적인 개념입니다. docker 자체는 변경해야 할 요소가 있을 때, 기존 버전의 docker image를 제거하고, 새로운 docker 이미지로 대체합니다.
이 방식의 가장 뛰어난 점은, 인프라에 대한 배포에 부담이 없다는 것입니다. 이미 아시다시피, docker는 실행에 필요한 라이브러리와 우리가 작성한 code 그리고 최소한의 시스템라이브러리까지 단일 파일처럼 관리할 수 있습니다.
( 단일 파일처럼 관리가 가능하다는 것은, 버전 관리가 가능하다는 의미입니다.)

기존에 배포가 의미하는 것은 응용 프로그램의 영역만을 말하는 경우가 많았습니다.
실행 환경을 포함하여 처리량을 늘리려면 별도의 물리 환경(서버, ..)을 준비해야 했고,
이를 위해서 시간이 소요되며, 다시 물리환경에 프로그램의 실행환경을 준비하는데 시간이 소요되었습니다. 클라우드의 등장으로 물리 환경 구성에 대한 부담이 사라졌고, Application Container의 등장으로 실행환경에 대한 준비가 별도로 필요하지 않게 되었습니다.

이 프로젝트의 많은 부분은, OpenShift Origin v3에 차용되었습니다.
기본적으로, 경량 컨테이너에 대한 아이디어에서 출발하였습니다. 응용프로그램은 컨테이너 안에서 실행됩니다. 현재 CentOS 버전과 Fedora 버전이 제공됩니다. Atomic host 개념은 Redhat Linux Enterprice에도 차용되었습니다.

현재는 기본적으로 Kubernetes가 포함되어 있습니다. 그러나 목표는 Kubernetes를 컨테이너 형태로 진행하여 OpenShift v3와 같은 호스트에서 서로 다른 버전을 지원하는 것입니다.  etcd와 flannel과 같은 Kubernetes 유틸리티가 제공됩니다.
현재 사용이 용이한 Application Container인 Docker를 사용하고 있습니다.

etcd : 분산형 키 / 값 저장소입니다.
        Go 언어기반으로 작성되어 있습니다.
        -> 클러스터 시스템에서는 보통 분산된 각 서버의 설정을 얻어오고 저장하는데 사용됩다.
flannel : Kubernetes에서 네트워크 레이어3의 구성요소와 관계를 쉽게 설정하기 위해 개발된 도구입니다.
         Go 언어 기반으로 구성되어 있습니다.

호스트는 rpm-ostree를 통해 관리됩니다. rpm-ostree는 부팅가능하고, 불변하고, 버전 관리가 가능한 파일스템을 RPM시스템을 통해서 관리합니다.

Atomic 프로젝트는 다음과 같은 요소들을 포함하고 있습니다.

*  Cockpit은 호스트와 컨테이너에 대한 가시성을 제공합니다.
  -> 호스트와 컨테이너에 대한 모니터링을 웹기반으로 할 수 있도록 제공합니다.
*  Selinux와 Systemd의 통합을 위한 Docker 확장과 패치들.
*  컨테이너화 된 응용프로그램의 개발을 쉽게 해주는 Atomic Developer Bundle


댓글 없음:

댓글 쓰기

참고: 블로그의 회원만 댓글을 작성할 수 있습니다.

쿠버네티스 네트워크 정리

본 문서는 쿠버네티스의 공식문서( https://kubernetes.io/docs/concepts/cluster-administration/networking/ )의 일부를 번역하고 링크를 정리하여 붙이는 것에서 시작한 문서입니다. 일부 링크는 ...