본문 바로가기
Cloud/K8S

Kustomize, Helm Chart 시스템 구축

by JunHeeLim 2024. 2. 9.

Helm은 템플릿 엔진이고 Kustomize는 오버레이 메커니즘을 따릅니다.

  • Helm Chart에서 템플릿된 YAML 파일을 불러옵니다.
  • Kustomize 가 환경별(Dev,Stg,Live) 로 YAML 파일을 수정(Patch/Overlay) 합니다.
  • 완성된 Yaml 이 쿠버네티스에 배포됩니다.

 

ARGOCD_MANIFEST 프로젝트

  • ArgoCd에서 사용될 Gitops Repository
  • Name: Gitlab에 생성된 각 프로젝트 이름으로 생성됨
 

Kustomize: 배포 리소스 모듈화

  • base:
    • kustomization.yaml: helm chart 연동 규격에 대해 정의
    • values.yaml: helm chart template 에서 사용할 변수값 정의
  • dev, stg, prod
    • kustomization.yaml: 개발, 스테이징, 운영환경에서 각각 적용할 kustomization 값 분리
    • 배포환경에 변경하여 사

Kustomization.yml 설명

  • repo: Helm Chart가 올라가 있는 웹서버
    • [name: fastapi] : Helm에서 처리할 api 이름, Helm 에서 index.yaml 에서 연동
    • repo: Helm 이 업로드 된 storage path
    • releaseName: Helm Chart에서 사용될 프로젝트명
    • valuesFile: values.yaml을 변수가 정의된 파일로 사용
helmCharts:
- name: fastapi
  repo: example.storage.com/helm
  version: 0.1.0
  releaseName: test-app
  namespace: default
  valuesFile: values.yaml

HELM_CHART 프로젝트 구성

  • ArgoCd Gitops Repository의 Kustomization 에서 사용될 Helm Chart 프로젝트
  • fastapi-0.1.0.tgz: Object Storage 에 올라갈 Helm Chart 파일
  • index.yaml: Storage 에 올라갈 API 정의 파일
  • index.yaml
apiVersion: v1
entries:
  fastapi:
  - apiVersion: v2
    appVersion: "1.0"
    created: "2024-02-05T16:39:53.6250541+09:00"
    description: A Helm chart for deploying project
    digest: b212cc1ff670a1e2b2d50a03b7703afc21031655564e2090e1b74066336ccc7d
    name: fastapi
    type: application
    urls:
    - https://example.storage.com/helm/fastapi-0.1.0.tgz
    version: 0.1.0
generated: "2024-02-05T16:39:53.6244422+09:00"

프로젝트 구성

  • template: 쿠버네티스에서 사용할 파일에 대해 정의한다(deployment, service, ingress, sa, storageClass 등)
    • *.yaml
  • Chart.yaml: Helm Chart 의 구성
  • values.yaml: template 에서 사용될 변수 정의


헬름차트 Stroage에 업로드

  • fastapi-0.1.0.tgz 및 index.yaml 파일을 업로드

 

'Cloud > K8S' 카테고리의 다른 글

[ArgoCD] K8S 환경에 ArgoCD 뿌리기!  (1) 2024.02.09

댓글