Giriş
Kubernetes büyük uygulamaları dağıtmak için bir standart haline geldi. Geliştiricilerin önemli avantajlar elde etmesine yardımcı olur ve geleneksel sunucu barındırmada bulunmayan özellikler sunar. Kubernetes, altyapı zahmeti olmadan yatay ölçeklendirmeye olanak tanır. Dahası, uygulama büyüdükçe altyapıyı edinme ve sürdürme maliyetini azaltır.
Ancak, Kubernetes üzerinde uygulamaları yönetmek karmaşık da olabilir ve gelişmiş beceriler gerektirir. Kubernetes ve Sürekli Entegrasyon ve Sürekli Dağıtım sürecini (CI/CD) kullanarak uygulamaları dağıtmak, soyutlama sağlayarak bu karmaşık sürecin üstesinden gelinmesine yardımcı olur. GitOps soyutlama sağlamaya yardımcı olabilecek araçlardan biridir.
Bu öğreticide, Argo CD'yi Kubernetes üzerinde uygulamaları sürekli olarak entegre etmek ve dağıtmak için nasıl kullanacağımızı göstereceğiz. Depoya herhangi bir değişiklik gönderildiğinde, bu değişiklik hedef kümede dağıtılır. Argo CD ayrıca tüm yazılım geliştirme yaşam döngüsüyle entegre olarak sürüm kontrolleri, yapılandırmalar ve uygulama ortamları sağlar. Kubernetes için Helm gibi paket yöneticileriniz varsa veya deponuz BitBucket veya GitLab üzerinde barındırılıyorsa, Argo CD tüm bu platformlarla da sorunsuz bir şekilde entegre olabilir.
Gereksinimler
Bu öğreticiyi tamamlamak için şunlara sahip olmalısınız:
-
Makinenizde SSH anahtarları. Linux/MacOS/BSD üzerinde çalışan bir SSH anahtar çiftiniz yoksa, öğreticimizi takip ederek bir tane oluşturabilirsiniz: SSH Genel Bakış – SSH Sunucuları, İstemcileri ve Anahtarları.
-
Ayrıca çalışan bir Kubernetes kümesine ihtiyacınız olacak. Ek olarak, makinenizde kubectl çalışıyor olmalıdır. Bir Kubernetes kümeniz yoksa, şu öğreticiyi takip edebilirsiniz: Ubuntu 18.04 üzerinde Kubeadm Kullanarak Kubernetes Kümesi Nasıl Oluşturulur.
-
Kubernetes kavramları hakkında temel bir anlayışa sahip olmalısınız. Kubernetes hakkında daha fazla bilgi edinmek istiyorsanız, şu öğreticiyi takip edebilirsiniz: Kubernetes aracının temellerini tanıma.
Adım 1 – Argo CD Kurulumu
Argo CD'yi kurabilmemiz için, kubectl ile çalışan bir Kubernetes ortamına sahip olmamız gerekir. Bunu aşağıdaki komutu çalıştırarak test edebilirsiniz:
|
1 |
kubectl get nodes |

En az bir Kubernetes düğümünün Ready durumunda çalıştığını görmelisiniz. Kullanılabilir bir düğüm yoksa Kubernetes kurulumunuzu tekrar kontrol etmelisiniz. Sırada, Kubernetes kurulumumuz için ayrı bir ad alanı (namespace) oluşturacağız. Buna argocd diyelim. Argo CD ile ilgili hizmeti bu ad alanında tutacağız:
|
1 |
kubectl create namespace argocd |
Bundan sonra, aşağıdaki komutu çalıştırarak yukarıda yeni oluşturulan ad alanına Argo CD betiklerini yükleyin:
|
1 |
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml |

Kubernetes pod'larının durumunu kontrol etmek için aşağıdaki komutu çalıştırın:
|
1 |
watch kubectl get pods -n argocd |
Aşağıdaki gibi bir sonuç alacaksınız:

