Helm Repository

Github에 helm repository 만들기

1. Github으로 이동

github repository home

2. New 버튼을 클릭한다.

  • Repository name(helm-charts)
  • Public 체크
  • Add a README file 체크

    create-repository

3. 생성된 Repository 화면

repository home

4. 접근 URL 셋팅

  • 리파지터리 홈 탭 메뉴의 Settings를 선택한다.

  • 좌측 메뉴에 Pages를 선택한다.

    repository home

  • main 브랜치를 선택후 save 버튼을 클릭한다.

    repository home

  • publicshed 주소가 나오는데 이 주소가 helm repository 주소가 된다.

    repository home

5. Local Repository 만들기

  • 생성한 Repository를 로컬에 clone한다.
$ git clone https://github.com/"Your github id"/helm-charts.git
$ cd helm-charts

# stable 디렉토리를 생성한다. 
$ mkdir stable

6. 아래 samples Repository를 로컬에 clone한다.

helm sample Github

  • 차트 검증
$ cd samples\sftp-server\
$ helm lint
==> Linting .
[INFO] Chart.yaml: icon is recommended

1 chart(s) linted, 0 chart(s) failed
  • helm차트를 패키징한다.
$ cd samples
$ helm package .\sftp-server\
Successfully packaged chart and saved it to: C:\work2022\git\hnc-hskim\samples\sftp-server-0.3.2.tgz
  • 만들어진 sftp-server-0.3.2.tgz 파일을 Helm Local Repository에 복사한다.
cp sftp-server-0.3.2.tgz "your helm chart local repo"/statble/sftp-server-0.3.2.tgz
  • helm chart local repository에서 아래 명령으로 index.yaml파일을 새로 만든다.
#helm repo index stable/ --url https://"Your github id".github.io/helm-charts/stable

# helm-chart 리파지터리 root에서 실행
#helm repo index ./stable

#helm repo index ./code-server

repository home

7. 작업 내용을 commit 한다.

$ git add . && git commit -m "init helm charts" && git push origin main

7. Helm Repository 추가

  • 작업 내용을 commit하면 git actions에 의해 Github Pages가 빌드후 배포된다.
$ helm repo add github-stable https://"Your github id".github.io/helm-charts/stable
"github-stable" has been added to your repositories
  • helm repository 확인
$ helm repo list
NAME            URL 
github-stable   https://hnc-hskim.github.io/helm-charts/stable

$ helm search repo sftp-server
NAME                            CHART VERSION   APP VERSION     DESCRIPTION
github-stable/sftp-server       0.3.2           1.0             A helm chart for a SFTP server

8. 배포

$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "github-stable" chart repository 
Update Complete. ⎈Happy Helming!⎈

$ kubectl create namespace sftp
namespace/sftp created
 
$ helm install --generate-name github-stable/sftp-server --namespace sftp
NAME: sftp-server-1658462580
LAST DEPLOYED: Fri Jul 22 13:03:01 2022
NAMESPACE: sftp
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Get the application URL by running these commands:

  export POD_NAME=$(kubectl get pods --namespace sftp -l "app.kubernetes.io/name=sftp-server,app.kubernetes.io/instance=sftp-server-1658462580" -o jsonpath="{.items[0].metadata.name}")
  echo "Visit http://127.0.0.1:8080 to use your application"
  kubectl port-forward $POD_NAME 8080:80
  • values.yaml 수정 및 사용
$ helm inspect values github-stable/sftp-server >> values.yaml

# values.yaml 파일을 열고 ingress 섹션을 수정한다.

ingress:
  enabled: true
  className: ""
  annotations: {}
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
  hosts:
    - host: chart-example.local
      paths:
        - path: /
          pathType: ImplementationSpecific
  tls: []
  #  - secretName: chart-example-tls
  #    hosts:
  #      - chart-example.local

# 수정한 values.yaml 파일을 이용하여 helm 배포
$ helm install -f values.yaml --generate-name github-stable/sftp-server --namespace sftp 

9. 삭제

$ helm ls -n sftp
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
sftp-server-1658462580  sftp            1               2022-07-22 13:03:01.7682638 +0900 KST   deployed        sftp-server-0.3.2       1.0 

$ helm delete sftp-server-1658462580 -n sftp
release "sftp-server-1658462580" uninstalled

10. Local Helm Repository 구성




git submodule add -b main https://github.com/hnc-hskim/helm-charts.git packages