ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Helm3 Chart 생성 및 배포 정리 (feat. Github)
    K8S 2021. 7. 21. 16:00

    이번 포스팅은 다음 과정을 다룬다 .

     

    • helm3를 이용하여 차트 생성
    • 생성한 차트를 github 레포지토리에 등록하기 
    • github 레포지토리를 이용하여 helm에 추가하고 클러스터에 배포하기 

     

     

     

     

    1. chart 생성하기 

    mkdir ~/charts && cd ~/charts
    
    helm create my-chart 
    
    cd my-chart

     

     

    Chart.yaml:  차트에 대한 이름, 버전, 설명등이 정의되어 있다. 

    charts/ : chart 압축 파일들이 존재하는 디렉토리로  chart에서 사용하는 종속 chart들이 압축파일(tgz)으로 존재. helm dep up 명령 수행시 requirements.yaml을 참조하여 repository에서 다운 받아 생성

    templates/: manifest파일들이 들어있는 디렉토리

    values.yaml: 기본으로 제공되는 값으로 templates/의 manifest파일들에서 참조  

     

     

     

    다음과 같은 구조로 구성하자.

    (_helper.tpl은 필요한 파일이므로 지우면 안된다)

     

     

     

     

    < test.yaml >

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test-pod
      name: {{.Values.podname}}
    spec:
      containers:
      - command:
        - sleep
        - "1000"
        image: busybox
        name: test-pod
        resources: {}
      dnsPolicy: ClusterFirst
      restartPolicy: Always
    status: {}

     

     

     

    values.yaml에 podname항목을 추가해준다.  

     

     

     

     

    문법에 문제가 없는지  검사 

    helm lint my-chart

     

     

     

     

    dry-run 옵션을 주어 실제로 클러스터에 배포하지는 않고, 어떤 형태로 배포되는지 확인한다. 

    helm install test1 my-chart --dry-run

     

     

    metadata.name을 보면 values.yaml에 지정한 값(test-pod-name)이 추가된 것을 확인할 수 있다. 

     

     

     

     

     

    2. helm repository를 등록해서 사용해보자! 

     

    1) 차트 패키징하기 

     

    helm 레포지토리에는 위에서 봤던 helm chart가 들어가는게 아니라 위 차트를 패키징한 tgz파일 들어간다.

     

    다음 커맨드를 통해 패키지를 생성해준다. 

    helm package my-chart

     

     

     

     

     

    2) github 레포지토리 등록 

     

    먼저 깃허브에서 레포지토리를 생성해준 후, 

    다음 github page에서 master 브랜치로 https를 통해 접근할 수 있도록 설정해준다.

    후에 헬름에 레포지토리를 추가할 때 저  url로 한다. 

     

     

     

     

    git clone 후, 로컬 레포지토리에 stable, incubator 디렉토리 생성하고 

    패키징한 차트를 /helm-chart/stable에 복붙해준다. 

    (/helm-chart는 생성한 깃허브 레포지토리 명)

     

     cp ~/charts/my-chart-0.1.0.tgz  ~/helm-chart/stable/

     

     

     

     

    다음 커맨드를 통해 index.yaml 파일을 생성

    여기서 Index.yaml 파일이 있어야 local에서 helm 레포지토리로 추가할 수 있다. 

     

    helm repo index ~/helm-chart/stable

     

     

     

     

    이제 깃허브에 푸쉬한다. 

     

     

     

     

     

    3) 헬름에 차트를 등록하고 클러스터에 배포하자!

     

    index.yaml이 있는 경로로 레포지토리를 추가해줘야 하기 때문에 뒤에 stable 경로를 단다.  

     helm repo  add github-stable https://sjoh0704.github.io/helm-chart/stable

     

    다음과 같이 잘 추가된 깃허브 레포지토리 

     

     

     

     

    깃허브 레포지토리에 추가된 차트가 잘 있는지 확인하자. 

     

     

     

     

    추가된 차트를 이용해서 manifest 파일을 배포해보자.

    test라는 release-name으로 my-chart를 배포한다. 

     

     

     

     

    helm release 상태 확인 

     

     

     

     

    클러스터 내부에도 잘 배포된 모습 

     

     

     

     

    배포된 헬름 차트 삭제하기 

     

     

    반응형

    댓글

Designed by Tistory.