Bu proje, Kubernetes kümelerini (clusters) kurma, yönetme ve Sürekli Entegrasyon (CI/CD) mekanizmalarını anlama üzerine odaklanan bir Sistem Yönetimi alıştırmasıdır. Proje kapsamında K3s, K3d, Vagrant, Docker ve Argo CD teknolojileri kullanılmaktadır.
Proje üç zorunlu bölüm ve bir bonus bölümden oluşmaktadır:
- Part 1 (p1): Vagrant ve K3s ile iki sanal makine (Server & Worker) kurulumu.
- Part 2 (p2): K3s, Ingress ve üç basit web uygulamasının tek bir VM üzerinde orkestrasyonu.
- Part 3 (p3): K3d ve Argo CD kullanarak tamamen Docker üzerinde çalışan bir CI/CD pipeline'ı oluşturma.
Bu projeyi çalıştırmak için aşağıdaki araçların bilgisayarınızda yüklü olması gerekmektedir:
- VirtualBox (Part 1 & 2 için)
- Vagrant (Part 1 & 2 için)
- Docker (Part 3 için)
- K3d (Part 3 için)
- kubectl (Kümeleri yönetmek için)
Bu bölümde, Vagrant kullanılarak iki sanal makine ayağa kaldırılır ve K3s ile bir Kubernetes kümesi oluşturulur.
- Server (Master):
192.168.56.110 - Server Worker (Agent):
192.168.56.111
p1dizinine gidin:cd p1- Sanal makineleri başlatın:
vagrant up
- Makineler ayağa kalktıktan sonra Server makinesine bağlanarak node'ların durumunu kontrol edebilirsiniz:
vagrant ssh <kullanici_adi>S # Örn: batuhantanirS kubectl get nodes -o wide
Bu bölümde tek bir sanal makine (192.168.56.110) üzerinde K3s sunucusu çalıştırılır. Ingress kullanılarak trafiğin ilgili uygulamalara (app1, app2, app3) yönlendirilmesi sağlanır.
p2dizinine gidin:cd p2- Sanal makineyi başlatın:
vagrant up
- Host Dosyası Ayarı:
Uygulamalara erişebilmek için kendi bilgisayarınızın (host)
/etc/hostsdosyasına aşağıdaki satırı eklemelisiniz:192.168.56.110 app1.com app2.com app3.com - Test:
Tarayıcınızdan veya terminalden uygulamaları test edebilirsiniz:
curl -H "Host: app1.com" 192.168.56.110 curl -H "Host: app2.com" 192.168.56.110
Bu bölümde Vagrant kullanılmaz. Bunun yerine K3d kullanılarak Docker üzerinde çalışan bir Kubernetes kümesi oluşturulur. Argo CD kurularak, bir GitHub deposundaki değişikliklerin otomatik olarak uygulamaya (sync) yansıması sağlanır.
- Namespaces:
argocd,dev - Repository: Uygulama konfigürasyonlarını içeren GitHub deposu Argo CD'ye bağlanır.
-
p3dizinine gidin:cd p3 -
Kurulum scriptini çalıştırın (Script ismi projenizdeki dosyaya göre değişebilir, genellikle
install.shveyasetup.sh):./scripts/install.sh
-
Argo CD Arayüzüne Erişim: Port yönlendirme (port-forward) işlemi yapıldıktan sonra tarayıcıdan Argo CD arayüzüne erişebilirsiniz:
- URL:
http://localhost:8080(Varsayılan port yapılandırmanıza göre değişebilir) - Kullanıcı adı:
admin - Şifre: (Script çıktısında veya secret içerisinde belirtilen şifre)
- URL:
-
Uygulama Güncelleme Testi: Bağlı olan GitHub reposundaki
deployment.yamldosyasında imaj sürümünü (örneğinv1'denv2'ye) güncelleyip pushladığınızda, Argo CD'nin bu değişikliği algılayıpdevnamespace'indeki podları güncellediğini görebilirsiniz.
- Vagrant makinelerini kapatmak için ilgili dizinde
vagrant halt, tamamen silmek içinvagrant destroykomutlarını kullanabilirsiniz. - Part 3 kısımı Docker üzerinde çalıştığı için Docker Desktop veya Docker Engine'in açık olduğundan emin olun.
- Projeyi değerlendirirken veya sunarken
kubectlvek3dkomutlarının çıktılarını göstermeniz beklenebilir.