Offcanvas

가상화 / 개발자 / 애플리케이션 / 오픈소스 / 클라우드

꼼꼼하게 알아보는 쿠베르네티스 '개념부터 활용사례까지'

2017.07.14 Serdar Yegulalp  |  InfoWorld


자신만의 작은 쿠베르네티스 노드
(전체 쿠베르네티스 환경 구현 없이)개발용 시스템 등 로컬 환경에서만 쿠베르네티스를 운영하고 싶을 수도 있다. 이런 용도의 '설정'을 위한 몇 가지 방법들이 있다.

그중 한 가지는 쿠베르네티스 개발팀이 직접 제공하는 미니쿠베(Minikube)이다. 이를 실행하면 선택한 가상화 호스트에 싱글 노드 쿠베르네티스 클러스터가 배포될 것이다. 미니쿠베에는 '전제 조건'이 몇 가지 있다. Kubectl 명령어 인터페이스와 버츄얼박스(VirtualBox) 같은 가상화 환경이 여기에 해당된다. 그러나 모두 맥OS, 리눅스, 윈도우용 바이너리로 즉시 입수해 사용할 수 있다.

맥OS의 코어OS 사용자들은 코어OS VM에 기반을 두고 있고, 빠른 관리에 도움을 주는 Status Bar 앱을 제공하는 쿠베르네티스 솔로(Kubernetes Solo)를 사용할 수 있다. 솔로에는 쿠베르네티스용으로 패키징 된 애플리케이션을 쉽게 설정할 수 있는 쿠베르네티스 패키지 관리 도구인 헴(Helm, 아래 상세 설명)도 포함되어 있다.

컨테이너 클러스터 확대
쿠베르네티스를 실행시킨 후, 컨테이너 배포 및 관리를 시작할 수 있다. 많은 컨테이너 기반 앱 데모를 이용, 쉽게 컨테이너를 운영할 수 있다.

기존 컨테이너 기반 앱 데모를 가져와, 유용한 상태가 될 때까지 구성 및 배포, 수정 방법을 확인 및 테스트한다. 미니쿠베를 이용하기로 했다면. 헬로우 미니쿠베(Hello Minikube) 튜토리얼을 사용해, 싱글 노드 쿠베르네티스 데모에 단순한 Node.js 앱이 포함된 도커 컨테이너를 생성할 수 있다. 그리고 개념과 방법을 파악한 후, 자신의 컨테이너로 교체한 후, 배포를 연습할 수 있다.

다음 단계는 '생산화 단계'에 사용하는 것과 유사한 예제 애플리케이션을 배포하는 것이다. 그리고 포드(애플리케이션을 구성하는 하나 이상의 컨테이너), 서비스(포드 논리 세트), 복제 세트(머신에 문제가 있을 때 스스로 해결하는 기능을 제공), 배포(애플리케이션 버전 처리) 같은 고급 쿠베르네티스 개념을 학습한다. 워드프레스/마이MySQL(WordPress/MySQL) 샘플 애플리케이션을 예로 들면, 이를 쿠베르네티스에 적용해 실행하는 방법 이상을 확인할 수 있다. 또 생산화 단계 쿠베르네티스 애플리케이션에서 사용하는 많은 개념의 구현과 관련된 세부 사항을 확인할 수 있다. 여기에 더해 애플리케이션 상태를 보존하기 위해 영구 볼륨(persistent volumes)을 설정하는 방법, 서비스를 이용해 포드를 서로, 그리고 외부에 노출하는 방법, 애플리케이션 암호와 API 키를 안전하게 저장하는 방법 등을 학습할 수 있다.

위브웍스(Weaveworks)에는 쿠베르네티스에 애플리케이션을 구성하기 위해 마이크로서비스 패턴을 사용하는 방법을 보여주는 예제 앱인 삭 숍(Sock Shop)이 있다. 삭 숍은 기반이 되는 기술들인 Node.js, Go키트, Spring Boot 등에 친숙한 사람들에게 가장 유용하다. 그러나 핵심 원칙은 특정 프레임워크에 제한되지 않고, 클라우드 네이티브 기술을 설명해 준다.

워드프레스/마이SQL 애플리케이션을 본 후, 자신의 필요 사항에 부합하는 쿠베르네티스 앱이 기본 탑재되어 있다는 생각을 가질 수도 있다. 이는 어쩌면 맞는 생각일지 모른다. 쿠베르네티스에는 쿠베르네티스 애플리케이션의 패키징, 버전, 공유를 지원하는 애플리케이션 정의 시스템인 헴(Helm)이 들어있기 때문이다. GitLab과 워드프레스 등 인기 앱과 앱 구성 요소(MySQL, Nginx) 등 다수가 Kubeapps 포털을 통해 즉시 입수할 수 있는 헴 차트를 가지고 있다.

쿠베르네티스 탐색
쿠베르네티스는 포드와 서비스 같은 강력한 추상화로 컨테이너 관리를 단순화시킨다. 또 포드와 서비스, 배포를(배포 및 스테이징, 생산 워크로드 역시 마찬가지) 분리할 때 사용할 수 있는 네임스페이스(namespaces)와 라벨 같은 메커니즘을 통해 많은 유연성을 제공한다.

위 예제 중 하나를 가져와 여러 네임스페이스에 여러 인스턴스를 설정하면, 각 네임스페이스의 구성요소를 독립적으로 변경할 수 있다. 이후 배포를 이용, 이렇게 업데이트 한 사항을 해당 네임스페이스의 여러 포드에 적용할 수 있다.

다음으로 중요한 부분은 이런 '연습'을 넘어선다. 다름 아닌, 관리용 도구로 쿠베르네티스 자체를 활용하는 방법을 학습하는 것이다. 예를 들어, 푸펫(Puppet)에는 쿠베르네티스에서 리소스를 생성 및 조정할 수 있는 모듈이 있다. 또 해시코프(HashiCorp)의 테라폼은 아직 초기 단계이지만 쿠베르네티스를 하나의 리소스로 지원하는 추세다. 이런 리소스 관리 도구를 사용할 계획이라면, 도구마다 테이블에 대한 가정이 크게 다르다는 점을 명심해야 한다. 푸펫과 테라폼의 경우 각각 변경할 수 있는 인프라, 변경할 수 없는 인프라를 사용하도록 기본 설정돼 있다. 이런 차이가 필요한 쿠베르네티스를 얼마나 쉽게 설정할 수 있는지 결정한다. ciokr@idg.co.kr

CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.