ArgoCD ile Apinizer ve Versiyon Yönetimi
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
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
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>
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
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
Ç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
- GitHub hesabınıza giriş yapın.
- Sağ üst köşedeki profil resminize tıklayın ve "Settings" (Ayarlar) seçeneğini seçin.
- Sol menüden "Developer settings" (Geliştirici ayarları) altında "Personal access tokens" seçeneğine gidin.
- "Token" ardından "Generate new token" düğmesine tıklayın.
- Gerekli izinleri verin.
- Sayfanın en altına gidin ve "Generate token" düğmesine tıklayın.
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
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
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.