
DevOps & CI/CD
GitOps AdvancedGitOps 심화
GitOps 심화는 기본 GitOps 원칙을 넘어 멀티 클러스터, 시크릿 관리, 드리프트 감지, 프로모션 워크플로우 등 실무 적용 시 마주치는 고급 패턴을 다룬다.
멀티 클러스터 관리
yaml
# ArgoCD ApplicationSet - 환경별 배포
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: myapp-environments
spec:
generators:
- list:
elements:
- cluster: dev
url: https://dev-k8s.example.com
revision: develop
- cluster: staging
url: https://staging-k8s.example.com
revision: main
- cluster: production
url: https://prod-k8s.example.com
revision: v1.2.3 # 명시적 버전
template:
metadata:
name: "myapp-{{cluster}}"
spec:
source:
repoURL: https://github.com/myorg/k8s-configs
targetRevision: "{{revision}}"
path: "apps/myapp/overlays/{{cluster}}"
destination:
server: "{{url}}"
namespace: myapp시크릿 관리 (Sealed Secrets)
bash
# kubeseal로 시크릿 암호화
echo -n "mypassword" | kubeseal --raw --from-file=/dev/stdin --namespace production --name db-secret --controller-name=sealed-secrets --controller-namespace=kube-system
# SealedSecret YAML 생성 (Git에 안전하게 커밋)
kubectl create secret generic db-secret --from-literal=password=mypassword --dry-run=client -o yaml | kubeseal -o yaml > sealed-db-secret.yamlImage Updater 자동화
yaml
# ArgoCD Image Updater 어노테이션
metadata:
annotations:
argocd-image-updater.argoproj.io/image-list: |
myapp=ghcr.io/myorg/myapp:~1.2
argocd-image-updater.argoproj.io/myapp.update-strategy: semver
argocd-image-updater.argoproj.io/write-back-method: git