Kubernetes ortamında ArgoCD entegrasyonu | GitOps Nedir ?

Arda Batuhan Demir
4 min readNov 22, 2020

--

Teknoloji yığınlarımızı(tech stack) tamamlayabilmek için çeşitli üçünü parti ürünleri satın alıyoruz ve entegrasyonunu sağlıyoruz…Aslında bu sözünü ettiğimiz üçüncü parti ürünlerin hepsi tek başına kurulmak zorunda değil….Projenin ihtiyaçları doğrultusunda, elimizdeki ürüne birebir entegre edilmesini sağlayan bir yönetim konsolu veya gösterge konsolu ile beraber gelmektedir.Bu doğrultuda aslına bakarsanız, otomasyon ve verimliliği arttırmak için bazen bu dashboardları vs atlamış oluyoruz ve doğrudan doğruya bu sözünü ettiğimiz ürünleri otomatik hale getirmeyi ve tek elden yönetmeyi amaçlıyoruz…

Herhangi bir git reposunda tutulan uygulamaların bu Kubernetes cluster’ ları üzerine merkezi bir yerden deploy olması ve kontrol altında tutulması GitOps’u ortaya çıkarmış oldu, dolayısıyla da gitOps nedir sorusuna cevaben; Continious Delivery’i sağlamak için kullanılan bir yaklaşım/teknik diyebiliriz…Biraz daha detaylandırabilsek daha anlamlı hale geleceğini düşünüyorum…

GitOps, kubernetes cluster yönetimi ve ürün teslimatı yapabilmenin kurgulanmış bir tekniğidir…Git’i uygulamalar için tek bir merkezi kaynak olarak kullanan ve altyapı(infrastructure)’nın gerçek zamanlı durumunu git’de istenen duruma yakınsamasını sağlayan araçlarla beraber çalışır…

GitOps’un temel fikri, production ortamında şu anda istenen altyapının bildirim temelli açıklamalarını her zaman içeren bir Git reposuna ve production ortamının repoda açıklanan durumla eşleşmesini sağlamak için otomatik bir sürece sahip olmaktır.ArgoCD bu anlamda,Kubernetes için dekleratif bir GitOps CD(Continious Delivery) aracıdır.

Kubernetes ortamında ArgoCD kurulumuna değinebilmek gerekirse;

İlk olarak; localimdeki minikube istediğim configlerle ayağa kaldırıp,ArgoCD’yi kurmaya ve entegrasyonunu yapmaya başlayalım :

minikube start — cpus 4 — memory 8192

4CPU’luk ve 8 Memorylik bir resource ile minikube ayağa kaldırıyorum.

NOT: Localinizdeki Docker’da belirlediğiniz limitlerin dışında kalıyorsa minikube resource’u…Docker Desktop Ayarlarından uygun limitlere getirebilirsiniz

kubectl create namespace argocd

Kubernetes Cluster’ımızın içinde yeni bir namespace yarattık, ve ardından yarattığımız namespace içerisinde argocd’nin hazırladığı install.yaml’ı cluster’ımıza çekeceğiz

kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

Cluster içerisinde oluşturduğumuz namespace’e göz atalım:

Podların nasıl oluştuğunu ve status’lerini canlı olarak takip etmek isterseniz aşağıdaki komutu kullanabilirsiniz:

kubectl get pod -n argocd —- watch

Tanımladığımı argocd namespace’indeki tüm resource’ları görebilmek için,aşağıdaki komutla devam ediyoruz:

kubectl get all -n argocd

Sonucunda gördüğümüz gibi tüm podlarımız ayakta…

ArgoCD’ye localimizden kolayca erişebilmek için port-forwading yaparak devam ediyoruz…

localhost:8080'den ArgoCD’ye erişmek istediğimizde aşağıdaki gibi bir ekran karşılıyor olacaktır..:

ArgoCD’ye login olmak için username’mimiz admin ve ilk parolamız ise genellikle ilk başta auto-generated edilen ArgoCD Server’ındaki podumuzun ismi oluyor…Ayakta olan pod ismini bulabilmek için aşağıdaki komutla devam ediyoruz:

kubectl get pod -n argocd

İlk oluşturlan şifremizin pod ismi olduğunu bulduktan sonra, login olup ArgoCD Dashboard sayfasından devam ediyoruz(ArgoCD CLI kullanmak isteyenler brew install argocd ile CLI kendi localinde terminalden giriş yapabilirler… bkz: argocd login localhost:8080)

Git üzerinde bulunan uygulamamızı ArgoCD’ye eklemek için sol üstte bulunan +NEW APP butonuna tıklıyoruz ve açılan pencerede repository’i url’ni ve uygulama path’ini veriyoruz.

ArgoCD’nin oluşturduğu git üzerindeki demoyu kullanmak istedim…Configleri tamamladıktan sonra create butonuna tıklıyoruz ve senkronize olması sync butonuna tıkladıktan sonra bir kaç dakika senkronize olması için bekliyoruz…

Senkronize olması için en az bir adet resource’u seçmeyi unutmayın…

Ve finalde Kubernetes üzerinde çalışan projemizi ArgoCD entegrasyonunu tamamlamış olduk.

Keyifli okumalar

Arda Batuhan Demir

--

--

Arda Batuhan Demir
Arda Batuhan Demir

Written by Arda Batuhan Demir

5x AWS Cert* | Senior DevOps Engineer | Cloud Architect | AWS Community Builder

No responses yet