📖 6 dakika okuma süresi
📋 İçindekiler
Giriş
Günümüzde, modern yazılım geliştirme süreçlerinde sürekli entegrasyon ve sürekli dağıtım (CI/CD) büyük önem taşımaktadır. Özellikle Kubernetes gibi konteyner orkestrasyon platformlarının yaygınlaşmasıyla birlikte, GitOps yaklaşımı, altyapı ve uygulama dağıtımlarını yönetmek için popüler bir yöntem haline gelmiştir. Bu yazıda, Argo CD kullanarak GitOps tabanlı sürekli dağıtım stratejilerini, özellikle çoklu küme yönetimi ve ileri seviye senkronizasyon konularına odaklanarak inceleyeceğiz. GitOps ve Argo CD ile Güvenli ve Ölçeklenebilir Sürekli Dağıtım başlıklı yazımızda bu temellere değinmiştik.
GitOps ve Argo CD Nedir?
GitOps, altyapı ve uygulama tanımlamalarının (Infrastructure as Code – IaC) Git gibi bir versiyon kontrol sisteminde saklanması ve bu tanımlamaların otomatik olarak uygulanması prensibine dayanır. Bu yaklaşım, sistemlerin istenen duruma getirilmesini ve tutulmasını sağlar, değişikliklerin izlenmesini kolaylaştırır ve geri alma işlemlerini basitleştirir.
Argo CD ise, Kubernetes için özel olarak tasarlanmış, açık kaynak kodlu bir GitOps aracıdır. Git depolarında tanımlanan uygulama manifestlerini Kubernetes kümelerine otomatik olarak dağıtır ve senkronize eder. Argo CD, deklaratif konfigürasyon yönetimi, otomatik senkronizasyon ve sağlık kontrolü gibi özellikleri sayesinde, uygulama dağıtım süreçlerini kolaylaştırır ve güvenilir hale getirir.
Çoklu Küme Yönetimi
Birçok kuruluş, farklı amaçlar için birden fazla Kubernetes kümesi kullanır. Örneğin, geliştirme, test ve üretim ortamları ayrı kümelerde barındırılabilir. Argo CD, çoklu küme yönetimini kolaylaştırarak, tek bir merkezden tüm kümelerdeki uygulamaların dağıtımını ve senkronizasyonunu sağlar.
Çoklu Küme Yapılandırması
Argo CD’ye birden fazla Kubernetes kümesi eklemek için, her küme için bir `Kubernetes Cluster` kaynağı tanımlamanız gerekir. Bu kaynak, kümenin API sunucusuna erişim bilgilerini (URL, sertifika, token vb.) içerir. Argo CD, bu bilgiler sayesinde kümelerle iletişim kurabilir ve uygulama manifestlerini dağıtabilir.
apiVersion: v1
kind: Secret
metadata:
name: my-cluster-credentials
namespace: argocd
labels:
argocd.argoproj.io/secret-type: cluster
data:
server:
config:
eyJjbHVzdGVycyI6W3siY2x1c3RlciI6eyJhY3Rpb24tcXVlcnktcGVyLW1hcCI6MCwiY2VydGlmaWNhdGUtYXV0aG9yaXR5LWRhdGEiOiI8YmFzZTY0IGVuY29kZWQgQ0EgZGF0YT4iLCJzZXJ2ZXIiOiJodHRwczovL215LWNsdXN0ZXIuY29tIn19XX0=
Uygulama Dağıtımı
Çoklu kümeye uygulama dağıtımı yapmak için, Argo CD’de bir `Application` kaynağı oluşturmanız gerekir. Bu kaynak, uygulamanın Git deposundaki manifestlerin yolunu, hedef kümeyi ve diğer dağıtım seçeneklerini belirtir. Argo CD, bu bilgilere göre uygulamayı hedef kümeye dağıtır ve senkronize eder.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-application
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/my-org/my-app.git
targetRevision: HEAD
path: manifests/production
destination:
server: https://my-cluster.com
namespace: my-namespace
syncPolicy:
automated: {}
İleri Seviye Senkronizasyon Stratejileri
Argo CD, temel senkronizasyon işlemlerinin yanı sıra, daha karmaşık dağıtım senaryoları için çeşitli ileri seviye senkronizasyon stratejileri sunar.
Sync Windows
Sync Windows, uygulamaların yalnızca belirli zaman aralıklarında senkronize edilmesine olanak tanır. Bu özellik, örneğin, yoğun saatlerde dağıtım yapmaktan kaçınmak veya belirli bakım pencerelerinde güncelleme yapmak için kullanılabilir.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-application
namespace: argocd
spec:
# ...
syncPolicy:
automated: {}
syncOptions:
- CreateNamespace=true
managedNamespaceMetadata:
labels:
my-label: my-value
annotations:
my-annotation: my-annotation-value
Pre-Sync ve Post-Sync Hooks
Pre-Sync ve Post-Sync Hooks, senkronizasyon işleminin öncesinde veya sonrasında özel komutlar çalıştırmanıza olanak tanır. Bu özellik, örneğin, veritabanı şemasını güncellemek, önbelleği temizlemek veya diğer bağımlılıkları yönetmek için kullanılabilir.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-application
namespace: argocd
spec:
# ...
syncPolicy:
automated: {}
syncOptions:
- PruneLast=true
Health Checks
Argo CD, uygulamaların sağlık durumunu sürekli olarak izler ve senkronizasyonun başarılı olup olmadığını belirlemek için bu bilgileri kullanır. Health Checks sayesinde, hatalı veya çalışmayan uygulamaların otomatik olarak geri alınması sağlanabilir.
Ayrıca, Kubernetes’te Olay Güdümlü Otomatik Ölçeklendirme: KEDA ile Performansı Optimize Edin yazımızda da bahsettiğimiz gibi, KEDA gibi araçlarla Argo CD’nin senkronizasyon süreçlerini daha da optimize edebilirsiniz.
Kullanım Senaryoları
- Çoklu Ortam Yönetimi: Geliştirme, test ve üretim ortamlarını farklı Kubernetes kümelerinde barındırarak, her ortam için ayrı konfigürasyonlar tanımlayabilir ve Argo CD ile bu konfigürasyonları otomatik olarak senkronize edebilirsiniz.
- Mikroservis Mimarisi: Mikroservis tabanlı uygulamaları, her bir servisi ayrı bir Argo CD uygulaması olarak tanımlayarak yönetebilirsiniz. Bu sayede, her servisin bağımsız olarak dağıtılması ve güncellenmesi sağlanır.
- Felaket Kurtarma (Disaster Recovery): Farklı bölgelerde veya veri merkezlerinde birden fazla Kubernetes kümesi oluşturarak, bir felaket durumunda uygulamaların otomatik olarak diğer kümelerde ayağa kalkmasını sağlayabilirsiniz.
Kurulum ve Başlangıç Rehberi
Argo CD’yi kurmak için aşağıdaki adımları izleyebilirsiniz:
- Argo CD kurulum manifestlerini indirin:
kubectl create namespace argocdvekubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml - Argo CD CLI’yı indirin ve kurun: Argo CD CLI Kurulumu
- Argo CD’ye erişmek için bir port-forwarding oluşturun:
kubectl port-forward svc/argo-cd-server -n argocd 8080:443 - Argo CD web arayüzüne erişin ve ilk kullanıcı adınız `admin` olacaktır. Başlangıç şifrenizi almak için:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -dkomutunu kullanın. - Bir Git deposu oluşturun ve uygulama manifestlerinizi bu depoya ekleyin.
- Argo CD’de bir `Application` kaynağı oluşturarak, uygulamanızı hedef kümeye dağıtın.
BirCloud Perspektifi
BirCloud olarak, müşterilerimizin bulut altyapılarını en verimli şekilde yönetmelerine yardımcı olmayı hedefliyoruz. Argo CD, GitOps prensiplerini uygulayarak, uygulama dağıtım süreçlerini otomatikleştirmenize, güvenilirliği artırmanıza ve maliyetleri düşürmenize olanak tanır. Uzman ekibimiz, Argo CD kurulumu, yapılandırması ve yönetimi konularında size destek sağlayabilir ve bulut stratejilerinizi optimize etmenize yardımcı olabilir. Argo CD ile GitOps Tabanlı Sürekli Teslimin (CD) Geleceği: BirCloud’un Vizyonu yazımızda da bu konuya değinmiştik.
Sonuç
Argo CD, GitOps tabanlı sürekli dağıtım stratejilerini uygulamak için güçlü ve esnek bir araçtır. Çoklu küme yönetimi ve ileri seviye senkronizasyon özellikleri sayesinde, karmaşık dağıtım senaryolarını kolayca yönetebilir ve uygulama dağıtım süreçlerinizi optimize edebilirsiniz. BirCloud olarak, Argo CD ve diğer bulut çözümleriyle ilgili uzmanlığımızla, işletmenizin dijital dönüşüm yolculuğunda size rehberlik etmekten memnuniyet duyarız.
❓ Sık Sorulan Sorular
Argo CD nedir?
Argo CD, Kubernetes için tasarlanmış, GitOps prensiplerine uygun, açık kaynak kodlu bir sürekli dağıtım aracıdır.
GitOps nedir?
GitOps, altyapı ve uygulama tanımlamalarının Git gibi bir versiyon kontrol sisteminde saklanması ve bu tanımlamaların otomatik olarak uygulanması prensibine dayanan bir yaklaşımdır.
Argo CD ile çoklu küme yönetimi nasıl yapılır?
Argo CD'ye her küme için bir Kubernetes Cluster kaynağı tanımlayarak ve ardından Application kaynaklarını bu kümelere yönlendirerek çoklu küme yönetimi yapılabilir.
Sync Windows nedir?
Sync Windows, uygulamaların yalnızca belirli zaman aralıklarında senkronize edilmesine olanak tanıyan bir Argo CD özelliğidir.
Argo CD'yi nasıl kurabilirim?
Argo CD'yi kurmak için Argo CD kurulum manifestlerini uygulayabilir, CLI'yı indirebilir ve bir port-forwarding oluşturarak web arayüzüne erişebilirsiniz.



