Argo CD, Kubernetes ortamları için geliştirilen açık kaynaklı bir GitOps Continuous Deployment aracıdır ve GitOps'un temel taşı olan Single Source of Truth modeline dayanan bir mimariye sahiptir.

Argo CD, belirli aralıklarla Kubernetes'e dağıtılmış uygulamaları izler ve git deposundaki yaml dosyalarıyla karşılaştırır. Herhangi bir değişiklik tespit ettiğinde, otomatik olarak senkronize eder.

1) ArgoCD Kurulumu

Bu adımda ArgoCD'nin Kubernetes Cluster'a kurulumunu nasıl gerçekleştirildiği anlatılmakta. Namespace olarak argocd oluşturulup github deposu kullanarak kubernetes üzerinde ArgoCD kurulumu yapılır.

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
watch kubectl get pods -n argocd
POWERSHELL

ArgoCD arayüzüne erişimini sağlamak için, patch komutu kullanılarak servis tipini Node Port  servis olarak yapılandırılır. 

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
kubectl get svc argocd-server -n argocd
POWERSHELL

ArgoCD arayüzüne erişmek için, servisinizin dışarı açtığı port adresini kullanarak erişim sağlayabilirsiniz.

http://<KUBERNETES_WORKER_IP_ADDRESS>:<PORT>
POWERSHELL

ArgoCD'nin arayüzüne erişmek için, aşağıdaki komutu kullanarak base64 formatında kodlanmış şifreyi decode edebilir ve şifrenizi görüntüleyebilirsiniz.

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
POWERSHELL

Default Username admin kullanıcısıdır. Bu bilgileri kullanarak ArgoCD arayüzüne giriş yapabilirsiniz.

2) Git Kurulumu 

Bu adımda git kurulumu gerçekleştirilip deployment dosyalarını github adresinize nasıl push edebileceğiniz anlatılmaktadır.

Örnek Apinizer Manager Deployment'ı kullanılarak gerçekleştirilmiştir. 


sudo apt update
sudo apt install git
git --version 
POWERSHELL

Çok Önemli

Git sizden bu bilgileri isteyebilir.

git config --global user.email "you@example.com"
git config --global user.name "Your Name"


Deployment dosyalarınızı tutmak bir için github üzerinden bir repo oluşturunuz.

Github reposuna dosya ekleyebilmek için git sistemine remote address olarak ekleyiniz.

Remote address olarak eklemek için token kullanabilirsiniz nasıl gerçekleştireceğinizi aşağıdaki uyarı alanında detaylıca anlatılmaktadır.


Çok Önemli

Eğer git kullanımında "Authentication failed" hatası alırsanız. Bu adımları takip edin

  1. GitHub hesabınıza giriş yapın.
  2. Sağ üst köşedeki profil resminize tıklayın ve "Settings" (Ayarlar) seçeneğini seçin.
  3. Sol menüden "Developer settings" (Geliştirici ayarları) altında "Personal access tokens" seçeneğine gidin.
  4. "Token" ardından "Generate new token" düğmesine tıklayın.
  5.  Gerekli izinleri verin.
  6. Sayfanın en altına gidin ve "Generate token" düğmesine tıklayın.
  7. Token değerini kopyalayın ve güvenli bir yere kaydedin. Bu değeri tekrar görüntüleyemezsiniz.

git remote set-url origin https://<USERNAME>:<ACCESS_TOKEN>@<REPO_ADDRESS>

Örnek: https://test:ghp_xxxx@github.com/test/test.git
POWERSHELL

Apinizer'ın manager yaml dosyasını git versiyon sistemine ekleyiniz ve uzak repo adresinize push işlemini gerçekleştiriniz.

git init
git add apinizer-api-manager-deployment.yaml
git commit -m "manager add"
git remote add origin <GITHUB_REPO_ADDRESS> 
git push -u origin master
POWERSHELL

Github üzerine yaml dosyalarını ekledikten sonra ArgoCD arayüzünden geri kalan adımlara devam edebilirsiniz.

3) Git Repository'sinin ArgoCD'ye Eklenmesi

Yaml dosyasını github reposuna eklenme işleminden sonra ArgoCD  arayüzünden bu repo adresini eklenmelidir.

Birçok connect olma yöntemleri vardır. HTTPS yöntemi için bu alanları doldurulması gereklidir.

Çok Önemli

Bağlantı yöntemi olarak HTTPS seçilir ise password kısmına önceki adımda oluşturduğunuz token değerini yazınız.

4) ArgoCD Uygulama Oluşturma

Uygulama için bir isim verilir. Eğer ArgoCD'nin depoda herhangi bir güncelleme olduğunu otomatik olarak kontrol etmesini istiyorsanız, SYNC POLICY seçeneğini Automatic olarak ayarlayabilirsiniz.

ArgoCD bu durumda sizin yerinize 3 dakikada bir kontrol sağlayacaktır.

Kubernetes Cluster'ınızda daha önceden oluşturulmamış bir namespace'e ihtiyaç duyduğunuzda, AUTO-CREATE NAMESPACE seçeneği ile ArgoCD  kubernetes clusterınızda bir namespace oluşturacaktır.

ArgoCD size deployment, replica set ve podları gösterecektir. Aşağıdaki örnek görselde podun anlık olarak log verilerini görebiliyoruz. 

Yaml dosyanızda yapılan bir değişikliği manuel olarak SYNC butonuna basarak değişikleri sağlayabilirsiniz.

YAML dosyalarında yapılan her değişikliği otomatik olarak tespit eden ArgoCD, podlarınızı güncelleyerek deploy süreçlerinizi sizin yerinize otomatikleştirmenizi sağlar.

Bu otomatikleştirme ile birlikte, deploy süreçleriniz daha verimli ve hızlı bir şekilde gerçekleşirken, manuel müdahalelerin ve hataların önüne geçebilirsiniz.