Kubernetes ile Jenkins Kurulumu

Fatih Kelesoglu
lTunes Tribe
Published in
7 min readJan 4, 2022

Merhaba, bu makalenin konusu Kubernetes ile Jenkins kurulumu olacaktır. Bu yüzden öncelikle kullanacağımız makinamız üzerinde sırasıyla Docker, Homebrew, Kubectl, Minikube kurulumlarını yapıp, ortamımızı hazır hale getirdikten sonra Kubernetes ile Jenkins kurulumunu tamamlayacağız.

Daha önceki “Docker ile Jenkins Kurulumu” hakkında yazdığım makalemde Docker ve Jenkins hakkında kısa bilgiler paylaşmıştım, bu makale de ise yeni duyacağımız Kubernetes, Homebrew, Kubectl ve Minikube hakkında kısa ön bilgiler vermek istiyorum.

Kubernetes Nedir ?

Başlangıçta Google tarafından GO dilinde geliştirilmiş daha sonrasında Cloud Native Computing Foundation’a bağışlanan bir teknolojidir.Kubernetes, yazılım dağıtımını, ölçeklendirmeyi ve yönetimini otomatikleştirmek için açık kaynaklı bir kapsayıcı düzenleme sistemidir. Kubernetes container runtime olarak Docker, containerd ve CRI-O ile çalışır.Kubernetes master ve worker node komponentlerinden oluşur.

Kısacası Kubernetes ; Kubernetes (k8s) container mimarisindeki uygulamaların devreye alınmasını, ölçeklenmesini ve izlenmesini otomatikleştiren bir açık kaynak çözümüdür.k8s bir konteyner kümeleme (container cluster) aracıdır.

Homebrew Nedir ?

Homebrew, Apple’ın macOS ve Linux işletim sistemlerine yazılım kurulumunu kolaylaştıran ücretsiz ve açık kaynaklı bir yazılım paketi yönetim sistemidir.Homebrew ile bazı paketlerin yüklenmesini, güncellenmesini, kaldırılmasını sağlayabiliriz. Aslında işletim sistemimizde var olan yazılımların sürüm kontrollerini sağlamamıza yardımcı olacaktır.

Kısacası Homebrew ; macOS veya Linux için eksik paket yöneticisidir.

Kubectl Nedir ?

Kubernetes komut satırı aracı kubectl, Kubernetes kümelerinde komut çalıştırmanıza olanak tanır. Uygulamaları dağıtmak, küme kaynaklarını incelemek, yönetmek ve günlükleri görüntülemek için kubectl’i kullanabiliriz.Kubectl aracı bağlanacağı k8s cluster bilgilerine config dosyaları aracılığıyla erişir.

Kısacası Kubectl ; Kubernetes cluster ortamında komutları çalıştırmamıza izin veren bir komut satırı arabirimidir.

Minikube Nedir ?

Kubernetes clusterlarımızı oluşturmak ve yönetmek için birçok yöntem mevcuttur.Biz test ortamında çalışacağımız için makalede anlatılan işlemleri minikube sayesinde yapacağız.Diğer ortamlarda kullanabileceğimiz araçları ekstra bilgi olarak aşağıda paylaşıyorum.

Test ve Development Ortamları İçin : Minikube ve Docker

Production Ortamlar İçin : Kubeadm , RKE , KubeSpray v.b

Cloud Providers Ortamlar İçin : Azure Kubernetes Service (AKS) , Amazon Elastic Kubernetes Service (EKS) ve Google Kubernetes Engine (GKE) v.b

Kısacası Minikube ; Kubernetes üzerinde testlerimizi ve geliştirmelerimizi yapmak için kendi local ortamımızda kullandığımız mini Kubernetes kümesidir.Minikube, Windows, macOS ve Linux işletim sistemlerinde çalışabilir.

Docker Nasıl Kurulur ?

Ben bu işlemleri popüler bir Linux dağıtımı olan Ubuntu 20.04 işletim sistemi kurduğum bir sunucu üzerinde gerçekleştireceğim.

Öncelikle sırasıyla aşağıdaki adımları takip ederek sunucumuz üzerine Docker kurulumu yapmamız gerekiyor.

  • sudo apt update komutu ile paket güncellemesi yapıyoruz.
  • sudo apt-get install apt-transport-https ca-certificates curl software-properties-common komutu ile bağımlılıkları indiriyoruz.
  • sudo apt-get install docker-ce komutu ile Docker kurulumunu yapıyoruz.
  • docker — version komutu ile Docker’ın sorunsuz bir şekilde kurulduğunu kontrol ediyoruz ve Docker kurulumu aşamalarını tamamlamış oluyoruz.

Homebrew Nasıl Kurulur ?

Test ortamında çalıştığımız ve Homebrew’in kullanışlı olduğunu düşündüğümden dolayı bizler bu makalede kubectl ve minikube kurmak için Homebrew paket yöneticisinden yararlanacağız.Tabiki kubectl ve minikube kurulumu için birden fazla yöntem mevcuttur ve siz istediğiniz şekilde kurulumlarını yapabilirsiniz.

NOT : Windows ortamı kullanıyorsanız Homebrew yerine farklı bir kurulum yöntemi kullanabilirsiniz.

