Helm Chart 배포 전략

Helm Chart 배포 전략

8️⃣ Helm Chart 배포 전략


Helm은 Kubernetes 애플리케이션 배포의 자동화와 관리의 편리함을 제공합니다. 이번 섹션에서는 Helm을 활용한 다양한 배포 전략을 소개합니다.


1 Helm과 GitOps (ArgoCD, FluxCD 연동)

GitOps는 Git을 단일 소스로 사용하여 애플리케이션을 관리하는 방법론입니다. Helm은 GitOps 툴인 ArgoCDFluxCD와 함께 사용되어 자동화된 배포버전 관리를 가능하게 합니다.

📌 ArgoCD와 Helm 연동 예시

  1. ArgoCD에 Helm 차트를 연결하여 자동화된 배포를 설정합니다.

  2. ArgoCD 애플리케이션 설정에서 Helm 차트 URL을 지정하고, 원하는 값을 Git 저장소에 저장합니다.

  3. Git 저장소에 변경 사항을 푸시하면 ArgoCD가 이를 감지하고 자동으로 배포를 실행합니다.

# ArgoCD Application 예시
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
spec:
  destination:
    server: https://kubernetes.default.svc
    namespace: default
  source:
    repoURL: 'https://github.com/my-org/helm-charts.git'
    chart: my-app-chart
    targetRevision: HEAD

2 Helm Rollback (버전 롤백)

Helm은 배포된 차트를 쉽게 롤백할 수 있는 기능을 제공합니다. Helm Rollback을 사용하면 실수로 잘못된 버전을 배포했을 때 빠르게 이전 버전으로 되돌릴 수 있습니다.

📌 Helm Rollback 예시

  1. 설치된 차트 목록을 확인하여 Release 이름버전 번호를 찾습니다.
helm list
  1. 롤백할 차트의 버전으로 돌아갑니다.
helm rollback <release-name> <revision-number>

예를 들어, my-release라는 차트의 버전 1로 롤백하려면 아래와 같이 입력합니다.

helm rollback my-release 1

이 명령어는 배포된 차트버전 1로 롤백합니다.


3 Helm Hooks 활용 (배포 전후 스크립트 실행)

Helm Hooks는 배포 과정에서 특정 시점에 스크립트를 실행할 수 있도록 해줍니다. 예를 들어, 차트 배포 전후에 데이터베이스 마이그레이션 또는 환경 설정을 자동으로 수행할 수 있습니다.

📌 Helm Hook 예시

Helm에서 Hooks를 사용하려면, templates/ 디렉토리 내에서 hook을 설정할 수 있습니다.

# hooks/deployment-hook.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
  annotations:
    "helm.sh/hook": pre-install  # 설치 전 후크
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-image

위 예시에서는 pre-install 훅을 사용하여 Helm 차트를 설치하기 전에 특정 작업을 실행합니다.

📌 자주 사용되는 Helm Hooks 유형

  • pre-install: 차트 설치 전
  • post-install: 차트 설치 후
  • pre-upgrade: 차트 업그레이드 전
  • post-upgrade: 차트 업그레이드 후
  • pre-delete: 차트 삭제 전
  • post-delete: 차트 삭제 후

4 Helm과 CI/CD 파이프라인 통합 (GitHub Actions, Jenkins, GitLab CI)

Helm은 CI/CD 파이프라인에서 매우 유용하게 활용됩니다. GitHub Actions, Jenkins, GitLab CI와 같은 툴과 통합하여 자동화된 배포버전 관리를 구현할 수 있습니다.

📌 GitHub Actions와 Helm 연동 예시

  1. .github/workflows/helm-deploy.yml 파일을 생성합니다.
name: Helm Deploy

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Set up Helm
      uses: azure/setup-helm@v1

    - name: Helm install
      run: |
        helm repo add my-repo https://my-repo-url
        helm repo update
        helm upgrade --install my-release my-repo/my-chart

이 예시는 GitHub Actions에서 main 브랜치에 푸시될 때마다 Helm 차트를 자동으로 배포하는 CI/CD 파이프라인을 설정한 것입니다.

📌 Jenkins와 Helm 연동 예시

  1. Jenkins의 파이프라인 설정에서 Helm 명령어를 사용하여 배포합니다.
pipeline {
    agent any

    stages {
        stage('Checkout') {
            steps {
                git 'https://github.com/my-org/helm-charts.git'
            }
        }
        stage('Helm Install') {
            steps {
                sh 'helm repo add my-repo https://my-repo-url'
                sh 'helm repo update'
                sh 'helm upgrade --install my-release my-repo/my-chart'
            }
        }
    }
}

이 예시는 Jenkins에서 Helm 차트를 자동으로 설치하고 업그레이드하는 파이프라인을 설정한 것입니다.

RSS Feed
마지막 수정일자