Ubuntu 20.04 & Docker & Kubernetes & Pipeline

Merhabalar,

Bu yazımda Jenkins ne olduğunun, Jenkinsfile ve Jenkins kurulumunlarını inceliycez.

jenkins

Jenkins: Jenkins, Sürekli Entegrasyon (CI: Continuous Integration) yöntemi için kullanılan java ile yazılmış açık kaynak kodlu bir otomasyon sunucusudur. Jenkins, belirli bir sunucuda ve portta çalışır, belirlenen kaynaktan projeye ulaşır ve istenen işlemleri gerçekleştirir.

  • Continuous Integration(Sürekli Entegrasyon): Kod üzerinde yapılan değişiklik sonrasında sistemin çalışır durumda olduğunu, yapılan değişikliğin sorunlara yol açmadığını tespit etmek için kullanılan davranıştır.
  • Continuous Delivery(Sürekli Teslimat): Başarılı olan bir yapıyı, yani CI sürecinden geçtikten sonra build alınarak deploy etmemize için hazır olan aşamadır.

Node: Jenkins çalıştığı sunucudur.

Jenkinsfile: Jenkins pipeline tanımını içeren dosyadır.

Pipeline: İşlerin ardışık bir sırada yapılması, bir işlemin çıktısının sonraki gelen işlemin girdisi olması olarak işlenmesidir.

Stage: Pipeline içerisinde yer alan fazları ifade eder. Örneğin standart bir yazılım projesinde build -> test -> deploy adımlarından her birisi bir fazı ifade eder.

Step: Stage içerisinde yer alan adımları ifade eder.

Şimdi de Jenkins kurulumuna başlayalım. ilk olarak ubuntu 20.04 üzerine kurulum ile başlayalım. Biliyoruz ki jenkins java ile geliştirilmiştir, bu yüzden jenkins kurulumu yapacağımız sunucuda java yüklü olması gerekmektedir. Eğer yüklü değil ise ubuntu aşağıdaki komutlar ile yükleyebilirsiniz.

sudo apt-get update && sudo apt-get upgradesudo apt-get install openjdk-11-jdksudo apt-get install openjdk-11-jreexport JAVA_HOME=/usr/local/jdk-11.0.2export PATH=$PATH:$JAVA_HOME/bin
java version

Javayı kurulumu gerçekleştiğine göre şimdi de jenkins kurulumuna başlayalım. Bunun terminalden çalıştırcağımız komut,

wget -q -O — https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -sudo sh -c ‘echo deb https://pkg.jenkins.io/debian-stable binary/> \ /etc/apt/sources.list.d/jenkins.list’sudo apt-get updatesudo apt-get install jenkins

Isterseniz ilgili linkten istediğiniz işletim sistemine göre indirip kurulum yapabilirsiniz.

Komutları çalıştırdıktan sonra, tarayıcıdan bilgisayarin_ip_adresi:port_numarası girdiğimizde

ip_adresi -> 192.168.1.28port_numarası-> 8080

ilgili path jenkins şifremizi alalım. Bunun için,

Default pluginleri yükleyelim. Bunun için (Isntall suggested plugins) seçelim.

Önerilen pluginler ile yüklenmeye başlar.

Username ve password belirleyerek bir sonraki adıma geçiyoruz. Burada kullanıcı adı ve şifre oluşturalım. İlerde github ve gitlab için webhook bağlantısı yaptığımızda gerekli olacaktır.

Başlangıç url belirliyoruz.

“Start using jenkins” diyerek jenkisi çalışmasını sağlıyoruz.

Kurulum başarılı ile gerçekleşmiştir. Ubuntu üzerinde kurulu jenkins kaldırmak için kullanacağımız komutlar,

sudo apt-get remove jenkinssudo apt-get remove — auto-remove jenkinssudo apt-get purge jenkinssudo apt-get purge — auto-remove jenkins

Şimdide jenkins docker ile kurulum gerçekleştirelim. Eğer sistemizde docker kurulu değil ise diğer yazımdan sisteminize docker kurulumunu gerçekleştirebilirsiniz.

docker-compose ile jenkins ayağa kaldırcaz. Bunun için yaml bakacak olursak.

docker-compose up -d 

Komutu ile jenkins ayağa kaldıralım.

Şimide giriş password alalım. Bunun için

docker-compose psdocker-compose exec servise_name bashcat /var/jenkins_home/secrets/initialAdminPassword

Tarayıcıdan ip_adresi:port_numarası ile gittiğimizde,

İlgili password yapıştırıp continue ile devam edebilirisiniz. Diğer aşamalar yukarıda ubuntu kurulumda yaptığımız aşamalarla aynıdır.

Son olarak da kubernetes ile jenkins kurulu gerçekleştirelim. Minikube clusterımızda kurulumu gerçekleştircez. Eğer sisteminizde minikube kurulu değil ise diğer yazımdan kurulumunu gerçekleştirebilirsiniz.

Minikube aktifleştirmek için,

minikube start — memory 8000 — cpus 4
kubectl create ns jenkins-k8skubeclt get ns
kubectl apply -f jenkins.yamlkubectl get svc -n jenkins-k8skubectl get pv -n jenkins-k8skubectl get pvc -n jenkins-k8skubectl get pods -n jenkins-k8s

Şimdi de tarayıcıdan ulaşmak için,

minikube service list

“192.168.49.2:32584” gittiğimizde,

Administrator password almak için pod’a bağlanalım. Bunun için,

kubectl exec -it pod_name -n namespace_name -- bashcat /var/jenkins_home/secrets/initialAdminPassword

Password alıp yapıştırdığınızda jenkins giriş yapabilirsiniz.

Son olarak da basit bir pipeline yapalım. Bunun için jenkins dashboard

  • New Item
  • Item name ve pipeline seçelim.
  • Ok
  • Pipeline
  • Apply
  • Save
  • Build Now
  • Console Output

Bu yazımızın da sonuna gelmiş bulunmaktayız. Araştırmalarım ve sektörde karşılaştığım senaryolar üzerine yazılarımı yazmaya devam edeceğim. Umarım faydalı bir yazı olmuştur. Diğer yazımda jenkins üzerinde spring boot uygulama pipeline inceliycez. Yazımı okuduğunuz için teşekkürler.

Software Development Expert & DevOps Engineer

Medium independent DevOps publication. Join thousands of aspiring developers and DevOps enthusiasts