🎯 주제 요약
현대 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의 표준이 됩니다.
IT & Tech 정보
Helm + GitOps + SecretOps: 프로덕션 등급 Kubernetes 배포를 위한 완전체 구성 전략
반응형
반응형