Argo CD ile GitOps Continuous Delivery (Kubernetes)
Bu rehberde ne öğreneceksiniz?
Bu rehberde
GitOps prensiplerine uygun bir Sürekli Dağıtım (CD) mimarisinin nasıl kurulacağını öğreneceksiniz.
Manuel Kubernetes dağıtımlarının yol açtığı hataları ortadan kaldırmayı,
Git’i tek doğruluk kaynağı haline getirmeyi ve
“App of Apps” deseniyle çoklu servisleri tek noktadan yönetmeyi göreceksiniz.
Kısaca: Git ne diyorsa cluster onu yapacak.
Hacı abi mimarisi 😎
🧠 Aşama 1 – Teknik Analiz ve Özet
Teknik konu: Kubernetes üzerinde Argo CD ile GitOps tabanlı Continuous Delivery
Çözülen problem:
Manuel deployment süreçleri hataya açıktır ve sürüm takibini zorlaştırır.
Çözüm yaklaşımı:
Argo CD, Git deposunda tanımlanan istenen durumu (desired state)
kümedeki canlı durum (live state) ile sürekli karşılaştırır
ve fark oluştuğunda otomatik olarak senkronizasyon sağlar.
İzlenen ana adımlar:
- Argo CD’nin Kubernetes kümesine kurulması
- Web arayüzü ve CLI erişiminin sağlanması
- Git deposu yapısının hazırlanması
- App of Apps deseniyle merkezi yönetim
- Otomatik senkronizasyon ve drift kontrolü
📦 Ön Gereksinimler
- Yönetici yetkilerine sahip bir Kubernetes kümesi
(Rabisu Cloud K8s, Minikube, vb.) kubectlyüklü ve cluster erişimi tanımlı- Git deposu (GitHub veya GitLab)
- (Önerilir) oaicite:2
argocdCLI
🔍 Argo CD Nedir?
Argo CD, Kubernetes üzerinde çalışan bir GitOps controller’dır.
Temel görevi:
- Git’te tanımlanan durumu izlemek
- Cluster’daki gerçek durumla karşılaştırmak
- Sapma varsa raporlamak ve düzeltmek
Durumlar:
- Synced → Git ve cluster uyumlu
- OutOfSync → Konfigürasyon sapması var
- Healthy / Degraded → Kaynak sağlığı
🧩 Argo CD Application Kavramı
Argo CD’de her dağıtım bir Application kaynağıyla tanımlanır.
Bir Application şunları belirtir:
- Hangi Git deposu
- Hangi cluster
- Hangi namespace
- Senkronizasyon politikası
Örnek Application CRD
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: ana-uygulama
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/rabisu/gitops-repo.git
targetRevision: main
path: kumesel/dev
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: true
- Bu yapı:
-
Git değişince otomatik deploy eder
-
Fazla kaynakları siler
-
Manuel müdahaleleri geri alır
⚙️ Adım 1 – Argo CD Kurulumu
- Kubectl ile Kurulum
kubectl create namespace argocd
kubectl apply -n argocd \
-f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/ha/install.yaml
- Bu komut Argo CD’yi HA (High Availability) modunda kurar.
Kurulumu doğrulamak için:
kubectl get pods -n argocd
🌐 Adım 2 – Web Arayüzüne Erişim
kubectl port-forward svc/argocd-server -n argocd 8080:443
- Tarayıcıdan:
https://localhost:8080
- Varsayılan admin şifresi:
kubectl -n argocd get secret argocd-initial-admin-secret \
-o jsonpath="{.data.password}" | base64 -d; echo
🧠 Adım 3 – App of Apps Deseni
App of Apps, Argo CD’nin en güçlü desenlerinden biridir. Tek bir parent application, tüm alt uygulamaları yönetir.
Örnek Git Yapısı
. ├── kumesel │ └── dev │ ├── nginx.yaml │ ├── redis.yaml │ └── prometheus.yaml └── root-app.yaml
- Bu yapıda:
root-app.yaml → parent application
kumesel/dev → alt uygulamalar
⚙️ Adım 4 – Parent Application Oluşturma
CLI ile
argocd login localhost:8080
argocd app create ana-uygulama \
--dest-namespace argocd \
--dest-server https://kubernetes.default.svc \
--repo https://github.com/KULLANICI_ADINIZ/REPO_ADINIZ.git \
--path kumesel/dev
Web Arayüzü ile
-
New App
-
Application Name: ana-uygulama
-
Sync Policy: Automatic
-
Source Path: kumesel/dev
Destination: https://kubernetes.default.svc
🔄 Adım 5 – Senkronizasyon ve Drift Kontrolü
-
Uygulama oluşturulduğunda durum OutOfSync olur.
-
Web arayüzünde Sync butonuna basın
-
Argo CD tüm alt uygulamaları otomatik oluşturur
-
Sağlıklı olanlar Healthy durumuna geçer
Bu noktadan sonra:
Git’e yeni YAML eklersen → otomatik deploy
Manuel değişiklik yaparsan → Argo CD geri alır
❓ Sıkça Sorulan Sorular (SSS)
-
Argo CD Helm destekler mi? Evet. Helm, Kustomize, Jsonnet ve düz YAML desteklenir.
-
Rollback nasıl yapılır? Arayüzde History and Rollback bölümünden tek tıkla.
-
Birden fazla cluster yönetilebilir mi? Evet. argocd cluster add ile merkezi yönetim mümkündür.
-
Self Heal nedir? Cluster’da yapılan manuel değişikliklerin Git’e göre geri alınmasıdır.
🎯 Sonuç
Tebrikler 🎉 Argo CD ile Kubernetes kümenizde GitOps tabanlı, denetlenebilir ve otomatik bir Continuous Delivery mimarisi kurdunuz.
Artık:
Git → tek doğruluk kaynağı
Argo CD → denetçi
Kubernetes → icracı
👉 Bu yapıyı Rabisu Bulut Kubernetes altyapısında güvenle çalıştırabilir, projelerinizi ölçeklenebilir şekilde büyütebilirsiniz.