Burada Argo CD kurulumunu başarıyla tamamladınız. watch arayüzünden çıkmak için Ctrl + C tuşlarına basabilirsiniz. Bu Kubernetes kümesindeki hizmetlere erişmek için bağlantı noktalarını yönlendirmemiz gerekecek. Bir sonraki adımda bunu nasıl yapacağınızı göstereceğiz.
Adım 2 – Argo CD'ye Erişmek İçin Bağlantı Noktalarını Yönlendirme
Kubernetes, uygulamanızı kendi seçtiği herhangi bir bağlantı noktasına dağıtabilir. Bu nedenle, yerel makineden erişebilmek için Kubernetes uygulamasının bağlantı noktalarını yönlendirmek gerekir. Argo CD, argocd-server adında bir hizmet sunar ve bu hizmet 443 portunu kullanır. Port 443 HTTPS ve HTTP hizmetleri için varsayılan porttur. Kubernetes portlarını istediğiniz bir porta yönlendirebilirsiniz. Aşağıdaki örneğimizde portu 8080 portuna yönlendirdik. Portları yönlendirmek için terminalde aşağıdaki komutu çalıştırın:
|
1 |
kubectl port-forward svc/argocd-server -n argocd 8080:443 |
Portu yönlendirdikten sonra, diğer servislerin erişememesi için bloke edilecektir. Kesintisiz erişim sağlamak için yukarıda belirtilen komutu her zaman yeni bir terminalde çalıştırmanız önerilir. Bitirdiğinizde, Ctrl+C tuşlarına basarak port yönlendirme işleminden çıkabilirsiniz.
Portu yönlendirdikten sonra, localhost:8080 adresine giderek Argo CD'ye ulaşabilirsiniz. Bir sonraki adımda komut satırından alabileceğiniz kimlik bilgileri istenecektir.
Adım 3 – Argo CD'yi Komut Satırından Yönetin
Argo CD kurulumunu yönetmek için Argo CD komut satırını kurmamız gerekiyor. Argo CD'yi kurmak için önerilen yöntem, Homebrew gibi bir paket yöneticisi kullanmaktır. Homebrew, macOS ve Linux üzerinde kurulum yapmak için popüler bir paket yöneticisi aracıdır. Aşağıdaki komutu kullanarak Homebrew'u kurabilirsiniz:
|
1 |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
Makinenizde brew kurulu olmalıdır. Giriş için bir şifre istemi gelebilir. Aşağıdaki komutu çalıştırarak bunu kurabilirsiniz:
|
1 |
brew install argocd |
Yukarıdaki kurulumdan sonra argocd komutunu elde edeceksiniz. kubectl komutunu kullanarak yönetici şifresini almamız gerekecek. Kurulum sırasında otomatik olarak oluşturulmuştur. Şifreyi almak için gereken komut aşağıdadır:
|
1 |
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo |
Argo CD'yi kurduğunuza göre, aşağıdaki argocd login komutunu kullanarak giriş yapabilirsiniz:
|
1 |
argocd login localhost:8080 |
Komut satırını kullanırken uygulamayı dağıtmak için giriş yapmanız gerekecektir:

