DevOps and Infrastructure

ArgoCD ile Kendini Onaran Kubernetes

Bulut-native altyapının dinamik dünyasında GitOps'un altın kuralı basittir: Git depolarınızda tanımlanan durum, tek gerçeklik kaynağı olmalıdır. Ancak gerçeklik genellikle bu idealden sapar. "Drift" (saptaklık), çalışan bir Kubernetes kümesinin gerçek durumu, Git'te saklanan istenen durumdan farklılaştığında ortaya çıkar. Bu durum, doğrudan kubectl düzenlemeleri, otomatik ölçeklendirme olayları veya üçüncü taraf operatörler nedeniyle gerçekleşebilir. Drift biriktiğinde, öngörülemez davranışlara, güvenlik açıklarına ve dağıtım hatalarına yol açar. Neyse ki, Kubernetes için önde gelen beyanlı sürekli teslimat aracı olan ArgoCD, bu drifti yalnızca tespit etmekle kalmaz, aynı zamanda otomatik olarak giderir ve kendini onaran bir ekosistem oluşturur.

Drift Manzarasını Anlamak

Drift, altyapı kararlılığının sessiz düşmanıdır. ArgoCD, küreyi Git durumuna geri senkronize etmede mükemmel olsa da, yapılandırma olmadan bunu her zaman otomatik olarak yapmaz. Varsayılan olarak ArgoCD, bir fark algıladığında "OutOfSync" (Senkronize Değil) durumuna girer. Birçok kurumsal kurulumda ekipler, bir geliştiricinin senkronizasyonu gözden geçirmesini ve onaylamasını gerektiren "manuel müdahale" yaklaşımını tercih eder. Ancak, kritik olmayan yapılandırma saptaklıkları veya acil tutarlılık gerektiğinde, ArgoCD'yi kendini onaran bir ajan olarak yapılandırabiliriz.

Kendini onarma, sistemin tutarsızlığı algılaması ve insan müdahalesi olmadan çözmesi anlamına gelir. Bu, yanlışlıkla yapılmış config map değişiklikleri, düğüm etiketi değişiklikleri veya küme durumundan sapan pod yeniden başlatma tutarsızlıkları gibi senaryolar için özellikle yararlıdır.

Pruning ve Senkronizasyon Politikalarının Yapılandırılması

ArgoCD'nin giderme yeteneğinin özü, senkronizasyon politikalarında yatar. Kendini onarmayı etkinleştirmek için, Application kaynağını, saptaklık gösteren kaynakları otomatik olarak prune (temizle) etmesi ve küreyi istenen duruma senkronize etmesi için yapılandırmamız gerekir.

Öncelikle, ArgoCD Application tanımınızda otomatik senkronizasyon özelliğini etkinleştirin. Bu, küme durumu Git deposundan sapıldığında bir senkronizasyon işlemi tetikleyen syncPolicy'i automated olarak ayarlar.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: web-service
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/example/k8s-apps.git
    targetRevision: HEAD
    path: web-service
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true
      - PruneLast=true

prune: true seçeneği kritiktir. Git deposunda artık tanımlanmayan ancak kümede var olan kaynakları silmek için ArgoCD'yi yönlendirir. selfHeal: true ile birleştirildiğinde, ArgoCD herhangi bir sapmayı hemen düzeltmeyi deneyecek ve kümenin gerçeklik kaynağıyla sürekli olarak yakınsamasını sağlayacaktır.

Prune Koruması ve Güvenliği Yönetmek

Otomasyon güçlü olsa da, kontrolsüz pruning tehlikeli olabilir. Yanlış bir yapılandırma kritik altyapının silinmesine yol açarsa, zincirleme bir arıza ile karşılaşabilirsiniz. Bunu önlemek için ArgoCD, pruneLast seçeneklerini ve kaynak pruning koruma mekanizmalarını destekler. Ayrıca, senkronizasyon işlemi sırasında silinmemeleri için belirli kaynaklara etiket ekleyebilirsiniz. Bu, PersistentVolumes veya belirli gizli veriler gibi kritik bileşenler için bir "güvenlik ağı" oluşturur.

Örneğin, argocd.argoproj.io/sync-wave etiketini eklemek, bağımlı kaynakların birincil uygulama kararlı olana kadar prune edilmesini önleyerek işlem sırasını kontrol etmenizi sağlar.

Drift Üzerinde İzleme ve Uyarılandırma

Kendini onarma etkinleştirilmiş olsa bile, görünürlük her şeyden önemlidir. Drift olaylarının sıklığını izlemek için ArgoCD'yi Prometheus ve Grafana gibi izleme çözümleriyle entegre etmelisiniz. Bir küme tekrar tekrar "OutOfSync" durumuna giriyorsa, bu, kaynakları doğrudan değiştiren bir kaçak operatör veya hatalı bir CI/CD hattı gibi daha derin bir soruna işaret eder. Sürekli drift için uyarı kurmak, otomatik giderme altta yatan sorunu maskelemeden önce operasyon ekiplerinin kök nedene araştırma yapmasını sağlar.

Sonuç

ArgoCD ile drift algılama ve giderme otomasyonu, pasif bir GitOps iş akışını aktif, kendini onaran bir altyapıya dönüştürür. Otomatik senkronizasyon politikalarını, pruning'ı ve güvenlik etiketlerini kullanarak ekipler, Kubernetes kürelerinin tutarlı, güvenli ve güvenilir kalmasını sağlayabilir. Hedef manuel müdahaleyi en aza indirmek olsa da, kendini onarmanın gerçek değeri, geliştiricilere ve operasyon ekiplerine sağladığı güven yatar; böylece onlar bakım yerine inovasyona odaklanabilirler.

Share: