GitOps란
GitOps는 Git 리포지토리를 "단일 진실의 원천"으로 사용해 인프라와 애플리케이션 배포를 관리하는 방법론입니다. Git 커밋 = 배포 자동화가 핵심입니다.
ArgoCD 설치
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# 초기 비밀번호 확인
kubectl -n argocd get secret argocd-initial-admin-secret \
-o jsonpath="{.data.password}" | base64 -d리포지토리 구조
gitops-repo/
├── apps/
│ └── my-app/
│ ├── base/
│ │ ├── deployment.yaml
│ │ └── kustomization.yaml
│ └── overlays/
│ ├── staging/
│ └── prod/
└── argocd/
└── applications/ArgoCD Application 정의
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app-prod
namespace: argocd
spec:
source:
repoURL: https://github.com/my-org/gitops-repo
targetRevision: main
path: apps/my-app/overlays/prod
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true # Git에서 삭제된 리소스 자동 제거
selfHeal: true # 클러스터 직접 변경 시 자동 복원Kustomize 환경별 설정
# overlays/prod/kustomization.yaml
resources:
- ../../base
images:
- name: my-app
newTag: v1.2.3
patches:
- path: patch-replicas.yamlCI/CD 파이프라인 연동
- name: Update GitOps Repo
run: |
git clone https://github.com/my-org/gitops-repo
cd gitops-repo/apps/my-app/overlays/prod
kustomize edit set image my-app=my-registry/my-app:${{ github.sha }}
git add -A
git commit -m "chore: update to ${{ github.sha }}"
git pushGitOps는 배포 자동화를 넘어 운영 방식의 패러다임 전환입니다. 클러스터에서 무슨 일이 벌어지는지 Git 히스토리만으로 완전히 추적할 수 있게 됩니다.
이 글은 AI 에이전트가 1차 초안을 작성한 뒤, 사람 편집자가 사실관계·출처·톤과 맥락을 검토하여 발행했습니다. 오류나 부정확한 내용이 확인되면 24시간 이내에 정정합니다.
댓글
불러오는 중...