'

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Study47] Helm?
    FISA 2026. 4. 3. 10:29

    쿠버네티스 패키지 매니저로, 쿠버네티스 애플리케이션을 패키징하고, 배포 관리하는 도구로

    apt api와 비슷하다고 볼 수 있을 거 같습니다.

     

    보통 쿠버네티스에서 애플리케이션 배포하려고하면, 저번에 실습했듯

    Deploy,Service, Ingress...많은 yaml파일이 필요합니다.

    벗 Helm을 사용하면 하나의 패키지로 values.yaml만 변경하면 돼요.

     

    주요 구성요소로는

    Chart

    Releas

    Repository

    values.yaml

    이있습니다.

     

    1. Chart

    Chart는 Helm의 가장 기본 단위로, 쿠버네티스 리소스들을 템플릿 형태로 묶어놓은 패키지입니다.
    Deployment, Service 등의 YAML 파일이 템플릿으로 정의되어 있으며, 변수 값을 주입받아 동적으로 생성됩니다.

    2. Release

    Release는 Chart가 실제 쿠버네티스 클러스터에 배포된 인스턴스를 의미합니다.
    같은 Chart라도 서로 다른 설정(values.yaml)을 적용하면 여러 개의 Release를 생성할 수 있습니다.
    또한 Helm은 Release 단위로 버전 관리가 가능하여, 롤백 기능도 제공합니다.

    3. Repository

    Repository는 Chart들을 저장하고 공유하는 공간입니다.
    대표적으로 공개 저장소인 Artifact Hub가 있으며, 사용자는 여기서 다양한 Chart를 검색하고 설치할 수 있습니다.
    기업 환경에서는 사내 전용 Repository를 구성하기도 합니다.

    4. values.yaml

    values.yaml은 Chart에 전달되는 설정값을 정의하는 파일입니다.
    컨테이너 이미지, 포트, 환경 변수, replica 수 등 다양한 설정을 이 파일에서 관리하며, 환경(dev/staging/prod)에 따라 값만 바꿔서 재사용할 수 있습니다.

    5. Template

    Chart 내부에는 templates 디렉토리가 존재하며, 실제 쿠버네티스 YAML이 Go Template 형식으로 작성되어 있습니다.
    values.yaml의 값이 이 템플릿에 바인딩되어 최종 YAML이 생성됩니다.

     

    [ 설치 및 등록 ]

    마스터 노드에만 설치하면, 전체 클러스터를 관리할 수 있습니다.

     

    Helm 3 버전 설치
    curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
    
    helm version
    
    ls /usr/local/bin/
    
    #리스트 확인 가능
    helm repo list
    
    # bitnami로 repo추가 및 업데이트(국룰 사이트인가봄)
    helm repo add bitnami https://charts.bitnami.com/bitnami
    helm repo update
    
    # 로컬 Helm repo 목록 확인
    helm repo list

     

     

    /usr/local/bin/에 보면 helm이라고 있습니다.

     

     

    만약 Helm 을만들고싶다면,

     

    helm create mychartfisa
    #Creating mychartfisa
    
    server01@server01:~$ ls
    #calico.yaml  k8s-emp  mychartfisa  springboot-emp.tar
    
    server01@server01:~$ cd mychartfisa/
    
    server01@server01:~/mychartfisa$ ls
    #charts  Chart.yaml  templates  values.yaml
    
    server01@server01:~/mychartfisa$

     

    create만 해주면 핵심 구성요소인 charts와 chart.yaml, template, values.yaml이 생성됩니다.

    이건, 배포가아니라서 

    kubectl get all하면 안더요

    단순히 쿠버네티스 yaml 템플릿 셋트를 만든 상태입니다.

     

    이제 템플릿 셋트를 install해주면

    helm install my-nginx-fisa ./mychartfisa

    my-nginx-fisa는 release이름입니다. 뒤에는 경로이구용

    kubectl get all했을 때, Deployment, Pod,Service가 생성됩니다.

     

    helm list

    를하면 현재 배포된 release목록을 확인할 수 있습니다.

     

    helm upgrade my-nginx-fisa ./mychartfisa

     

    만약 수정하고나면(ex)Pod를 10개늘리기...

    upgrade해주면 됩니다.

     

     

     

    server01@server01:~$ helm uninstall mychartfisa2
    #release "mychartfisa2" uninstalled
    
    server01@server01:~$ ls
    #calico.yaml  k8s-emp  mychartfisa  springboot-emp.tar
    
    server01@server01:~$ helm list
    #NAME    NAMESPACE       REVISION        UPDATED STATUS  CHART   APP VERSION
    
    server01@server01:~$ rm -rf mychartfisa/
    server01@server01:~$ ls
    #calico.yaml  k8s-emp  springboot-emp.tar

    삭제는 helm먼저 지우고 폴더 삭제하믄됩니다!!!

     

    https://medium.com/codetodeploy/our-helm-charts-have-8000-lines-nobody-understands-them-c7fea0507197

     

    Our Helm Charts Have 8000 Lines. Nobody Understands Them.

    The Kubernetes config that started as “best practice” and became a full-time archaeology job

    medium.com

    의 글을 봐도 좋을 것 같아요. 개큰코드이슈 ㅋㅋ

    728x90

    댓글

Designed by Tistory.
티스토리 친구하기