
GitOps Nedir? ArgoCD ile Kubernetes'e Sürekli Teslimat
Geleneksel CI/CD pipeline'larında deploy komutu dışarıdan tetiklenir ve cluster durumu ile Git arasında sapma (drift) oluşabilir. GitOps, Git repository'sini tek doğru kaynak (single source of truth) olarak kabul eder ve ArgoCD bu kaynağı Kubernetes cluster'ıyla sürekli senkronize tutar. Bu rehberde
Ahmet Yılmaz
Kıdemli Altyapı Mühendisi
Geleneksel CI/CD pipeline'larında deploy komutu dışarıdan tetiklenir ve cluster durumu ile Git arasında sapma (drift) oluşabilir. GitOps, Git repository'sini tek doğru kaynak (single source of truth) olarak kabul eder ve ArgoCD bu kaynağı Kubernetes cluster'ıyla sürekli senkronize tutar. Bu rehberde GitOps prensiplerini, ArgoCD kurulumunu ve production uygulamalarını ele alıyoruz.
GitOps Nedir?
GitOps, altyapı ve uygulama konfigürasyonunun tamamının Git'te tutulduğu ve cluster durumunun bu konfigürasyonla otomatik olarak eşlendiği bir operasyon modelidir. Dört temel prensibi vardır:
-
Declarative Configuration Tüm altyapı ve uygulama durumu YAML/JSON olarak tanımlanır. "Ne olması gerektiği" belirtilir, "nasıl yapılacağı" değil.
-
Git as Single Source of Truth Git repository'si istenen durumun tek kaynağıdır. Cluster'da yapılan manuel değişiklikler otomatik olarak geri alınır.
-
Otomatik Senkronizasyon Git'teki değişiklikler otomatik olarak cluster'a uygulanır. Manuel kubectl komutlarına gerek kalmaz.
-
Sürekli Reconciliation Agent sürekli olarak cluster durumunu Git ile karşılaştırır ve sapmaları düzeltir.
ArgoCD Kurulumu
ArgoCD, Kubernetes cluster'ınıza bir namespace olarak kurulur ve web UI, CLI ve API üzerinden yönetilir.
# ArgoCD namespace oluştur ve kur
$ kubectl create namespace argocd
$ kubectl apply -n argocd -f \
https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# Admin parolasını al
$ argocd admin initial-password -n argocd
# Web UI'a erişim için port-forward
$ kubectl port-forward svc/argocd-server -n argocd 8080:443
ArgoCD Application Tanımlama
ArgoCD'de her uygulama bir Application CRD'si ile tanımlanır. Bu kaynak, Git repository'si, hedef cluster ve senkronizasyon politikasını belirtir.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: web-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/company/k8s-manifests.git
targetRevision: main
path: apps/web-app/production
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
💡 İpucu: selfHeal: true ayarı, cluster'da manuel yapılan değişiklikleri otomatik olarak geri alır. Production ortamında bu ayarı açmak drift'i önler ancak acil müdahale gerektiren durumlarda geçici olarak kapatmanız gerekebilir.
Kubernetes temelleri için Kubernetes'e Giriş rehberimizi, Helm ile paket yönetimi için Helm Chart rehberimizi inceleyin. CI/CD entegrasyonu için GitHub Actions rehberimize göz atın. ArgoCD resmi dokümantasyonu ve OpenGitOps prensipleri ek kaynak olarak faydalıdır.
Sıkça Sorulan Sorular
GitOps ile geleneksel CI/CD arasındaki fark nedir?
Geleneksel CI/CD'de pipeline dışarıdan cluster'a push yapar. GitOps'ta ise cluster içindeki agent Git'ten pull yapar. Bu sayede cluster credential'ları CI sisteminde tutulmaz ve güvenlik artar.
ArgoCD ile Flux arasında hangisini seçmeliyim?
ArgoCD zengin web UI ve multi-cluster desteği sunar, görsel yönetim tercih edenler için uygundur. Flux daha hafif ve CLI odaklıdır, Terraform Controller gibi ek bileşenlerle genişletilebilir. Küçük ekipler için Flux, büyük organizasyonlar için ArgoCD önerilir.
GitOps sadece Kubernetes için mi?
GitOps prensipleri herhangi bir deklaratif sisteme uygulanabilir ancak en yaygın kullanımı Kubernetes iledir. Terraform, Crossplane ve Pulumi gibi araçlarla Kubernetes dışı altyapıya da GitOps uygulanabilir.
Secret'ları Git'te nasıl saklarım?
Secret'ları düz metin olarak Git'e koymayın. Sealed Secrets, SOPS veya External Secrets Operator kullanarak şifrelenmiş halde saklayın. ArgoCD bu araçlarla native entegrasyon sunar.
Sonuç
GitOps, Kubernetes deployment süreçlerini Git merkezli hale getirerek denetlenebilirlik, tekrarlanabilirlik ve güvenlik sağlar. ArgoCD ile otomatik senkronizasyon ve self-healing kurarak cluster drift'ini önleyin. Uygulama manifest'lerinizi ayrı bir Git repository'sinde tutun ve CI pipeline'ınızı yalnızca image build ile sınırlayın.
GitOps Altyapınız İçin Güçlü Sunucular
Hosted Cloud Kubernetes altyapısı ile GitOps pipeline'ınızı hızla kurun.
Bulut Sunucu Planlarını İncele →Ahmet Yılmaz
Kıdemli Altyapı Mühendisi
10 yılı aşkın bulut altyapısı ve DevOps deneyimiyle Hosted Cloud'un teknik ekibinde yer almaktadır. Kubernetes, Terraform ve yüksek erişilebilirlik mimarileri üzerine uzmanlaşmıştır.
Yorumlar yakında