구름 DGU 스터디 3주차 - Helm
개요
Helm은 그냥 npm같은 개념이라고 생각하고 있는데 이게 정말 맞는 것인지 세미나를 들으면서 알아 가고 싶습니다.
스터디 전 스몰토크 📢
이제 좀 친해져서 서로 말을 편하게 하게 된 것 같아서 좋아요
챕터 1: Kubernetes 복습
핵심 개념
- 쿠버네티스(Kubernetes): 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화하는 플랫폼입니다. 복잡한 컨테이너 오케스트레이션 작업을 단순화하여 개발자와 운영팀의 효율성을 높여줍니다.
- kubectl: 쿠버네티스 클러스터를 제어하고 관리하기 위한 명령줄 도구입니다. kubectl을 사용하여 파드 생성, 서비스 노출, 로그 확인 등 다양한 작업을 수행할 수 있습니다.
- Namespace: 클러스터 내 리소스를 논리적으로 분리하는 데 사용됩니다. 서로 다른 팀이나 프로젝트가 같은 클러스터를 공유할 때, Namespace를 통해 리소스를 격리하고 관리할 수 있습니다.
- cgroup: 컨테이너 또는 프로세스 그룹이 사용할 수 있는 CPU, 메모리 등의 자원을 제한하는 데 사용됩니다. cgroup을 통해 특정 컨테이너가 과도한 자원을 사용하여 다른 컨테이너에 영향을 주는 것을 방지할 수 있습니다.
왜 쿠버네티스를 사용하는가?
-
쿠버네티스는 다음과 같은 이점을 제공하여 현대적인 애플리케이션 개발 및 운영에 필수적인 도구로 자리 잡았습니다.
-
확장성: 애플리케이션의 부하에 따라 자동으로 파드를 추가하거나 제거하여 효율적인 자원 활용을 가능하게 합니다.
-
고가용성: 여러 노드에 파드를 분산 배치하고, 장애 발생 시 자동으로 복구하여 애플리케이션의 가용성을 높입니다.
-
셀프 힐링: 파드 또는 노드 장애를 감지하고 자동으로 복구하여 시스템의 안정성을 유지합니다.
-
선언적 구성: YAML 파일을 통해 원하는 시스템 상태를 정의하면, 쿠버네티스가 자동으로 해당 상태를 유지합니다.
챕터 2: Helm 소개
Helm이란 무엇인가?
- Helm은 쿠버네티스 애플리케이션의 패키징, 배포, 관리를 단순화하는 패키지 관리자입니다. 복잡한 쿠버네티스 YAML 파일들을 관리하는 어려움을 해결하고, 애플리케이션 배포 과정을 간소화합니다.
Helm의 핵심 구성 요소
- Chart: Helm 패키지의 기본 단위입니다. 애플리케이션을 구성하는 쿠버네티스 리소스들의 템플릿과 설정 정보를 포함합니다.
- Repository: Chart를 저장하고 공유하는 저장소입니다. Helm 클라이언트는 Repository에서 Chart를 검색하고 다운로드할 수 있습니다.
- Release: Chart를 특정 쿠버네티스 클러스터에 설치한 인스턴스입니다. Release는 고유한 이름과 버전을 가지며, 업그레이드 또는 롤백이 가능합니다.
Helm을 사용하는 이유
- 재사용성: Chart를 통해 애플리케이션 구성을 템플릿화하고, 다른 환경에 쉽게 재사용할 수 있습니다.
버전 관리: Release를 통해 애플리케이션의 배포 버전을 관리하고, 필요에 따라 이전 버전으로 롤백할 수 있습니다.
- 의존성 관리: Chart 간의 의존성을 관리하여 복잡한 애플리케이션을 효율적으로 배포할 수 있습니다.
- 커뮤니티: Helm은 활발한 커뮤니티를 통해 다양한 Chart를 제공하고, 사용자 지원을 제공합니다.
챕터3: 실습
minikube를 사용해서 helm 사용해보기
- 직접 클러스터를 만들어보고 파트를 생성해보면서 지난번 실습때 제대로 아쉬웠던 부분을 많이 보강할 수 있었던 것 같습니다.
- 또한 심화 학습을 할 수 있는 링크를 첨부하여 향후 공부 방향성을 제시했던 것이 도움이 되었습니다.
스터디 후기
- 비유법을 많이 사용해서 설명을 해주셨는데 이해하는데 너무 좋았습니다. 마스터노드를 정부, 노드들을 토지로 비유해주어 저도 다른사람에게 설명할 때 비유법을 통해 이해를 쉽게 할 수 있도록 세미나를 해보고 싶어졌습니다.