Merhaba! Kubernetes kümelerini yönetmek zor olabilir, değil mi? İzlemeniz gereken çok sayıda YAML dosyanız, dağıtımınız ve değişikliğiniz var. Peki ya tüm bunları GitOps kullanarak halletmenin daha akıllı bir yolu olduğunu söylesem? GitOps ile tüm Kubernetes yapılandırmalarımız için tek veri kaynağı olarak Git’i kullanıyoruz. ArgoCD ise bunu mümkün kılan harika bir araç.
Bu makalede, Kubernetes ve ArgoCD ile basit ve adım adım bir GitOps iş akışı kurmayı adım adım anlatacağım. Hayatınızı kolaylaştıralım!
GitOps Nedir ve Neden ArgoCD?
GitOps, uygulama yapılandırmalarınız, dağıtımlarınız ve daha birçok şeyin bir Git deposunda depolandığı Kubernetes’i yönetmenin bir yoludur. Bir değişiklik yapmak istediğinizde, Git deposunu güncellersiniz ve değişiklikler otomatik olarak kümenize aktarılır. Manuel komutlara gerek yok! ArgoCD, Git deponuzu izleyen ve bu değişiklikleri Kubernetes kümenize uygulayan bir araçtır. Her şeyi senkronize tutan süper akıllı bir asistana sahip olmak gibidir.
Ön koşullar
Before we start, you’ll need:
- Bir Kubernetes kümesi (sürüm 1.21 veya üzeri). Test için Minikube’u veya AWS, GCP ya da Azure gibi herhangi bir bulut sağlayıcısını kullanabilirsiniz.
- ArgoCD kurulu (bunu aşağıda ele alacağız).
- Kubernetes bildirimlerinizi depolamak için bir Git deposu (GitHub veya GitLab gibi).
- Temel Kubernetes ve Git bilgisi. Merak etmeyin, basit tutacağım!
Adım 1: ArgoCD’yi yükleyin
Öncelikle, ArgoCD’yi Kubernetes kümemizde çalıştırmamız gerekiyor. En kolay yol, ArgoCD ekibi tarafından sağlanan tek bir YAML dosyasını kullanmaktır.
1. ArgoCD Ad Alanını Oluşturun
İşleri düzenli tutmak için argocd adında bir ad alanı oluşturun:
2. ArgoCD’yi yükleyin
Tüm bileşenleri yüklemek için resmi ArgoCD bildirimini uygulayın:
Bu komut, argocd ad alanındaki ArgoCD kurulumunu indirir ve uygular.
3. Kurulumu Doğrulayın
ArgoCD pod’larının çalışıp çalışmadığını kontrol edin:
Argocd-server, argocd-repo-server vb. gibi Çalışıyor durumundaki pod’ları görmelisiniz.
4. ArgoCD kullanıcı arayüzüne erişin
ArgoCD’nin hoş bir web arayüzü var. Erişim için şu portu yönlendirin:
Şimdi tarayıcınızda http://localhost:8080 adresini açın. Varsayılan kullanıcı adı admin’dir ve şifreyi şu şekilde alabilirsiniz:
Adım 2: ArgoCD’yi Git Deponuza Bağlayın
Şimdi, ArgoCD’ye Kubernetes manifestolarınızın nerede saklandığını söyleyelim. Bu manifestolar, uygulamalarınızı, hizmetlerinizi ve diğer kaynaklarınızı tanımlayan YAML dosyalarıdır.
1. Git deponuzu kurun
Bir Git deposu oluşturun (örneğin, GitHub’da). İçinde manifests adında bir klasör oluşturun ve basit bir Kubernetes dağıtımı ekleyin. İşte bir örnek:
2. Depoyu ArgoCD’ye ekleyin
ArgoCD kullanıcı arayüzünde “Yeni Uygulama”ya tıklayın ve şunları doldurun:
- Application Name:
guestbook - Project:
default - Sync Policy:
Manual(we’ll change to auto later) - Repository URL: Your Git repo URL (e.g.,
https://github.com/your-username/your-repo.git) - Path:
manifests - Cluster:
https://kubernetes.default.svc(for in-cluster) - Namespace:
default
Veya uygulamayı oluşturmak için şu YAML’ı kullanabilirsiniz:
Şu şekilde uygulayın:
Adım 3: True GitOps için Otomatik Senkronizasyonu Etkinleştirin
GitOps’un asıl büyüsü otomasyondur. ArgoCD’nin Git deponuzdaki değişiklikleri otomatik olarak uygulamasını sağlayalım.
1. Otomatik senkronizasyonu açın
ArgoCD kullanıcı arayüzünde, ziyaretçi defteri uygulamanıza gidin, “Uygulama Ayrıntıları”na tıklayın ve “Otomatik Eşitleme”yi etkinleştirin. Veya yukarıdaki YAML’yi aşağıdakileri içerecek şekilde güncelleyin:
prune: true Git’te artık bulunmayan kaynakları siler.
selfHeal: truekümede doğrudan yapılan tüm manuel değişiklikleri düzeltir.
2. Test edin
Git deposundaki guestbook.yaml dosyanızdaki replikaları: 2’yi replikalar: 3 olarak güncelleyin. Değişikliği gönderin:
Bir dakika içinde ArgoCD değişikliği fark edecek ve kümenizi güncelleyecektir. Senkronizasyon durumunu görmek için ArgoCD kullanıcı arayüzünü kontrol edin!
4. Adım: Profesyonel Kullanıcılar için Gelişmiş Özellikler
ArgoCD’nin bazı harika gelişmiş özellikleri var. Bunlardan birkaçından bahsedelim:
Çoklu Kümeler için ApplicationSets
Birden fazla kümeniz varsa (dev, staging, prod gibi), ApplicationSets hepsini yönetebilir. İşte bir örnek:
Bu, hem geliştirme hem de üretim kümelerinde ziyaretçi defteri uygulamasını oluşturur. Harika, değil mi?
Kayma Algılama
Bazen birileri kümeyi manuel olarak değiştirebilir (örneğin, bir dağıtımı doğrudan düzenleyerek). ArgoCD’nin selfHeal: true seçeneği, bu değişiklikleri Git deposuyla eşleşecek şekilde geri alır. Kullanıcı arayüzünde kayma uyarıları görebilirsiniz.
Çoklu Kiracı
Birden fazla ekibiniz varsa, erişimi kısıtlamak için ArgoCD Projeleri’ni kullanın. Örneğin:
Bu, takım-a’nın yalnızca kendi ad alanını yönetebilmesini sağlar.
En İyi Uygulamalar
- Organize your Git repo: Her ortam için dev/, staging/, prod/ gibi ayrı klasörler tutun.
- Validate manifests: Git’e göndermeden önce hataları yakalamak için CI boru hattınızda kubeval gibi araçlar kullanın.
- Monitor ArgoCD: Senkronizasyon durumunu ve hatalarını izlemek için Prometheus ve Grafana ile entegre edin.
- Secure your repo: Güvenliğinizi sağlamak için Git kimlik doğrulamasında SSH anahtarlarını veya OIDC’yi kullanın.
Common Challenges and Fixes
- Sync fails: Yanlış Git URL’leri veya izinler gibi hatalar için ArgoCD kayıtlarını (kubectl logs -n argocd) kontrol edin.
- Drift issues:Prune: true’nun eski kaynakları temizleyecek şekilde ayarlandığından emin olun.
- Large repos: Daha iyi ölçeklenebilirlik için ApplicationSets’i veya bölünmüş depoları kullanın.
Yazının orijinalini buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.