Helm 사용하기
💡  Helm 이란? 
Kubernetes 의 Package Managing Tool 입니다.
Python의 pip, Node.js 의 npm 과 비슷한 역할을 한다고 볼 수 있고, 플리케이션을 패키징하여 Kubernetes Cluster 에 배포할 수 있도록 도와줍니다.
Chart라는 Packaging Format 을 사용합니다.
📑  Chart 란?  
Helm 은 Chart 를 이용하여 애플리케이션을 정의하고 관리합니다.
k8s 에 올라갈 애플리케션을 구성하는 k8s 객체정보인 manifest template 파일과 설정값 정보를 담고 있습니다.
Chart 구조
해당 애플리케이션 이름의 디렉토리 하위 Chart 관련 파일들이 구성됩니다.
예시 
wordpress/
  Chart.yaml          # Chart에 대한 정보를 적어놓는 YAML 파일 (필수)
  LICENSE             # 라이센스에 대한 내용을 적어 놓는 텍스트 파일 (옵션)
  README.md           # 사용자가 읽을 수 있는 README 파일 (옵션)
  requirements.yaml   # Chart간 의존성이 있을 경우 이를 리스트 형태로 정의하는 파일 (옵션)
  values.yaml         # Chart 내에서 어플리케이션에 필요한 설정값들이 모여 있는 파일 (필수)
  charts/             # Chart가 다른 Chart에 의존성이 있을 경우 다른 의존하는 Chart들이 위치하는 디렉토리 (옵션)
  templates/          # kubernetes 객체를 정의하는 manifest template 파일들이 위치하는 디렉토리 (필수)
                      # gotpl로 구현된 template들이어야 하며 values.yaml의 값들과 합해져서 manifest 파일을 rendering함
  templates/NOTES.txt # chart 사용 방법을 설명해 놓은 텍스트 파일 (옵션)Helm 명령어로 Chart 생성하기 
⚡️ Create
$ helm create myapp
위 명령어를 실행하면 아래의 기본 파일들이 자동으로 생성됩니다.
templates: k8s 객체를 정의하는 manifest template 파일들 [필수]Chart.yaml: Chart 정보가 담긴 AML 파일 [필수]values.yaml: 애플리케이션에 필요한 변수들을 모아둔 파일 [필수]charts: (다른 Chart에 의존성이 있을 경우) 의존하는 Chart 를 모아둔 디렉토리 [옵션]
✔️ chart.yaml
apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: myapp
version: 0.1.0✔️ values.yaml
Chart 의 변수들을 정의하는 파일입니다.
여기에 정의된 변수들은 template 안에서 키워드로 접근할 수 있습니다.
replicaCount: 1
image:
  repository: nginx
  tag: stable
  pullPolicy: IfNotPresent
nameOverride: ""
fullnameOverride: ""
service:
  type: ClusterIP
  port: 80
ingress:
  enabled: false
  annotations: {}
  hosts:
    - host: chart-example.local
      paths: []
  tls: []
resources: {}
  # limits:
  #   cpu: 100m
  #   memory: 128Mi
  # requests:
  #   cpu: 100m
  #   memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}✔️ templates 디렉토리 
k8s 객체를 정의하는 manifest template 파일들
배포 시 사용되는 가장 기본적인 재료들이 들어있습니다. (아래)
deployment.yaml
ingress.yaml
service.yaml
Last updated
Was this helpful?