본문 바로가기
IT & Tech 정보

Helm + GitOps + SecretOps: 프로덕션 등급 Kubernetes 배포를 위한 완전체 구성 전략

by 지식과 지혜의 나무 2025. 5. 28.
반응형


🎯 주제 요약

현대 DevOps에서는 단순히 YAML을 배포하는 것이 아니라,
• Helm으로 템플릿화하고
• GitOps(예: Argo CD)로 상태 관리하며
• SecretOps(예: Sealed Secrets, Vault, SOPS 등)로 민감 정보 처리를 분리해야
“재현성 + 보안 + 변경 추적 + 팀 협업”이 가능한 안정적인 운영 체계를 만들 수 있습니다.



⚙️ 핵심 구성 요소

구성요소 역할
Helm 파라미터화된 배포 템플릿 정의
Argo CD Git 저장소 기준의 선언적 배포 및 상태 Sync
Bitnami Sealed Secrets / SOPS 보안 정보 Git 추적 및 복호화 연동
Kustomize 환경별 overlay 적용 가능 (선택 사항)




🧱 실전 디렉토리 구조 예시

├── charts/
│   └── myapp/
│       ├── Chart.yaml
│       ├── values.yaml
│       └── templates/
├── environments/
│   ├── staging/
│   │   ├── values.yaml
│   │   └── sealed-secret.yaml
│   └── prod/
│       ├── values.yaml
│       └── sealed-secret.yaml
├── apps/
│   └── argo-app.yaml




🧩 핵심 파일 예시

1. Helm values.yaml

replicaCount: 3
image:
  repository: myorg/myapp
  tag: "1.2.3"
env:
  - name: NODE_ENV
    value: production

2. Sealed Secret (Bitnami 방식)

apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
  name: myapp-secret
spec:
  encryptedData:
    DB_PASSWORD: AgBh12jk34F...

→ 실제 Git에는 암호화된 상태만 저장
→ K8s 내에서 controller가 복호화하여 사용



3. Argo CD 앱 정의 (GitOps entrypoint)

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: myapp-prod
spec:
  project: default
  source:
    repoURL: 'https://github.com/myorg/infrastructure'
    targetRevision: HEAD
    path: environments/prod
    helm:
      valueFiles:
        - values.yaml
  destination:
    server: 'https://kubernetes.default.svc'
    namespace: myapp
  syncPolicy:
    automated:
      prune: true
      selfHeal: true




🔐 Secret 관리 전략 비교

방식 Git 커밋 가능 여부 복호화 주체 적합 상황
Sealed Secrets ✅ 가능 K8s controller (1-way) 쉬운 CI/CD 연동, 강력한 제어
SOPS + KMS ✅ 가능 GitOps/CI 시점 복호화 GCP/AWS KMS와 통합된 키 관리
HashiCorp Vault ❌ Git 불가 외부 시스템과 연동 필요 민감 정보가 많고 보안 요구 높은 환경




🚦 실제 운영 체크리스트

항목 점검 사항
이미지 레지스트리 인증 Helm imagePullSecrets에 Secret 연동
배포 승인 프로세스 Argo CD + GitHub Pull Request 필수화
Secret key rotation Sealed Secrets 재생성 자동화 스크립트 구성
Canary 배포 가능성 확장 Argo Rollouts + Helm Hook 연계 고려
환경별 구성 유지 values-staging.yaml, values-prod.yaml 명확 분리




💡 실리콘밸리형 팀이 이렇게 씀

조직 Helm 활용 사례
GitLab 모든 SaaS 구성 요소 Helm + Argo CD 기반 배포
Spotify Backstage 플러그인으로 Argo CD Helm Chart 자동 생성
Shopify SecretOps는 Vault, 배포는 GitOps, Helm은 템플릿 전용으로 분리




✅ 결론: “Git에 적는 순간부터 배포는 시작된다”

Helm 없이 배포하면 재현성이 없고,
GitOps 없이 배포하면 추적이 불가능하며,
SecretOps 없이 배포하면 보안이 뚫립니다.

3가지를 합쳐야 비로소 DevSecOps의 표준이 됩니다.


반응형