Öncelikle sırasıyla aşağıdaki adımları takip ederek sunucumuz üzerine Homebrew, kubectl ve minikube kurumlarını tamamlayacağız.

  • sudo apt update komutu ile paket güncellemesi yapıyoruz.
  • sudo apt-get install build-essential komutu ile devam ediyoruz.
  • sudo apt install git -y komutu ile git kurulumu yapıyoruz.
  • eval “$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)” path’imize Homebrew’i ekliyoruz ve brew komutu ile Homebrew’in sorunsuz bir şekilde kurulduğunu kontrol ediyoruz.Brew komutundan sonra aşağıdaki gibi bir çıktı alıyorsanız kurulum tamamlanmıştır.

Kubectl ve Minikube Nasıl Kurulur ?

Homebrew kurulumunu tamamladıktan sonra Kubectl ve Minikube kurulumu oldukça basit bir şekilde olacaktır.

Öncelikle aşağıdaki komutlar ile kubectl ve minikube kurumlarını tamamlayacağız.

  • brew install kubectl komutu ile kubectl kurulumu yapıyoruz.
  • brew install minikube komutu ile minikube kurulumu yapıyoruz.

Son olarak kubectl version ve minikube version komutları ile kontrol ediyoruz ve kurulum aşamalarını tamamlamış oluyoruz.

minikube start ve minikube status komutları ile k8s clusterınızı ayağa kaldırıp durumunu kontrol edebilirsiniz, çalışmanız bittiğinde ise minikube delete komutu ile kaldırabilirsiniz.

Kubernetes ile Jenkins Nasıl Kurulur ?

Kubernetes’in bildirime dayalı bir API’si vardır ve istediğimiz durumu bir YAML veya JSON dosyası kullanarak iletebiliriz.Bu makalede Jenkins’i dağıtmak için bir YAML dosyası kullanacağız.

Ortamımızı Kubernetes kullanımı için hazır hale getirdikten sonra aşağıdaki adımları takip ederek Kubernetes ile Jenkins kurulumuna devam ediyoruz.

  • kubectl create namespace jenkins komutu ile kendimize jenkins isminde bir namespace oluşturuyoruz.
  • nano jenkins.yaml diyerek yeni bir dosya oluşturuyoruz.Boş halde gelen dosyanın içerisine Jenkins ile alakalı yapılandırma tanımlamalarımızı ekliyoruz ve kaydedip çıkıyoruz.
  • kubectl create -f jenkins.yaml — namespace jenkins komutu ile Jenkins dağıtımını yarattığımız jenkins namespace’nde oluşturuyoruz.
  • kubectl get pods -n jenkins komutu ile bu namespace’de oluşan podumuzu listeliyoruz ve çalışır durumda olduğunu görüyoruz.

Podumuz çalıştığında, onu bir service kullanarak açığa çıkarmamız gerekir.Bu makale de NodePort hizmet türünü kullanacağız.

  • nano jenkins-service.yaml diyerek yeni bir dosya oluşturuyoruz.Boş halde gelen dosyanın içerisine NodePort servis obje tipimize ait tanımlamaları yapıyoruz ve kaydedip çıkıyoruz.
  • kubectl create -f jenkins-service.yaml — namespace jenkins komutu ile NodePort hizmetini aynı namespace’de oluşturuyoruz.
  • kubectl get services — namespace jenkins komutu ile NodePort hizmetinin çalıştığını kontrol ediyoruz.

Bu işlemlerden sonra Jenkins kullanıcı arayüzüne erişim sağlayıp kurulum adımlarını tamamlamamız gerekicek.

  • kubectl get nodes -o wide komutu ile node ip bilgilerimizi öğreniyoruz.
  • kubectl get pods -n jenkins podumuzu listeliyoruz ve podumuzun ismini öğreniyoruz.
  • kubectl logs jenkins-794699f9bc-d9cp7 -n jenkins komutu ile podumuzun loglarına erişiyoruz.

NOT : Sizin podunuzun ismi farklı olacaktır.

Karşımıza gelen loglarda Jenkins kurulumu için ihtiyacımız olacak parolayı buluyoruz ve kopyalıyoruz.

Bundan sonraki işlemler son olarak yapmamız gereken Jenkins arayüz ile alakalı işlemler olacak.

İlk olarak node_ip_adresi:30000 linkine gidiyoruz ve bizi Jenkins arayüzü karşılıyor.Podumuzun loglarından aldığımız parolayı burada kullanıyoruz.

Karşımıza çıkan ekranda “Install Suggested Plugins” seçeneğini seçerek devam ediyoruz.

Daha sonrasında kullanıcı adı, şifre ve e-posta gibi bilgilerimizi girerek bir admin hesabı oluşturuyoruz.

Son olarak gördüğünüz gibi Jenkins’e erişim sağladık ve bizi Jenkins’e Hoşgeldiniz ekranı karşıladı.

Uzun süren kurulum aşamalarımızın sonucunda önce Linux üzerinde Docker kurulumu yaptık, daha sonra adımlarımıza Homebrew kurulumu ile devam ettik.Homebrew sayesinde kubectl ve minikube kurulumlarını tamamladık.Ortamımızı Kubernetes için hazır hale getirdikten sonra minikube sayesinde single node olarak k8s Jenkins clusterımızı oluşturduk ve Jenkins’e erişim sağladık.Bir sonraki makalemizde görüşmek üzere :)

--

--