Bir güvenlik uyarısı alabilirsiniz. Bu durumda, devam etmek için y tuşuna basın. Birçok kullanıcı giriş yaptıktan sonra şifreyi değiştirmek isteyebilir. Eğer öyleyse, şifreyi değiştirmek için argocd account update-password komutunu çalıştırın. Artık tamamen işlevsel bir Argo CD yapılandırmasına sahibiz.
Son olarak, kurulu Argo CD'yi kullanarak Kubernetes kümesinde bir uygulama dağıtacağız.
Adım 4 – Birden Fazla Küme Kullanın
Uygulamanızın kurulumuna devam etmeden önce, uygulamayı dağıtmak istediğiniz hedef makineyi bilmeniz gerekir. Birçok senaryoda, Argo CD ve dağıtılan uygulama aynı küme üzerinde çalışabilir. Bu, Argo CD'nin varsayılan davranışıdır ancak bu bir sınırlama değildir. Uygulamayı diğer hedef makinelere dağıtmak istiyorsanız, öncelikle makinenizde kubectl config komutunu çalıştırın:
|
1 |
kubectl config get-contexts -o name |
İki küme elde ettiğinizi varsayalım: test-deploy-cluster ve test-target-cluster. Şimdi eğer test-deploy-cluster Argo CD'nizin bulunduğu yerse ve siz test-target-cluster üzerine dağıtım yapmak istiyorsanız, aşağıdaki komutu çalıştırın:
|
1 |
argocd cluster add target-k8s |
Yukarıdaki komut, Argo CD'ye ek küme ayrıntılarını ekleyecektir. Ayrıca Argo CD hedef kümesinde servislerin dağıtılmasına da olanak tanıyacaktır.
Adım 5 – Örnek Bir Uygulama Dağıtın
Sonunda Kubernetes kümesinde uygulamaları dağıtma zamanı geldi. Argo CD tarafından sağlanan örnek uygulamaları kullanacağız. Ayrıca helm-guestbook uygulamasını, Helm grafiklerini kullanarak dağıtacağız.
Uygulamayı kurmak için argo app create komutunu kullanacağız. Git deposunu, helm-guestbook uygulamasını belirteceğiz ve varsayılan hedefinizi ile ad alanınızı geçeceğiz:
|
1 |
argocd app create helm-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path helm-guestbook --dest-server https://kubernetes.default.svc --dest-namespace default |
Yeni oluşturulan uygulamanın durumunu kontrol etmek için çalıştıracağınız komut: argocd app get:
|
1 |
argocd app get helm-guestbook |
Eğer OutOfSync durumunu görürseniz şaşırmayın. Şimdiye kadar Helm chart'ını indirdik ve Argo CD için buna bir giriş noktası oluşturduk. Ancak Kubernetes tarafında buna ayrılmış bir kaynak yok. Bu uygulamayı senkronize etmek için aşağıdaki komutu çalıştırın:
|
1 |
argocd app sync helm-guestbook |

GitOps ile çalışırken, uygulamayı her zaman upstream (kaynak) ile senkronize etmek gerekir. Bu nedenle, depoda her değişiklik olduğunda, Argo CD uygulamayı dağıtır.
Uygulamayı Argo CD komut satırını kullanarak dağıttık. Aynı sonucu Argo CD web arayüzünü kullanarak da elde edebilirsiniz. Web arayüzü, uygulamanın durumunu ve çalışmasını kontrol etmek istiyorsanız oldukça yararlıdır. Web arayüzünü açmak için localhost:8080:

Kurulumu doğrulamak için uygulamayı tarayıcıda açacağız. Bizim helm-guestbook uygulamamız 80 portunda çalışır. Eğer 80 portunu kullanan başka bir uygulamanız varsa, diğer uygulamaların kesintiye uğramaması için portu yönlendirebilirsiniz:
|
1 |
kubectl port-forward svc/helm-guestbook 9090:80 |
Son olarak, uygulamanızın çalıştığını görmek için web tarayıcınızda localhost:9090 adresini açın:

Artık bir geliştirici GitHub uzak deposuna herhangi bir kod gönderdiğinde, ArgoCD bunu yakalayacak ve yansıtacaktır. ArgoCD dağıtımlarınız buna göre güncellenerek kesintisiz kullanılabilirlik sağlanacaktır.
Sonuç
Bu eğitimde, Argo CD kullanarak Kubernetes üzerinde uygulamaları nasıl kuracağınızı ve dağıtacağınızı gösterdik. Kubernetes üzerindeki dağıtımlarınızın sürdürülebilir olduğundan emin olmak önemlidir. GitOps bu konuda size çok yardımcı olabilir.
Kubernetes artık bulutta dağıtım standardıdır. CloudSigma'nın göz atabileceğiniz harika Kubernetes eğitimleri bulunmaktadır:
- Kubernetes DNS Servisi: Yeni Başlayanlar İçin Bir Kılavuz
- Helm ile Kubernetes Üzerinde MySQL ile WordPress Kurulumu
- Kubernetes Üzerinde Jenkins Kurulumu
- CloudSigma PaaS'ı Keşfetmek: Genel IP Aracılığıyla Kubernetes Uygulamasına Nasıl Erişilir
Keyifli Çalışmalar!
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.