Ana içeriğe geç

Argo CD ile GitOps Continuous Delivery (Kubernetes)

Bu rehberde ne öğreneceksiniz?

Bu rehberde

oaicite:0
kullanarak
oaicite:1
üzerinde
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.)
  • kubectl yüklü ve cluster erişimi tanımlı
  • Git deposu (GitHub veya GitLab)
  • (Önerilir)
    oaicite:2
  • argocd CLI

🔍 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ı:
  1. Git değişince otomatik deploy eder

  2. Fazla kaynakları siler

  3. Manuel müdahaleleri geri alır


⚙️ Adım 1 – Argo CD Kurulumu

  1. 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

  1. New App

  2. Application Name: ana-uygulama

  3. Sync Policy: Automatic

  4. Source Path: kumesel/dev

Destination: https://kubernetes.default.svc


🔄 Adım 5 – Senkronizasyon ve Drift Kontrolü

  1. Uygulama oluşturulduğunda durum OutOfSync olur.

  2. Web arayüzünde Sync butonuna basın

  3. Argo CD tüm alt uygulamaları otomatik oluşturur

  4. 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)

  1. Argo CD Helm destekler mi? Evet. Helm, Kustomize, Jsonnet ve düz YAML desteklenir.

  2. Rollback nasıl yapılır? Arayüzde History and Rollback bölümünden tek tıkla.

  3. Birden fazla cluster yönetilebilir mi? Evet. argocd cluster add ile merkezi yönetim mümkündür.

  4. 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.