paint-brush
AWS, K8S, Docker, Ansible, Git, Github, Apache Maven ve Jenkins ile CI/CD İşlem Hattı Oluşturmaile@zufarexplained
36,080 okumalar
36,080 okumalar

AWS, K8S, Docker, Ansible, Git, Github, Apache Maven ve Jenkins ile CI/CD İşlem Hattı Oluşturma

ile Zufar Sunagatov46m2023/09/07
Read on Terminal Reader
Read this story w/o Javascript

Çok uzun; Okumak

Zufar Sunagatov ile AWS, K8S, Docker, Ansible, Apache Maven, Git, Github ve Jenkins ile gelişmiş bir CI/CD işlem hattının nasıl oluşturulacağını öğrenin. Bu eğitimin sonunda, Github'daki projelerinizin herhangi birine uygulanabilecek, kullanıma hazır, modern bir CI/CD hattına sahip olacaksınız.
featured image - AWS, K8S, Docker, Ansible, Git, Github, Apache Maven ve Jenkins ile CI/CD İşlem Hattı Oluşturma
Zufar Sunagatov HackerNoon profile picture
0-item
1-item




Önceki makalemde mikro hizmetlerin büyüleyici dünyasına daldım - Mikro Hizmet Mimarisi Desenleri Bölüm 1: Ayrıştırma Desenleri . Bu, mikro hizmetler ve kalıpları hakkındaki kapsamlı makale serimin başlangıcıydı.


Mantıklı adım bu serinin 2. Bölümüyle devam etmek olsa da, araştırmak ve size anlatmak istediğim bir sonraki şeyin, bu mikro hizmetleri son kullanıcıya sorunsuz bir şekilde sunmanın hayati süreci olduğuna karar verdim.


İçeriğe Genel Bakış

  • Motivasyon
  • [Modül 1]: AWS EC2 Sanal Sunucu
  • [Modül 2]: Jenkins Sunucusu
  • [Modül 3]: Git ve Github
  • [Modül 4]: Apache Maven
  • [Modül 5]: Docker
  • [Modül 6]: Ansible
  • [Modül 7]: Kubernetes
  • Çözüm
  • yazar hakkında



Motivasyon

CI/CD, uygulama geliştirmenin farklı aşamalarına otomasyon eklenerek elde edilen, uygulamaları müşterilere sunmaya yönelik bir tekniktir. CI/CD'yi (Sürekli Entegrasyon ve Sürekli Dağıtım) kavramanın geliştiricilere, arka uç proje eserlerinin proje havuzunun sınırlarının ötesinde nasıl var olduğuna dair daha iyi bir anlayış kazandırabileceğine inanıyorum. Bu anlayış aynı zamanda geliştiricinin bakış açısında da temel bir değişim yaratabilir. Çalışmalarını yalnızca kod satırları olarak görmek yerine, projelerinin daha geniş bağlamını değerli bir ürün olarak benimsemeye başlayabilirler.


Bu makalede, pratik uygulama yoluyla CI/CD sürecinin gizemini açığa çıkarmayı amaçlıyoruz. Size, manuel olarak bir CI/CD işlem hattı oluşturacağınız, modül modüle ayırarak adım adım bir eğitim sunacağız. Bunu yapmak için AWS, Docker, Kubernetes, Ansible, Git, Apache Maven ve Jenkins gibi çağdaş DevOps araçlarının gücünden yararlanacağız. Öyleyse bu yolculuğa başlayalım!


[Modül 1]: AWS EC2 Sanal Sunucu

Bu modül, bir AWS EC2 Sanal Sunucu örneğinin oluşturulmasına ayrılmıştır. Bu makalenin bir parçası olarak Jenkins, Ansible ve Kubernetes için üç EC2 bulut sunucusu kuracaksınız. Şimdilik sonraki modüllere devam edebilir ve bu modülü "[module 2]: Jenkins", "[module 6]: Ansible" ve "[module 7]: Kubernetes" bölümlerinde tekrar ziyaret edebilirsiniz.


1. Adım: Bir AWS Hesabı oluşturun

https://aws.amazon.com adresine gidin.

AWS Hesabı Oluştur düğmesine tıklayın.


AWS ana web sayfasının "AWS Hesabı Oluştur" düğmesinin yer aldığı ekran görüntüsü


Hesap oluşturma web sayfasındaki talimatları izleyin.


2. Adım: AWS Hesabınızda Oturum Açın

https://console.aws.amazon.com/console/home adresine gidin. Oturum Aç düğmesini tıklayın.

AWS ana web sayfasının "Oturum Aç" düğmesini gösteren ekran görüntüsü


Bu web sayfasına gerekli tüm kimlik bilgilerini girin.


3. Adım: EC2 Sanal Sunucusunu Bulun

Arama kutusunda EC2'yi bulun.

Arama kutusu işaretçisini içeren AWS web sayfasının ekran görüntüsü


EC2 Hizmeti seçeneğine tıklayarak EC2 Sanal Sunucusunu seçin.

"EC2" AWS hizmeti işaretçisini içeren AWS web sayfasının ekran görüntüsü


Örneği Başlat düğmesini tıklayın.

"Örneği başlat" düğmesinin işaretçisini içeren AWS web sayfasının ekran görüntüsü


4. Adım: “Ad ve etiketler” bölümünü yapılandırın

“Ad ve etiketler” bölümüne gidin.

AWS web sayfasının "Ad ve etiketler" bölümünün işaretçisini içeren ekran görüntüsü


"Ad" bölümüne yeni bir AWS EC2 Sanal Sunucu örneği için bir ad girin.

AWS web sayfasının "Ad ve etiketler" bölümündeki "Ad" giriş kutusu işaretçisini içeren ekran görüntüsü


Ayrıca “Ek etiket ekle” seçeneğine tıklayarak sanal sunucunuz için ek etiketler ekleyebilirsiniz.


Adım 5: “Uygulama ve İşletim Sistemi Görüntüleri (Amazon Machine Image)” bölümünü yapılandırın


"Uygulama ve İşletim Sistemi Görüntüleri (Amazon Machine Image)" bölümüne gidin.

AWS web sayfasının "Uygulama ve İşletim Sistemi Görüntüleri (Amazon Machine Image)" bölümüne işaret eden ekran görüntüsü


Sanal sunucuyla ÜCRETSİZ oynamak için:

  1. Sanal sunucunuz için işletim sistemini seçin - Amazon Linux .
  2. Amazon Machine Image (AMI) bölümünde Ücretsiz kullanıma uygun etiketine sahip bir makine seçin.



"Uygulama ve İşletim Sistemi Görüntüleri (Amazon Machine Image)" bölümünde "İşletim Sistemi" ve "Makine türü" düğmelerinin işaretçisini içeren AWS web sayfasının ekran görüntüsü


6. Adım: “Örnek türü” bölümünü yapılandırın

“Örnek türü” bölümüne gidin.

AWS web sayfasının "Örnek türü" bölümü işaretçisini içeren ekran görüntüsü


Sanal sunucuyla ÜCRETSİZ oynamak için:

Bulut Sunucusu türü bölümünde Ücretsiz kullanıma uygun etiketine sahip bir tür seçin.

Benim için t2.micro (Aile: t2 1cCPU 1 GiB Bellek Mevcut nesil:true) .



"Örnek türü" bölümündeki "Örnek türü" açılır menüsü işaretçisini içeren AWS web sayfasının ekran görüntüsü


7. Adım: “Depolamayı yapılandırın” bölümünü yapılandırın

"Depolamayı yapılandır" bölümüne gidin.

AWS web sayfasının "Depolamayı yapılandır" bölümü işaretçisini içeren ekran görüntüsü


Sanal sunucuyla ÜCRETSİZ oynamak için:

Varsayılan ayarları değiştirmeyin. Ücretsiz kullanıma uygun müşteriler , 30 GB EBS Genel Amaçlı (SSD) veya Manyetik depolama alanına sahip olabilir.



AWS web sayfasının "Depolamayı yapılandır" bölümündeki olası depolama yapılandırmalarına işaret eden ekran görüntüsü


Adım 8: “Ağ ayarları” bölümünü yapılandırın

“Ağ ayarları” bölümüne gidin.

AWS web sayfasının "Ağ ayarları" bölümünün işaretçisini içeren ekran görüntüsü


Sanal sunucunuzun güvenliğini ayarlamanız gerekmektedir. Bunu yapmak için,

  1. “Güvenlik grubu oluştur” butonuna tıklayın.
  2. Yeni güvenlik grubunuzun adını “Güvenlik grubu adı” bölümüne ekleyin.
  3. “Açıklama” bölümüne yeni güvenlik grubunuzun açıklamasını ekleyin.

Varsayılan olarak sanal sunucunuza ( Tür - SSH, Protokol - TCP, Bağlantı Noktası - 22 ) üzerinden erişilebilir. Ek bağlantı türlerine ihtiyacınız varsa ek gelen güvenlik grubu kuralları ekleyerek bunları ekleyin.



AWS web sayfasının "Ağ ayarları" bölümündeki "Güvenlik grubu" işaretçisini içeren ekran görüntüsü


Adım 9: “Anahtar çifti (giriş)” bölümünü yapılandırın

“Anahtar çifti (Giriş)” bölümüne gidin.

AWS web sayfasının "Ket çifti (giriş)" bölümü işaretçisini içeren ekran görüntüsü


Henüz oluşturmadıysanız yeni bir anahtar çifti oluşturun.

AWS web sayfasının "Ket çifti (oturum açma)" bölümünde "Anahtar çifti adı", "Anahtar çifti türü", "Özel anahtar dosya biçimi" işaretçisini içeren ekran görüntüsü


Henüz “anahtar çifti” oluşturmadıysanız:

  1. “Yeni anahtar çifti oluştur” butonuna tıklayın.
  2. "Anahtar çifti adı" bölümünde yeni anahtar çiftinize bir ad verin.
  3. RSA veya ED25519 anahtar çifti türünü seçin. RSA türünü seçiyorum.
  4. Özel anahtar dosya biçimini seçin. .pem ve .ppk seçimi. .pem biçimini seçiyorum.
  5. “Anahtar çifti oluştur” düğmesine tıklayın.
  6. Özel anahtar dosyasını indirmenizi isteyen bir açılır pencere göreceksiniz. Kabul edin ve dosyayı bilgisayarınıza indirin.

Adım 10: EC2 Sanal Sunucu Örneğini Başlatın


“Örneği başlat” düğmesine tıklayarak EC2 Sanal Sunucu örneğini başlatın.

"Örneği Başlat" düğmesinin işaretçisini içeren AWS web sayfasının ekran görüntüsü


EC2 Sanal Sunucu bulut sunucusu oluşturma işlemi tamamlandıktan sonra aşağıdakileri göreceksiniz.


EC2 Sanal Sunucu bulut sunucusu oluşturma işleminin başarıyla tamamlandığını gösteren 'Başarı' bildirimini gösteren AWS web sayfasının ekran görüntüsü


Daha sonra “Tüm örnekleri görüntüle” butonunu tıklayarak “Instances” bölümüne gitmelisiniz.


EC2 bulut sunucusunu çalıştırma işaretçisini içeren AWS web sayfasının ekran görüntüsü

Artık AWS EC2 Sanal Sunucu örneğinizin çalıştığını görebilirsiniz.



[Modül 2]: Jenkins Sunucusu

Şimdi EC2 Virtual Server örneğinde JenkinsServer’ı yapılandıralım.

1. Adım: Bir AWS EC2 Sanal Sunucu örneği oluşturun

Jenkins'i çalıştırmak için sanal bir sunucuya ihtiyacınız var.

Bu adımı tamamlamak ve JenkinsServer adında bir EC2 sanal sunucu örneği oluşturmak için bu eğitimin [Modül 1]: AWS EC2 Sanal Sunucu bölümündeki talimatları izleyin.

Güvenlik grubu kurulumu eklemeyi unutmayın. Jenkins ve SSH'nin sırasıyla 8080 ve 22 numaralı bağlantı noktalarında çalışmasına olanak tanır.


EC2 Sanal Sunucu örneğinizi ayırt etmek için “JenkinsServer” adını kullanın.

Yeni bir "JenkinsServer" AWS EC2 bulut sunucusu için "CI_CD_Pipeline" güvenlik grubu ve "CI_CD_Pipeline_Key_Pair" oluşturun. Bunları makalenin ilerleyen kısımlarında yeniden kullanabilirsiniz.


2. Adım: Bir AWS EC2 Sanal Sunucu örneğine bağlanın

AWS Konsolu ana sayfasınaEC2 Yönetim Konsolu Kontrol PaneliBulut Sunucuları'na gidin.

Daha sonra JenkinsServer'ı seçmeli ve ardından “Bağlan” butonuna tıklamalısınız.

AWS "Örnekler" web sayfasının "Bağlan" düğmesini gösteren ekran görüntüsü


Daha sonra bu web sayfasını göreceksiniz. Tekrar “Bağlan” butonuna tıklamalısınız.

AWS "Örneğe Bağlan" web sayfasının "Bağlan" düğmesi işaretçisini içeren ekran görüntüsü


Artık EC2 sanal sunucu örneği çevrimiçi terminalini görebilirsiniz.

AWS EC2 Sanal Sunucu örneği çevrimiçi terminalinin ekran görüntüsü


3. Adım: Jenkins deposunu indirin

Artık Jenkins'i EC2 sanal sunucu örneğinize indirmeniz gerekiyor.

Şu talimatları izleyin:


  1. Jenkins indirme web sayfasına gidin.

  2. Kararlı (LTS) ve Normal sürümler (Haftalık) seçeneklerini görebilirsiniz. Red Hat/Fedora/Alma/Rocky/CentOS LTS seçeneğini seçin.


Bu web sayfasını göreceksiniz.

Jenkins indirme web sayfasının ekran görüntüsü


  1. Jenkins dosyalarını İnternet'teki Jenkins deposundan indirmek ve bunları EC2 sanal sunucu örneğinizde belirtilen konuma kaydetmek için "sudo get.." komutunu kopyalayın ve çalıştırın.
 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

Artık Jenkins indirildi.


4. Adım: Jenkins anahtarını içe aktarın

Jenkins kurulumunu tamamlamak için Jenkins anahtarını içe aktarmamız gerekiyor.

Jenkins anahtarını içe aktarmak için “sudo rpm..” komutunu kopyalayıp çalıştırmamız gerekiyor.


 sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

Bu şekilde "rpm" paket yöneticisi, yüklediğiniz Jenkins paketlerinin tam olarak Jenkins projesi tarafından yayınlanan paketler olduğunu ve bunların tahrif edilmediğini veya bozulmadığını doğrulayabilir.


Adım 5: Java'yı yükleyin

Jenkins'i çalıştırmak için EC2 sanal sunucu örneğimize Java yüklememiz gerekiyor.

Java'yı yüklemek için bu komutu kullanın.


 sudo amazon-linux-extras install java-openjdk11 -y


Bu komutu kullanarak Java'nın doğru şekilde yüklenip yüklenmediğini doğrulayın:

 java -version


Bunun gibi bir şey göreceksiniz.

JDK 11'in yüklü olduğu AWS EC2 Sanal Sunucu örneği çevrimiçi terminalinin ekran görüntüsü


Adım 6: Fontconfig'i yükleyin

Jenkins'i çalıştırmak için EC2 sanal sunucu örneğimize fontconfig yüklemeniz gerekir.

Bu komutu kullanın.

 sudo yum install fontconfig java-11-openjdk -y


Fontconfig, sistem genelinde yazı tipi yapılandırması, özelleştirme ve uygulama erişimi sağlamak için tasarlanmış bir kitaplıktır. Jenkins'in yazı tiplerini oluşturan özellikleri olması nedeniyle bu gereklidir.


Adım 7: Jenkins'i yükleyin

Önceki adımlarda, EC2 sanal sunucu örneğinizi belirli bir Jenkins deposunu kullanacak şekilde yapılandırdınız ve ardından bu depoyla ilişkili GPG anahtarını içe aktardınız. Şimdi Jenkins paketini bulmak için eklediğiniz Jenkins de dahil olmak üzere bildiği tüm depoları arayacak komutu çalıştırmanız gerekiyor. Jenkins paketini Jenkins deposunda bulduğunda indirip yükleyecektir.


Bu komutu çalıştıralım.

 sudo yum install jenkins -y


Adım 8: Jenkins'i başlatın

Bu komutu kullanarak Jenkins'i başlatabilirsiniz.

 sudo systemctl start jenkins


Jenkins'in çalıştığını kontrol etmek için bu komutu kullanın.

 sudo systemctl status jenkins


Çıktıyı aşağıdaki ekran görüntüsünde olduğu gibi göreceksiniz:

Jenkins'in yüklü olduğu AWS EC2 Sanal Sunucu örneği çevrimiçi terminalinin ekran görüntüsü


Jenkins artık çalışır durumda olmalı.

Adım 9: Jenkins'e erişin

Jenkins uygulamasına erişmek için herhangi bir web tarayıcısını açın ve EC2 bulut sunucunuzun genel IP adresini veya alan adını ve ardından 8080 numaralı bağlantı noktasını girin.


 http://<your-ec2-ip>:8080


Jenkins'e ilk kez eriştiğinizde otomatik olarak oluşturulan bir şifreyle kilitlenecektir.

AWS EC2 Sanal Sunucusunda yüklü olan ve Yönetici parolası işaretçisini içeren Jenkins'in ekran görüntüsü


Bu şifreyi aşağıdaki komutu kullanarak görüntülemeniz gerekmektedir.

 sudo cat /var/lib/jenkins/secrets/initialAdminPassword


Bu şifreyi kopyalayın, tarayıcınıza dönün, Yönetici şifresi alanına yapıştırın ve "Devam Et"e tıklayın.


Daha sonra bu web sayfasını görebileceksiniz.


AWS EC2 Sanal Sunucusunda yüklü olan Jenkins'in "Jenkins'i Özelleştir" web sayfası işaretçisini içeren ekran görüntüsü


Artık Jenkins Sunucunuzu kullanabilirsiniz.


Adım 10: Yeni Jenkins işlem hattı oluşturun

Artık Jenkins iyi çalıştığına göre Jenkins işlem hattını oluşturmaya başlayabilirsiniz. Jenkins işlem hattını oluşturmak için yeni bir "Serbest Stil projesi" oluşturmanız gerekir. Yeni bir "Serbest Stil projesi" oluşturmak için Jenkins kontrol paneline gitmeniz ve "Yeni Öğe" düğmesini tıklamanız gerekir.


"Yeni Öğe" düğmesinin işaretçisini içeren Jenkins Dashboard web sayfasının ekran görüntüsü


Github "Serbest Stil Projesi" adını girin ("boru hattı" adı bundan sonra kullanılacaktır) ve ardından "Tamam" düğmesine tıklayın.


Jenkins Yeni Öğe web sayfasının "Öğe adı" öğe kutusu işaretçisini içeren ekran görüntüsü


Daha sonra boru hattının Açıklamasını sağlayın.

"Açıklama" giriş kutusu işaretçisini içeren Jenkins İş yapılandırması web sayfasının ekran görüntüsü


Daha sonra “Uygula” ve “Kaydet” butonuna tıklayın. Bundan sonra bu, bu eğitimde inşa edilecek boru hattının temelini oluşturduğunuz anlamına gelir.



[Modül 3]: Git ve Github

Artık Jenkins AWS EC2 Sanal Sunucu örneğinde çalıştığından Git'i işlem hattıyla yapılandırabilirsiniz.

Git, yazılım ekiplerinin kodda yapılan her değişikliği özel bir veritabanı türünde takip etmesine yardımcı olmak için tasarlanmış ücretsiz ve açık kaynaklı bir dağıtılmış sürüm kontrol sistemidir (VCS). Bir hata yapılırsa geliştiriciler, tüm ekip üyelerinin aksamasını en aza indirirken hatanın düzeltilmesine yardımcı olmak için zamanı geri çevirebilir ve kodun önceki sürümlerini karşılaştırabilir. VCS özellikle aşağıdakiler için faydalıdır: DevOps Ekiplerin geliştirme süresini azaltmalarına ve başarılı dağıtımları artırmalarına yardımcı oldukları için [1].

En popüler sürüm kontrol sistemi olan Git, projenizin Github deposundan en son kodu Jenkins'inizin kurulu olduğu EC2 sanal sunucu örneğinize çekmemize olanak tanır.


1. Adım: Git'i yükleyin

Git'i yüklemek için bu komutu kullanın.

 sudo yum install git -y


Şimdi bu komutu kullanarak Git'in çalıştığını doğrulayın.

 git --version

Git artık EC2 Sanal Sunucu örneğinde sorunsuz çalışıyor.


Adım 2: Jenkins kontrol panelini açın

Git, EC2 Sanal Sunucu örneğinde sorunsuz çalıştığı için artık Jenkins'i Git ile entegre edebiliriz.

Bu entegrasyonu başlatmak için Jenkins Github eklentisini kuralım.

Jenkins kontrol paneli bölümüne gidin.


Jenkins kontrol panelinin ekran görüntüsü


3. Adım: Jenkins Eklenti Yöneticisini açın

“Jenkins'i Yönet” düğmesine tıklayın ve ardından “Eklentileri Yönet” düğmesine tıklayın.

"Eklentileri Yönet" düğmesinin işaretçisini içeren Jenkins kontrol panelinin ekran görüntüsü


Adım 4: Github Jenkins eklentisini bulun

“Kullanılabilir eklentiler” düğmesine tıklayın.

Jenkins Plugin Manager web sayfasının "Kullanılabilir eklentiler" düğmesini gösteren ekran görüntüsü


Github eklentisi Arama kutusunu bulun.


Jenkins Plugin Manager web sayfasının "Github" eklentisi işaretçisini içeren ekran görüntüsü


Github eklentisini seçin.


Adım 5: Github Jenkins eklentisini yükleyin

Github eklentisini seçin. Ve ardından “Yeniden başlatmadan yükle” düğmesine tıklayın.


Jenkins Plugin Manager web sayfasının "Yeniden başlatmadan yükle" düğmesini gösteren ekran görüntüsü


Github eklentisinin indirilmesinin bitmesini bekleyin.


Github eklentisinin indirildiği Jenkins Plugin Manager web sayfasının ekran görüntüsü


Evet! Jenkins Github eklentisi kuruldu.


Adım 6: Github Jenkins Eklentisini Yapılandırın

Artık GitHub Jenkins eklentisi yüklendiğinde, bu eklentiyi sonunda Jenkins'i Git ile entegre edecek şekilde yapılandırabilirsiniz. Bunun için “En üst sayfaya dön” butonuna tıklayarak ana sayfaya dönmeniz gerekmektedir.


Jenkins Plugin Manager web sayfasının "En üst sayfaya geri dön" düğmesini gösteren ekran görüntüsü


Daha sonra ana sayfada “Jenkins'i Yönet” butonuna ve ardından “Global araç konfigürasyonu” butonuna tıklamanız gerekiyor.


Jenkins Plugin Manager web sayfasının "Genel araç yapılandırması" düğmesinin işaretçisini içeren ekran görüntüsü


Daha sonra Global Tool Configuration web sayfasında Git bölümüne gitmelisiniz.


Jenkins Global Araç Yapılandırması web sayfasının "Ad" ve "Git çalıştırılabilir yolu" giriş kutuları işaretçisini içeren ekran görüntüsü


Git bölümünde, bilgisayardaki Git'in adını ve yolunu sağlayarak Git'i yapılandırmanız gerekir.


Daha sonra "Uygula" ve "Kaydet" düğmelerini tıklayın**.**


Burada Jenkins Github eklentisini yapılandırmayı tamamladınız.


Adım 7: Git'i ardışık düzene entegre edin

Artık Jenkins Github eklentisi yüklenip yapılandırıldığından, artık bu eklentiyi işlem hattınızda kullanabilirsiniz. Bu, modül 2'de oluşturduğunuz işlem hattınızın proje kodunuzu belirtilen GitHub deposundan çekmesine olanak tanır.


Bu eklentiyi işlem hattınıza entegre etmek için Kaynak Kodu Yönetimi bölümüne gitmeniz ve işlem hattınızda Git'i seçmeniz gerekir. Daha sonra proje havuzu URL'nizi sağlamanız gerekir. Proje deponuz Github'da herkese açıksa kimlik bilgileri sağlamanıza gerek yoktur. Proje deposu Github'da özelse kimlik bilgileri sağlamanız gerekir.


"Kaynak Kodu Yönetimi" ayarlarının yer aldığı Jenkins İş yapılandırması web sayfasının ekran görüntüsü


Projemi bir sonraki Depo URL'si ile kullanabilirsiniz: https://github.com/Sunagatov/Hello.git .

Bunu kopyalayıp “ Depo URL'si” girişine yapıştırmanız yeterlidir. Ardından Git'in işlem hattıyla entegrasyonunu tamamlamak için "Uygula" ve "Kaydet" düğmelerini tıklayın.


8. Adım: Git'in ardışık düzene entegre edildiğini test edin

Artık Github'dan bir proje çekmek için güncellenmiş işlem hattınızı kullanabilirsiniz. Bunu yapmak için **“Şimdi Oluştur”** düğmesine tıklamanız gerekir. Sonuç olarak, yapım geçmişinde başarılı bir yapı göreceksiniz.


Jenkins web sayfasının "Şimdi Oluştur" düğmesini ve "Yapı Geçmişi" bölümünü gösteren işaretçileri içeren ekran görüntüsü



Yapı geçmişinden ilk yapıyı açın.

Başarılı iş sonucuyla Jenkins Pull_Code_From_Github_Job'un ekran görüntüsü


Artık ilk yapının başarılı iş sonucunu görebilirsiniz. AWS EC2 terminalinizi açarsanız. Boru hattının iyi çalışıp çalışmadığını kontrol edebilirsiniz.


Sadece bu komutu kullanın.

 cd /var/lib/jenkins/workspace/{your pipeline name}


Bu şekilde Github'daki projenizin AWS EC2 sanal sunucu örneğinize çekildiğini görebilirsiniz.


EC2 bulut sunucusu terminaline indirilen Github projesinin ekran görüntüsü



[Modül 4]: Apache Maven

Apache Maven, yazılım geliştirmede yaygın olarak kullanılan bir yapı otomasyonu ve proje yönetimi aracıdır. Proje bağımlılıklarını yöneterek ve tutarlı bir yapı yaşam döngüsü sağlayarak kodu derleme, test etme ve paketleme sürecini kolaylaştırır. Maven, proje yapısını, bağımlılıkları ve görevleri tanımlamak için XML tabanlı yapılandırma dosyalarını (POM dosyaları) kullanarak geliştiricilerin karmaşık yazılım projelerini verimli bir şekilde yönetmesine ve dağıtmasına olanak tanır.


Artık Git'i işlem hattına entegre ettiğinize göre, projenizi oluşturmanıza, test etmenize ve paketlemenize olanak tanıyan Apache Maven'i dahil ederek işlem hattını daha da geliştirebilirsiniz. Bunu yapmak için Apache Maven'i Jenkins ve Git'in kurulu olduğu AWS EC2 Sanal Sunucu örneğinize yüklemeniz gerekir.


Adım 1: Apache Maven'i indirin

Apache Maven'i indirmek için “/opt” dizinine gidin.

 cd /opt


Ve sonra bu komutu kullanın.

 sudo wget https://dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz


Bu komut en son resmi Apache Maven'i indirecektir (en son sürümü resmi Apache Maven web sitesinde kontrol edin). En son resmi Apache Maven sürümünü bulmak için https://maven.Apache.org/download.cgi bağlantısını kullanın.


Adım 2: Apache Maven'i arşivden çıkarın

Apache Maven'i indirilen arşivden çıkarmak için bu komutu kullanın:

 sudo tar -xvzf apache-maven-*.tar.gz


3. Adım: JAVA_HOME ve M2_HOME'u ekleyin

Bu komutu kullanarak kök klasöre taşıyın.

 cd ~


Bu komutu kullanarak .bash_profile dosyasını düzenleyin.

 vi .bash_profile


JAVA_HOME ve M2_HOME değişkenlerini ekleyin.


JAVA_HOME için JDK11 yolunu, M2_HOME değişkeni için maven dizininin yolunu atayın.


JDK yolunu bulmak için bu komutu kullanın.

 sudo find / -name java 



.bash_profile dosyasına sahip AWS EC2 Sanal Sunucu bulut sunucusu terminali web sayfasının ekran görüntüsü


VIM nasıl kullanılır?

  • Dosyayı düzenlemek için veri eklemek üzere klavyedeki “ I “ düğmesine basın.
  • Dosyayı kaydetmek için “esc” klavye tuşuna basın ve “:w” yazın.
  • Dosyadan çıkmak için “esc” klavye tuşuna basın ve “:q” yazın.

Değişiklikleri kaydedin.


Daha sonra sistem değişkenlerini yenilemek için bu komutu yürütün.

 source .bash_profile


$PATH'i doğrulamak için bu komutu kullanın.

 echo $PATH


Apache Maven'i doğrulamak için bu komutu kullanın.

 mvn -v


Her şeyi doğru yaptıysanız Apache Maven sürümünü görüntüleyebileceksiniz.

AWS EC2 Virtual Server örnek terminali web sayfasının Apache Maven sürümünün ekran görüntüsü


Adım 4: Apache Maven Jenkins eklentisini yükleyin

Apache Maven bir EC2 örneğinde kullanılabildiğinden, işlem hattıyla entegre etmek için Apache Maven eklentisini yükleyebilirsiniz.


Bunu başarmak için şu adımları izleyin:

  1. “Kontrol Paneli” → “Jenkins'i Yönet” → “Eklentileri Yönet” → “Kullanılabilir” seçeneğine gidin.
  2. Arama kutusuna “Maven” yazın.
  3. “Maven Entegrasyonu” eklentisini seçin.


AWS EC2 Sanal Sunucusunda Maven eklentisi işaretçisi ile yüklü olan Jenkins'in ekran görüntüsü


İndirme işleminin bitmesini bekleyin.


Daha sonra “En üst sayfaya dön” butonuna tıklayın.

AWS EC2 Sanal Sunucusunda yüklü olan ve Maven eklentisi indirme işlemini gösteren Jenkins'in ekran görüntüsü


Adım 5: Apache Maven Jenkins eklentisini yapılandırın

Apache Maven Jenkins eklentisinin başarılı kurulumuyla artık bu eklentiyi modül 2 ve 3'te oluşturduğunuz ve güncellediğiniz işlem hattında kullanabilirsiniz.


Bunu yapmak için şu adımları izleyin:

  1. “Gösterge Paneli” → “Jenkins'i Yönet” → “Global Araç Yapılandırması” → “JDK” seçeneğine gidin
  2. “JDK Ekle” düğmesine tıklayın.
  3. "Otomatik olarak yükle" seçeneğinin işaretini kaldırın.



AWS EC2 Sanal Sunucusunda yüklü olan Jenkins'in, JDK yapılandırmasını gösteren ekran görüntüsü



Daha sonra “Maven” bölümüne gidin. “Maven Ekle” butonuna tıklayın. "Otomatik olarak yükle" seçeneğinin işaretini kaldırın.

Ardından adı ve MAVEN_HOME yolunu ekleyin.



AWS EC2 Sanal Sunucusunda yüklü olan ve Apache Maven yapılandırmasını gösteren Jenkins'in ekran görüntüsü



“Uygula” ve “Kaydet” butonlarına tıklayın.

Burada Apache Maven Jenkins eklentisini yapılandırmayı tamamladınız.


Adım 6: Apache Maven'i ardışık düzene entegre edin

Artık Apache Maven GitHub eklentisi yüklenip yapılandırıldığından, artık Apache Maven'i işlem hattınızda kullanabilirsiniz. Bu, "[modül 2]: Jenkins Sunucusu"nda oluşturduğunuz boru hattınızın bir jar yapıtı oluşturmak için proje kodunuzu oluşturmasına olanak tanır.


Apache Maven'i işlem hattına entegre etmek için şu adımları izlemeniz gerekir:

  1. "Kontrol Paneli" → "CI_CD_Pipeline" → "Yapılandır" → "Oluşturma Adımları" seçeneğine gidin.
  2. “Derleme adımı ekle” düğmesine tıklayın.
  3. “Üst düzey Maven hedeflerini çağır” seçeneğini seçin.
  4. “Maven Versiyonu” olarak “Apache-Maven”i seçin .
  5. “Hedefler” girişine “temiz paket” komutunu ekleyin.
  6. “Gelişmiş” butonuna tıklayın.
  7. “POM” girişine “pom.xml” ekleyin.



İşlem hattı yapılandırmasındaki "Uygula" ve "Kaydet" düğmelerine yönelik işaretçilerin yer aldığı "Oluşturma Adımları" bölümünün ekran görüntüsü



Son olarak Apache Maven'in işlem hattı ile entegrasyonunu tamamlamak için "Uygula" ve "Kaydet" butonlarına tıklamalısınız.

Adım 7: İşlem hattına entegre edilmiş Apache Maven'i test edin

Artık Github projenizi oluşturmak için güncellenmiş işlem hattınızı kullanabilirsiniz. Bunu yapmak için **“Şimdi Oluştur”** düğmesine tıklamanız gerekir. Sonuç olarak, yapım geçmişinde başarılı bir iş sonucu göreceksiniz.

AWS EC2 terminalinizi açarsanız. Boru hattının iyi çalışıp çalışmadığını kontrol edebilirsiniz.


Sadece bu komutu kullanın.

 cd /var/lib/jenkins/workspace/{your pipeline name}/target


Bu şekilde, projenizin GitHub'dan başarıyla oluşturulduğunu gösteren JAR yapıtını görebilirsiniz.



[Modül 5]: Docker

Şimdi Docker ve Ansible kuracağınız "Ansible Server" isminde yeni bir EC2 örneği oluşturalım.


1. Adım: Bir AWS EC2 Sanal Sunucu örneğini başlatın

Bu adımı tamamlamak için bu eğitimin " AWS EC2 Sanal Sunucu örneğini başlatma" bölümündeki talimatları kullanın. Güvenlik grubu kurulumu eklemeyi unutmayın. Docker ve SSH'nin sırasıyla 8080 ve 22 numaralı bağlantı noktalarında çalışmasına olanak tanır.


2. Adım: Bir AWS EC2 Sanal Sunucu örneğine bağlanın

“Bağlan” düğmesine tıklayın.

"Bağlan" düğmesinin işaretçisini içeren AWS web sayfasının ekran görüntüsü


Artık EC2 Sanal Sunucu örneği çevrimiçi terminalini görebilirsiniz.

AWS EC2 Sanal Sunucu örneği çevrimiçi terminalinin ekran görüntüsü


 sudo chown ansible-admin:ansible-admin /opt/docker


Adım 3: Ansible EC2 sanal sunucusuna Docker’ı kurun.

Artık Ansible EC2 bulut sunucunuza docker yüklemeniz gerekiyor. Bunu yapmak için yeni bir docker klasörü oluşturmanız gerekir.

 sudo mkdir /opt/docker


Daha sonra bir sonraki komutu çalıştırarak docker’ı kurun.

 sudo yum install docker -y


Adım 4: Geçerli kullanıcıyı Ansible EC2 sanal sunucusundaki Docker grubuna ekleyin

Docker admin ayrıcalıklarını vermek için mevcut kullanıcı olan “ansible-admin”i “AnsibleServer” EC2 sanal sunucusu üzerindeki Docker grubuna eklemeniz gerekmektedir.


 sudo usermod -a -G docker ansible-admin


Bu değişikliklerin etkili olması için oturumu kapatıp tekrar giriş yapmanız gerekecektir.


Daha sonra bir sonraki komutu çalıştırabilirsiniz

 id ansible-admin


yeni liman işçisi kullanıcısının var olduğunu görmek için.


Liman işçisi kullanıcısını gösteren işaretçiyi içeren Ansible EC2 örneğinin ekran görüntüsü


Adım 5: Docker'ı Başlatın

Artık Docker, Ansible EC2 örneğine yüklendiğinden, bir sonraki komutu çalıştırarak onu başlatabilirsiniz.

 sudo systemctl start docker


Docker başlatıldığında bir sonraki komutu çalıştırabilirsiniz.

 sudo systemctl status docker


docker'ın aktif olduğunu ve şu anda çalıştığını görmek için.

Ansible EC2 örneğinin aktif docker durumuyla birlikte ekran görüntüsü


Adım 6: Dockerfile oluşturun

İşlem hattının son sürümünde süreç, GitHub projenizden yeni bir Docker görüntüsü oluşturmayı ve bunu Docker Hub'a aktarmayı içerecektir. Bunu başarmak için GitHub projenizin bir Dockerfile içermesi gerekir.


[Modül 3]: Git ve Github” modülünde sunulan “Merhaba” projesini kullandıysanız bu proje deposunda zaten Dockerfile bulunduğundan yeni bir Dockerfile oluşturmanıza gerek yoktur.


 FROM eclipse-temurin:17-jre-jammy ENV HOME=/opt/app WORKDIR $HOME ADD hello-0.0.1-SNAPSHOT.jar $HOME ENTRYPOINT ["java", "-jar", "/opt/app/hello-0.0.1-SNAPSHOT.jar" ]


Kendi proje deponuzu kullandıysanız ve içinde Docker dosyası yoksa yeni bir Docker dosyası oluşturmanız gerekecektir.


Yeni bir Dockerfile oluşturmak için yeni dosyayı oluşturacak aşağıdaki komutu yürütün.

 sudo touch Dockerfile


Daha sonra bu dosyayı kapsayıcıya alınmış bir uygulama ortamının nasıl oluşturulacağını açıklayan bir dizi komutla doldurabilirsiniz. Bu komutlar, dosyaları görüntüye kopyalamak, yazılımı yüklemek, ortam değişkenlerini ayarlamak ve kapsayıcıyı yapılandırmak gibi eylemleri içerir.


Dockerfile’ı bu komutlarla doldurmak için aşağıdaki komutu yürütün.

 vim Dockerfile

Dockerfile kullanıma hazır.


Adım 7: Docker'a Giriş Yapın

Artık Dockerfile'ınız kullanıma hazır olduğuna göre, projenizin JAR yapısını **"JenkinsServer"**EC2 örneğinden kopyalayıp "AnsibleServer" EC2 örneğine yapıştırarak ilerleyin. Bu aktarımın boru hattı yoluyla daha da otomatikleştirileceğini unutmamak önemlidir.

Bu adımı tamamlayarak Docker dosyanızı kurduğunuz Docker ortamıyla birlikte test etmeye hazır olacaksınız.


Teste başlamadan önce Dockerhub'da kimliğinizi doğruladığınızdan emin olun. Aşağıdaki komutu yürütün.

 docker login


Bu komut, kullanıcı adınız ve şifreniz de dahil olmak üzere Dockerhub oturum açma bilgilerinizi girmenizi isteyecektir.

"AnsibleServer" EC2 örneğinde başarılı liman işçisi oturum açma işleminin ekran görüntüsü


Bununla Docker'da oturum açma işlemini tamamladınız ve artık teste devam etmeye hazırsınız.

Adım 8: Docker ortamını ve Dockerfile'ı test etme

Dockerhub'a başarıyla giriş yaptığınızda artık hazırladığınız Docker dosyasını test etmeye hazırsınız.


Docker görüntüsü oluşturmak için bu komutu yürütün.

 docker build -t hello:latest .


Ardından görüntünün Dockerhub'a yüklenmesini kolaylaştıracak bir etiket oluşturmak için sonraki komutu yürütün:

 docker tag hello:latest zufarexplainedit/hello:latest


Son olarak, bu komutun yürütülmesiyle Docker görüntüsünü Dockerhub'a göndermeye devam edin.

 docker push zufarexplainedit/hello:latest


Bu adımları izleyerek Dockerhub hesabınıza giderek yeni bir görsel görüp göremediğinizi doğrulayın.

Dockerhub hesabının yeni görselin eklendiği ekran görüntüsü


Artık görüntünün etkili bir şekilde eklendiğini gözlemlemelisiniz. Bu sonuç, Docker ortamının başarıyla kurulduğunu ve Docker dosyanızın doğru olduğunu onaylar.



[Modül 6]: Ansible

Şimdi EC2 Sanal Sunucu örneği üzerinde Ansible Sunucusunu yapılandıralım.


1. Adım: Bir AWS EC2 Sanal Sunucu örneği oluşturun

Ansible'ı çalıştırmak için sanal bir sunucuya ihtiyacınız var.


Bu adımı tamamlamak ve Ansible için bir EC2 sanal sunucu örneği oluşturmak için bu eğitimin [Modül 1]: AWS EC2 Sanal Sunucu bölümündeki talimatları izleyin.

Güvenlik grubu kurulumu eklemeyi unutmayın. Ansible ve SSH'nin sırasıyla 8080 ve 22 numaralı bağlantı noktalarında çalışmasına olanak tanır.


EC2 Sanal Sunucu örneğinizi ayırt etmek için “AnsibleServer” adını kullanın.

Yeni bir "AnsibleServer" EC2 örneği için "CI_CD_Pipeline" güvenlik grubunu ve "CI_CD_Pipeline_Key_Pair"i yeniden kullanabilirsiniz.


2. Adım: Bir AWS EC2 Sanal Sunucu örneğine bağlanın

AWS Konsolu ana sayfasına → EC2 Yönetim Konsolu Kontrol Paneli → Bulut Sunucuları → AnsibleServer'a gidin.


Daha sonra “Bağlan” butonuna tıklayın.

"Bağlan" düğmesinin işaretçisini içeren AWS web sayfasının ekran görüntüsü


Daha sonra bu web sayfasını göreceksiniz. Tekrar “Bağlan” butonuna tıklamalısınız.


AWS "Örneğe Bağlan" web sayfasının "Bağlan" düğmesi işaretçisini içeren ekran görüntüsü


Artık EC2 sanal sunucu örneği çevrimiçi terminalini görebilirsiniz.

AWS EC2 Sanal Sunucu örneği çevrimiçi terminalinin ekran görüntüsü


Şimdi EC2 sanal sunucu örneği üzerinde Ansible Server'ı yapılandıralım.

3. Adım: “AnsibleServer” AWS EC2 Sanal Sunucu örneğinin ana bilgisayar adını değiştirin

AnsibleServer'ı EC2 sanal sunucu örneği üzerinde yapılandırmak istediğinizde yapmanız gereken ilk şey, ana bilgisayar adını değiştirmektir.


Hadi yapalım. Ana bilgisayar adı dosyasını açmak için bu komutu yürütün:

 sudo vi /etc/hostname


Bunun gibi bir şey görmelisiniz:

AWS EC2 Sanal Sunucu örneğinin ana bilgisayar adı dosyasıyla birlikte ekran görüntüsü


Bu ana bilgisayar adını "ansible-server" ile değiştirin. Ardından yeniden başlatın.

 sudo init 6 



Ana makine adı işaretçisini içeren AWS EC2 Sanal Sunucu örnek terminalinin ekran görüntüsü


4. Adım: “AnsibleServer” AWS EC2 Sanal Sunucu örneğine yeni bir kullanıcı ekleyin ve yapılandırın

Şimdi AWS EC2 Sanal Sunucu örneğine yeni bir ansible-admin kullanıcısı ekleyelim.

Bunu yapmak için şu komutu kullanın:


 sudo useradd ansible-admin


Daha sonra ansible-admin kullanıcısının şifresini ayarlayın.

 sudo passwd ansible-admin


Ayrıca sudoers dosyasını düzenleyerek kullanıcı ayrıcalıklarını yapılandırmanız gerekir.

 sudo visudo


Bu sudoers dosyasına “ansible-admin ALL=(ALL) ALL” ekleyin.

AWS EC2 Sanal Sunucu bulut sunucusu terminalinin yönetici ayrıcalıklarına işaret eden ekran görüntüsü


Ayrıca, PasswordAuthentication'ı etkinleştirmek için /etc/ssh/sshd_config dosyasını düzenlemeniz gerekir.

 sudo vi /etc/ssh/sshd_config 


AWS EC2 Sanal Sunucu bulut sunucusu terminalinin yönetici ayarları işaretçisini içeren ekran görüntüsü


Daha sonra bu değişiklikleri onaylamak için hizmeti yeniden yüklemeniz gerekir.

 sudo service sshd reload


Bu komutu yürütmenin bir sonucu olarak şunu göreceksiniz:


AWS EC2 Sanal Sunucu bulut sunucusu terminalinin sshd yeniden yükleme sonucunu gösteren işaretçiyi içeren ekran görüntüsü


Artık diğer tüm komutlara sudo eklemekten kaçınmak için bu komutu kullanabilirsiniz.

 sudo su - ansible-admin


5. Adım: AWS EC2 Sanal Sunucu örneğinde anahtar oluşturun

Bu makalenin ilerleyen kısımlarında K8s EC2 sanal sunucu örnekleri gibi uzak sunucuları yönetmeyi planlıyorsunuz. Bu yüzden SSH anahtarlarını ayarlamanız gerekiyor.

 ssh-keygen


Bu komutu yürütmenin bir sonucu olarak şunu göreceksiniz:

AWS EC2 Sanal Sunucu bulut sunucusu terminalinin ssh-keygen sonucunu gösteren işaretçiyi içeren ekran görüntüsü


Artık SSH anahtarları oluşturuldu ve kullanıma hazır.

Adım 6: Ansible'ı yükleyin

Artık Ansible'ı “AnsibleServer” EC2 sanal sunucu örneğinize yükleyebilirsiniz.

Hadi yapalım.


Ansible'ı yüklemek için bu komutu yürütün.

 sudo amazon-linux-extras install ansible2


Ansible'ı doğrulamak için şu komutu kullanın:

 ansible --version


Bu komutu yürütmenin bir sonucu olarak şunu göreceksiniz:

AWS EC2 Sanal Sunucu örnek terminalinin sudo yum install ansible result işaretçisini içeren ekran görüntüsü


Adım 7: JenkinsServer EC2 örneğine Jenkins “SSH üzerinden yayınla” eklentisini yükleyin

Ansible , "AnsibleServer" EC2 sanal sunucu örneğinize kurulduğundan, Jenkins'i Ansible ile entegre edecek şekilde yapılandırabilirsiniz. Jenkins'i Ansible'ın yüklü olduğu EC2 Sanal Sunucu örneğiyle ve Kubernetes'in yüklü olduğu diğer EC2 Sanal Sunucu örnekleriyle entegre etmek için “SSH üzerinden Yayınla” eklentisini yüklemeniz gerekir.


“Gösterge Paneli” → “ Jenkins'i Yönet”“Sistemi Yapılandır”“Kullanılabilir eklentiler” seçeneğine gidin.

Daha sonra arama kutusuna “SSH üzerinden yayınla” yazın.


AWS EC2 Sanal Sunucusunda yüklü olan Jenkins'in "Kullanılabilir eklentiler" web sayfası işaretçisini içeren ekran görüntüsü


“Yeniden başlatmadan yükle” düğmesine tıklayın. İndirme işleminin bitmesini bekleyin.


AWS EC2 Sanal Sunucusunda yüklü olan Jenkins'in "İndirme ilerlemesi" web sayfası işaretçisini içeren ekran görüntüsü



Artık Jenkins EC2 Sanal Sunucu örneğine “SSH üzerinden yayınla” eklentisi yüklendi.


Adım 8: Jenkins “SSH üzerinden yayınla” eklentisini yapılandırın

Apache Maven Jenkins eklentisinin başarılı kurulumuyla artık bu eklentiyi modül 2 ve 3'te oluşturduğunuz ve güncellediğiniz işlem hattında kullanabilirsiniz.


Bunu yapmak için şu adımları izleyin:


“Kontrol Paneli”“Jenkins'i Yönet”“Sistemi Yapılandır”“SSH Üzerinden Yayınla” seçeneğine gidin.

"SSH üzerinden yayınla" eklentisine sahip AWS EC2 Sanal Sunucu bulut sunucusu terminalinin ekran görüntüsü


Ana bilgisayar adı, kullanıcı adı ve özel anahtar (veya varsa şifre) dahil olmak üzere gerekli tüm verileri ekran görüntüsünde olduğu gibi girin.


"SSH üzerinden yayınla" eklentisine sahip AWS EC2 Sanal Sunucu bulut sunucusu terminalinin ekran görüntüsü


Daha sonra “Uygula” ve “Kaydet” butonlarına tıklayın.


Burada “SSH üzerinden yayınla” Jenkins eklentisini yapılandırmayı tamamladınız.


Daha sonra eklentinin düzgün çalıştığını doğrulamak için “Yapılandırmayı Test Et” seçeneğine tıklayın.



"SSH Üzerinden Yayınla" eklentisinin "Test Yapılandırması" butonunun yer aldığı ekran görüntüsü


Sol tarafta test eklentisi yapılandırma durumunun “Başarılı” olduğunu görebilirsiniz. Bu, eklenti yapılandırmasının doğru olduğu anlamına gelir.


Adım 9: AnsibleServer'da yeni Docker dizini oluşturun

JAR projesinin depolanacağı AnsibleServer EC2 örneğinde yeni bir klasör oluşturmanız gerekir. Bu jar daha sonra Docker imajı oluşturmak için kullanılacaktır.


Hadi başlayalım.


AnsibleServer EC2 örneğinde “/opt” klasörüne gidin.

 cd /opt


Orada yeni bir “docker” klasörü oluşturun.

 sudo mkdir docker


Bu “docker” klasörüne ayrıcalıklar verin.

 sudo chown ansible-admin:ansible-admin docker


Şimdi bu komutu çalıştırarak “docker” klasörünün ayrıcalıklarını kontrol edin.

 ll


“Docker” klasörüne “ansible-admin” kullanıcısı ile erişilebildiğini görebilirsiniz.


"AnsibleServer" EC2 örneğindeki "docker" klasörünün ekran görüntüsü


Adım 10: “SSH üzerinden yayınla” Github eklentisini ardışık düzene entegre edin


Artık "SSH üzerinden yayınla" Github eklentisi kurulup yapılandırıldığında, artık onu "[modül 2]: Jenkins Sunucusu"nda oluşturduğunuz ardışık düzene entegre ederek bir proje jar eserini "JenkinsServer"dan " JenkinsServer" a aktarabilirsiniz. “AnsibleSunucusu” .


Peki, "SSH üzerinden yayınla" Github eklentisini ardışık düzene entegre etmek için şu adımları izlemeniz gerekir:


  1. “Kontrol Paneli” → “CI_CD_Pipeline” → “Yapılandır” → “Derleme Sonrası Eylemler” seçeneğine gidin.
  2. “Derleme sonrası eylem ekle” düğmesine tıklayın.
  3. “Derleme yapıtlarını SSH üzerinden gönder” seçeneğini seçin.
  4. “SSH Sunucusu” bölümündeki “Ad” girişine “AnsibleServer” ı ekleyin**.**
  5. “Aktarım Seti” bölümündeki “Kaynak dosyalar” girişine “target/*.jar” ekleyin**.**
  6. “Transfer Seti” bölümündeki “Öneki kaldır” girişine “hedef/” ekleyin**.**
  7. “Aktarım Kümesi” bölümündeki “Uzak dizin” girişine “//opt/docker/” ekleyin**.**
  8. Şimdilik, 'Aktarım Kümesi' bölümünün altındaki 'Exec komutu' girişine boş bir dize koymanız yeterlidir.



İşlem hattı yapılandırmasındaki "Derleme yapıtını SSH üzerinden gönder" bölümünün ekran görüntüsü


Son olarak “SSH üzerinden yayınla” eklentisinin boru hattı ile entegrasyonunu tamamlamak için “Uygula” ve “Kaydet” butonlarına basmalısınız.


Adım 11: İşlem hattına entegre edilmiş "SSH üzerinden yayınla" Github eklentisini test edin

Artık bir proje jar yapıtını " JenkinsServer" dan "AnsibleServer" a aktarmak için güncellenmiş işlem hattınızı kullanabilirsiniz. Bunu yapmak için “Şimdi Oluştur” düğmesine tıklamanız gerekir. Sonuç olarak yapım geçmişinde başarılı bir iş sonucu göreceksiniz.


“AnsibleServer” AWS EC2 terminalinizi açarsanız. Boru hattının iyi çalışıp çalışmadığını kontrol edebilirsiniz.

Sadece bu komutu kullanın.


 cd /opt/docker


Bu şekilde, projenizin GitHub'dan başarıyla oluşturulduğunu gösteren JAR yapıtını görebilirsiniz.

/opt/docker dizininin proje jar yapıtını içeren ekran görüntüsü


12. Adım: Ansible ana bilgisayarlarını yapılandırın

Bir Ansible playbook'u çalıştırdığınızda, üzerinde çalışması gereken ana bilgisayarları belirtirsiniz. Bunu iki şekilde yapabilirsiniz:


  1. Ana bilgisayarları doğrudan Playbook'ta belirtin: Playbook'unuzda, hosts parametresini bir IP adresleri veya ana bilgisayar adları listesine ayarlayabilirsiniz.
  2. Envanter dosyası kullanın: Ansible, bir envanter dosyasındaki ana bilgisayarların listesini tanımlamanıza ve çalışma kitabınızı çalıştırırken bu dosyaya referans vermenize olanak tanır. Varsayılan envanter dosyası /etc/ansible/hosts .


/etc/ansible/hosts dosyasını düzenleyerek, bir oyun kitabını her çalıştırdığınızda IP adreslerini yazmak zorunda kalmadan ana bilgisayar gruplarını kolayca yönetebilirsiniz.


Aşağıdaki komutu çalıştırarak AnsibleServer EC2 örnek hostunu bulalım.

 sudo ifconfig 


AnsibleServer EC2 örneğinin ağ arayüzü ayarının ekran görüntüsü


AnsibleServer EC2 örnek hostunu bulduktan sonra aşağıdaki komutu çalıştırarak onu Ansible hosts dosyasına ekleyebilirsiniz.


 sudo vi /etc/ansible/hosts


Referans olarak “[ansible]” ifadesini de ekleyebilirsiniz.

Ansible hosts dosyasının ekran görüntüsü


Bir sunucu kümesini yönetiyorsanız ve hepsine bir oyun kitabı uygulamak istiyorsanız, oynatma kitabında her sunucunun IP adresini belirtmek yerine, tüm sunucuları envanter dosyasındaki bir gruba ekleyebilir ve ardından başucu kitabındaki grup.


Adım 13: Ansible için localhost'ta Parolasız SSH kimlik doğrulamasını yapılandırın

Ansible, uzak sunuculardaki görevleri otomatikleştirmek için tasarlanmıştır. Parolasız SSH kimlik doğrulaması, Ansible'ın bu sunuculara manuel parola girişine gerek kalmadan bağlanmasını sağlar.

Ansible-admin kullanıcısının SSH anahtarını kullanarak bilgisayarınızdan başka bir bilgisayara (172.31.34.41 IP adresindeki gibi) güvenli bir bağlantı oluşturmak için bu komutu yürütün.


 sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address}


Benim durumumda şöyle görünüyor.

 sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub [email protected] 


Başarılı şifresiz ssh kimlik doğrulama kurulumu sonucunun ekran görüntüsü


Artık “Eklenen anahtar(lar)ın sayısı: 1”i görebilirsiniz. Bu, parolasız SSH kimlik doğrulama kurulumunun başarıyla tamamlandığı anlamına gelir.

Adım 14: Docker görevleri için yeni bir Ansible çalışma kitabı oluşturun

Artık Ansible hazır olduğuna ve kullanıma hazır olduğuna göre, satış hattınız için yeni bir Ansible taktik kitabı oluşturabilirsiniz. Bu başucu kitabı, Ansible'ın yeni bir Docker görüntüsü oluşturup Dockerhub'a göndermesine olanak tanıyacak.

Bunu nasıl yapabileceğiniz aşağıda açıklanmıştır:


  1. Yeni bir Ansible oynatma kitabı dosyası oluşturarak başlayın. Sadece bu komutu kullanın.
 touch hello-app.yml


  1. Ardından yeni oluşturulan hello-app.yml dosyasını düzenleyin. Bu komutla düzenlemek için açın.
 vi hello-app.yml


  1. Dosyanın içine aşağıdakileri yazın.
 --- - hosts: ansible user: root tasks: - name: create docker image command: docker build -t hello:latest . args: chdir: /opt/docker - name: create tag to push image onto dockerhub command: docker tag hello:latest zufarexplainedit/hello:latest - name: push docker image onto dockerhub command: docker push zufarexplainedit/hello:latest

Docker görevleri için Ansible playbook kullanıma hazır.

Adım 13: Ansible çalışma kitabını Docker görevleriyle test edin

Ansible, Ansible playbook, AnsibleServer ve JenkinsServer'ın tamamı doğru şekilde yapılandırıldığında, Ansible playbook'u test etme zamanı geldi.


Ansible oyun kitabınızın konumuna gidin.

 cd /opt/docker


Daha sonra aşağıdaki komutu yürütün.

 sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml


Tamamlandığında, Ansible oyun kitabınızın başarılı yürütme sonucunu göreceksiniz.

Docker görevleri için ansible playbook'un başarılı yürütme sonucunun ekran görüntüsü


Ayrıca, bir dakikanızı ayırıp Dockerhub hesabınızı ziyaret edin ve artık yeni bir görüntünün görünür olup olmadığını doğrulayın.


Dockerhub hesabının yeni görselin eklendiği ekran görüntüsü


Yeni eklenen resmi görmelisiniz. Bu sonuç, Ansible başucu kitabınızın doğru olduğunu doğrular.


Adım 14: Ansible Docker görevlerini ardışık düzene entegre edin

Artık "SSH üzerinden yayınla" Github eklentisi, Ansible ve Docker yüklenip yapılandırıldığından, artık hepsini bir proje jar eserini aktarmak için "[modül 2]: Jenkins Sunucusu"nda oluşturduğunuz ardışık düzene entegre edebilirsiniz. " JenkinsServer" dan "AnsibleServer" a gidin ve ardından projenizden yeni bir Docker görüntüsü oluşturun ve ardından bu Docker görüntüsünü Dockerhub'a aktarın.


Bunu başarmak için şu adımları uygulamanız gerekir:

  1. "Gösterge Paneli" → "CI_CD_Pipeline" → "Yapılandır" → "Derleme Sonrası Eylemler" → "Derleme yapıtlarını SSH üzerinden gönder" seçeneğine gidin.
  2. “Exec command” girişine “sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml” komutunu ekleyin.


İşlem hattı yapılandırmasındaki "Derleme yapıtını SSH üzerinden gönder" bölümünün ekran görüntüsü


Son olarak, Ansible Docker görevlerinin işlem hattıyla entegrasyonunu tamamlamak için "Uygula" ve "Kaydet" düğmelerine tıklayın.

Adım 15: İşlem hattına entegre edilmiş "Docker görevleriyle Ansible playbook"u test edin

Artık bir proje jar eserini " JenkinsServer" dan "AnsibleServer" a sorunsuz bir şekilde aktarmak için yükseltilmiş işlem hattınızı test edebilir, ardından projenizden yeni bir Docker görüntüsü oluşturabilir ve ardından bu Docker görüntüsünü Dockerhub'a aktarabilirsiniz. Bunu yapmak için “Şimdi Oluştur” düğmesine tıklamanız gerekir. Sonuç olarak yapım geçmişinde başarılı bir iş sonucu göreceksiniz.


Ayrıca, bir dakikanızı ayırıp Dockerhub hesabınızı ziyaret edin ve artık yeni bir görüntünün görünür olup olmadığını doğrulayın.


Dockerhub hesabının yeni görselin eklendiği ekran görüntüsü


Yeni eklenen resmi görmelisiniz. Bu sonuç, Docker görevlerini içeren Ansible oyun kitabınızın ardışık düzene başarıyla entegre edildiğini doğrular.


[Modül 7]: Kubernetes

Şimdi EC2 bulut sunucusunda K8'leri yapılandıralım. Yeni bir EC2 bulut sunucusu oluşturacak ve Kubernetes kümesiyle daha fazla etkileşim kurmak için kubectl komut satırı aracını kuracaksınız.


1. Adım: Bir AWS EC2 Sanal Sunucu örneğini başlatın

Bu adımı tamamlamak için bu eğitimin " AWS EC2 Sanal Sunucu örneğini başlatma" bölümündeki talimatları kullanın.


Güvenlik grubu kurulumu eklemeyi unutmayın. Tüm araçların ve SSH'nin sırasıyla 8080 ve 22 numaralı bağlantı noktalarında çalışmasına olanak tanır.


EC2 Sanal Sunucu örneğinizi ayırt etmek için “K8sServer” adını kullanın.

Yeni bir "K8sServer" EC2 örneği için "CI_CD_Pipeline" güvenlik grubunu ve "CI_CD_Pipeline_Key_Pair"i yeniden kullanabilirsiniz.


2. Adım: Bir AWS EC2 Sanal Sunucu örneğine bağlanın

“Bağlan” düğmesine tıklayın.

"Bağlan" düğmesinin işaretçisini içeren AWS web sayfasının ekran görüntüsü


Artık EC2 Sanal Sunucu örneği çevrimiçi terminalini görebilirsiniz.

AWS EC2 Sanal Sunucu örneği çevrimiçi terminalinin ekran görüntüsü


3. Adım: “KubernetesServer” AWS EC2 Sanal Sunucu örneğinin ana bilgisayar adını değiştirin

EC2 sanal sunucu örneği üzerinde KuberenetesServer'ı yapılandırmak istediğinizde yapmanız gereken ilk şey host adını değiştirmektir.


Hadi yapalım. Ana bilgisayar adı dosyasını açmak için bu komutu yürütün:

 sudo vi /etc/hostname


Bunun gibi bir şey görmelisiniz.

AWS EC2 Sanal Sunucu örneğinin ana bilgisayar adı dosyasıyla birlikte ekran görüntüsü


Bu ana bilgisayar adını “kubernetes-server” ile değiştirin ve ardından yeniden başlatın.

 sudo init 6


Ana makine adınız değiştirildi.

Ana makine adı işaretçisini içeren AWS EC2 Sanal Sunucu örnek terminalinin ekran görüntüsü


4. Adım: AWS CLI sürümünü kontrol edin

AWS sürümünü kontrol etmek için bu komutu kullanın.

 aws --version


Bu şekilde mevcut aws-cli sürümünüzü görebilirsiniz.

AWS EC2 Sanal Sunucu örneği çevrimiçi terminalinin aws version komut sonucunu içeren ekran görüntüsü


aws-cli/1.18 sürümünü görebiliyorsanız en son sürümü indirmelisiniz.


5. Adım: AWS CLI'yi güncelleyin

Artık EC2 bulut sunucunuzda eski bir aws-cli sürümünün bulunduğunu öğrendiğiniz için onu güncellemeniz gerekiyor. Bunun için AWS → Belgeler → AWS Komut Satırı Arayüzü → Sürüm 2 için Kullanım Kılavuzu'na gidin.


Sürüm 2 için Kullanıcı Kılavuzunu içeren AWS EC2 Sanal Sunucu örneği web sayfasının ekran görüntüsü


curl komutunu kopyalayıp yapıştırın.


Öncelikle awscli sürüm 2'yi indirmek için bu komutu çalıştırın.

 curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

İndirme işleminin başlamasını bekleyin.


Bunun gibi bir şey görmelisiniz.

AWS EC2 Sanal Sunucu örneği çevrimiçi terminalinin aws sürüm 2 sonucunun indirildiği ekran görüntüsü


İkinci olarak, awscli sürüm 2 arşivini açmak için bu komutu uygulamanız gerekir.

 unzip awscliv2.zip


Üçüncüsü, awscli sürüm 2'yi yüklemek için bu komutu çalıştırmalısınız.

 sudo ./aws/install


Ardından Kubernetes EC2 Sanal Sunucu örneği çevrimiçi terminalini yeniden yükleyin.


Daha sonra AWS sürümünü kontrol etmek için bu komutu kullanın.

 aws --version


Aws cli'nin aws-cli/2'ye sahip olduğunu görebilirsiniz.

AWS EC2 Sanal Sunucu örneği çevrimiçi terminalinin aws sürüm koommand sonucunu içeren ekran görüntüsü


Adım 6: kubectl'i yükleyin

Kubectl, temel altyapıya bakılmaksızın herhangi bir Kubernetes kümesiyle etkileşim kurmaya yönelik temel bir komut satırı aracıdır. Bir Kubernetes kümesi içinde kaynakları yönetmenize, uygulamaları dağıtmanıza, ağı yapılandırmanıza, günlüklere erişmenize ve diğer çeşitli görevleri gerçekleştirmenize olanak tanır.


Artık bir Kubernetes kümesiyle daha fazla etkileşim kurmak için kubectl komut satırı aracını yüklemeniz gerekiyor. Bunun için AWSBelgelerAmazon EKSKullanıcı Kılavuzukubectl'i yükleme veya güncellemeLinux seçeneğine gitmeniz gerekir.


Veya https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html bağlantısını tıklamanız yeterlidir.


AWS EKS Kullanıcı Kılavuzunun ekran görüntüsü



Öncelikle kubectl'i indirmek için bu komutu yürütün.

 curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.1/2023-04-19/bin/linux/amd64/kubectl


İndirme işlemini bekleyin.


Bunun gibi bir şey göreceksiniz.

Kubectl sonucunun indirildiği AWS EC2 Sanal Sunucu örneği çevrimiçi terminalinin ekran görüntüsü


Kubectl'e izin verin.

 chmod +x kubectl


Kubectl'i /usr/local/bin klasörüne taşıyın.

 sudo mv kubectl /usr/local/bin


Kubectl sürümünü kontrol edin.

 kubectl version --output=yaml


Adım 7: eksctl'yi yükleyin

Eksctl , Amazon EKS hizmetine özel olarak tasarlanmış başka bir komut satırı aracıdır. Eksctl, AWS EKS kümeleri oluşturmak, düğüm gruplarını yönetmek ve AWS altyapı kurulumunun ve yönetiminin çoğunu soyutlayarak IAM rolleri ve diğer AWS hizmetleriyle entegrasyon gibi EKS'ye özgü görevleri gerçekleştirmek için kullanılabilir.


Kubectl'i indirmek için komutu yürütün.

 curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp


eksctl'yi /usr/local/bin klasörüne taşıyın.

 sudo mv /tmp/eksctl /usr/local/bin


eksctl sürümünü kontrol edin.

 eksctl version


Sürümü görmelisiniz

Eksctl sürümüne sahip AWS EC2 Sanal Sunucu örneği çevrimiçi terminalinin ekran görüntüsü


8. Adım: eksctl için IAM Rolü oluşturun

Bir IAM rolü oluşturmanız ve bunu “KubernetesServer” EC2 örneğinize eklemeniz gerekir.

Bunu yapmak için arama kutusunda EC2'yi bulmanız gerekir.


https://us-east-1.console.aws.amazon.com/ec2 / bağlantısına tıklayarak EC2 Sanal Sunucusunu seçin.

AWS web sayfasının "IAM" işaretçisini içeren ekran görüntüsü


IAM Kontrol PaneliRoller'e gidin.

AWS web sayfasının "IAM Rolleri" işaretçisini içeren ekran görüntüsü


IAM rolleri web sayfasında "Rol oluştur" düğmesini tıklayın.


Ardından “AWS hizmeti”, “EC2”yi seçin. Ve “İleri” butonuna tıklayın.

AWS web sayfasının "IAM Rolleri yapılandırması" işaretçisini içeren ekran görüntüsü


Daha sonra arama kutusunda “AmazonEC2FullAccess” , “AmazonEC2FullAccess” , “IAMFullAccess” , “AWSCloudFormationFullAccess” i bulun ve ardından “İzin ekle” butonuna tıklayın.


Ve ardından “İleri” düğmesine tıklayın.

AWS web sayfasının AdministratorAccess izni işaretçisini içeren ekran görüntüsü

Daha sonra “Rol adı” girişine “Eksctl_Role” yazın.

Ve “Rol oluştur” butonuna tıklayın.

İzin rolü yapılandırmasını gösteren işaretçiyi içeren AWS web sayfasının ekran görüntüsü


Rol en sonunda oluşturulur.


9. Adım: IAM Rolünü eksctl ile bağlayın

AWS EC2 bulut sunucusu web sayfasına gidin. “KuberbetesServer”ı seçin. Ardından “Eylemler”“Güvenlik”“IAM Rolünü Değiştir”i tıklayın.


KubernetesServer Security düğmesinin işaretçisini içeren AWS web sayfasının ekran görüntüsü



“Eksctl_Role” u seçin ve ardından “IAM rolünü güncelle” düğmesini tıklayın.


Elsctl_Role IAM rolünün işaretçisini içeren AWS web sayfasının ekran görüntüsü


Artık IAM Rolünüz “EKS_Server” ve eksctl aracınıza bağlandı.

Adım 10: eksctl kümesi oluşturun


Amazon EKS (Elastic Kubernetes Service) kümesi, AWS üzerinde yönetilen bir Kubernetes ortamıdır ve kurulum, ölçeklendirme ve bakım gibi karmaşık altyapı görevlerini otomatikleştirir. Container mimarisine alınmış uygulamaları dağıtmak, yönetmek ve ölçeklendirmek, operasyonları kolaylaştırmak ve geliştiricilerin temel altyapıyı yönetmek yerine kodlamaya odaklanmalarını sağlamak için verimli, güvenli ve AWS için optimize edilmiş bir platform sağladığından önemlidir.


Artık EKS kümenizi kurmanın zamanı geldi.


Bunu başarmak için şu adımları izleyin:


  1. Aşağıdaki komutu özel bilgilerinizle değiştirin.
 eksctl create cluster --name cluster-name \ --region region-name \ --node-type instance-type \ --nodes-min 2 \ --nodes-max 2 \ --zones <AZ-1>,<AZ-2>


Örneğin benim durumumda şöyle görünüyor.

 eksctl create cluster --name zufarexplainedit \ --region eu-north-1 \ --node-type t3.micro


  1. Değiştirilen komutu yürütün ve küme oluşturma işleminin tamamlanmasını sabırla bekleyin. AWS CloudFormation web sayfasında EKS kümesi durumunun "oluşturuluyor" olarak belirtildiğini fark edeceksiniz.


EKS kümesinin "oluşturuluyor" durumunu görebileceğiniz AWS CloudFormation işaretçisini içeren AWS web sayfasının ekran görüntüsü


Küme oluşturma prosedürü genellikle yaklaşık 20 dakika sürer. Tamamlandığında, terminal işlemin sonucunu gösterecektir.


EKS kümesi oluşturma sonucunu görebileceğiniz AWS EC2 terminali işaretçisini içeren AWS web sayfasının ekran görüntüsü


Ayrıca AWS CloudFormation web sayfasında başarılı EKS kümesi oluşturma durumunu doğrulayabilirsiniz.


EKS kümesi oluşturma sonucunu görebileceğiniz AWS CloudFormation işaretçisini içeren AWS web sayfasının ekran görüntüsü


Adım 11: Kubernetes Dağıtımı yaml dosyasını oluşturun

Kubernetes Dağıtımı YAML dosyası, Kubernetes kümesindeki belirli bir uygulamanın veya hizmetin nasıl yönetileceğini ve bakımının nasıl yapılacağını tanımlayan, YAML biçiminde yazılmış bir yapılandırma komut dosyasıdır. Uygulamayı çalıştıran konteynerlerin dağıtımını, ölçeklenmesini, güncellenmesini ve izlenmesini düzenlemek için talimatlar içerir. Bu dosya, kapsayıcı görüntüsü, istenen kopya sayısı, kaynak sınırları, ortam değişkenleri, ağ ayarları ve daha fazlası gibi ayrıntıları içerir. Dağıtım YAML dosyası, bir Kubernetes kümesine uygulandığında uygulamanın istenen durumunu sağlar; istenen kullanılabilirlik ve güvenilirlik düzeyini korumak için kapsayıcıların oluşturulmasını, ölçeklendirilmesini ve kurtarılmasını otomatik olarak yönetir.


Artık Kubernetes kümesi, eksctl, kubectl yüklenip yapılandırıldığından, bir Kubernetes Deployment yaml dosyası oluşturabilirsiniz.


Aşağıdaki komutu çalıştırarak bunu yapabilirsiniz.

 touch hello-app-deployment.yaml


Daha sonra aşağıdaki komutu çalıştırarak bu dosyayı düzenleyin.

 vi hello-app-deployment.yaml


Bu içeriği hello-app-deployment.yaml dosyasına ekleyin.

 apiVersion: apps/v1 kind: Deployment metadata: name: zufarexplainedit-hello-app labels: app: hello-app spec: replicas: 2 selector: matchLabels: app: hello-app template: metadata: labels: app: hello-app spec: containers: - name: hello-app image: zufarexplainedit/hello imagePullPolicy: Always ports: - containerPort: 8080 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1


Artık hello-app-deployment.yaml oluşturuldu ve kullanıma hazır.


Adım 12: Kubernetes Service yaml dosyasını oluşturun

Kubernetes Hizmeti YAML dosyası, bir grup bölme için ağ soyutlamasını tanımlayan ve bunlara bir Kubernetes kümesi içinde tutarlı bir şekilde erişilmesine olanak tanıyan, YAML biçiminde yazılmış bir yapılandırma komut dosyasıdır. Bu dosya, hizmetin diğer hizmetler veya harici istemciler tarafından nasıl keşfedilmesi, erişilmesi ve yük dengelemesinin nasıl yapılması gerektiğini özetlemektedir. Hizmet türü (ClusterIP, NodePort, LoadBalancer), bağlantı noktası numaraları, bölmeleri tanımlamak için seçiciler ve daha fazlası gibi özellikleri içerir. Hizmet YAML dosyası, bir Kubernetes kümesine uygulandığında trafiği uygun bölmelere yönlendiren bir sanal IP ve bağlantı noktası oluşturur, temeldeki bölme değişikliklerini soyutlar ve iletişim için kararlı bir uç nokta sağlayarak kesintisiz bağlantı ve dinamik ölçeklendirme sağlar.


Kubernetes kümesi, eksctl, kubectl kurulup yapılandırıldığından Kubernetes Service yaml dosyası oluşturabilirsiniz.


Bunu yapmak için aşağıdaki komutu çalıştırarak bir Kubernetes Service yaml dosyası oluşturmanız gerekir.

 touch hello-app-service.yaml


Daha sonra aşağıdaki komutu çalıştırarak bu dosyayı düzenleyin.

 vi hello-app-service.yaml


Bu içeriği hello-app-deployment.yaml dosyasına ekleyin.

 apiVersion: v1 kind: Service metadata: name: zufarexplainedit-hello-app-service labels: app: hello-app spec: selector: app: hello-app ports: - port: 8080 targetPort: 8080 type: LoadBalancer

Artık hello-app-service.yaml oluşturuldu ve kullanıma hazır.


Adım 13: Kubernetes kümesini kubectl kullanarak test edin

Kubernetes EKS kümeniz başarıyla yüklenip yapılandırıldığında ve Kubernetes hizmetiniz ile dağıtım dosyalarınız hazır olduğunda, kubectl komutlarını kullanarak işleri test etmenin zamanı geldi.


  1. Dağıtımı Uygulayın.

    Dağıtım yapılandırmasını uygulamak için aşağıdaki komutu kullanın.

 kubectl apply -f hello-app-deployment.yaml

Bu, belirtilen sayıda replika ve sürekli güncelleme stratejisiyle bir dağıtım oluşturarak uygulamanızın kullanılabilirliğini ve yönetilebilirliğini sağlar.


2. Hizmeti Uygulayın.

Daha sonra hizmet yapılandırmasını uygulayın.

 kubectl apply -f hello-app-service.yaml

Bu, uygulamanızı internete açık hale getiren LoadBalancer tipi bir hizmet kuracaktır.

LoadBalancer'ın sağlanmasının ve harici bir IP adresi almasının kısa bir süre alabileceğini unutmayın.


  1. LoadBalancer Durumunu kontrol edin.

    Kullanarak hizmetinizin durumunu izleyin.

 kubectl get service zufarexplainedit-hello-app-service

Harici bir IP atandığında uygulamanıza erişmeye neredeyse hazırsınız demektir.


  1. Uygulamanıza Erişin.

    Bir web tarayıcısı kullanarak, atanan harici IP adresini ve ardından :8080'i girin. Kısa bir süre sonra sayfa yüklenecek ve "MerhabaDünya" mesajı görüntülenecektir. İlk yüklemenin birkaç saniye sürebileceğini unutmayın.


    Merhaba uygulaması web sayfasının ekran görüntüsü


Kubectl Komutlarıyla Temizleme

Kubernetes ortamınızdaki kaynakları düzenlemeniz gerektiğinde dağıtımları, bölmeleri ve hizmetleri etkili bir şekilde kaldırmak için aşağıdaki kubectl komutlarını kullanabilirsiniz.


1. Tüm Dağıtımları Sil .

Tüm dağıtımları silmek için aşağıdaki komutu kullanabilirsiniz.

 kubectl delete deployments --all

Bu eylem, kümenizde hiçbir etkin dağıtım örneğinin kalmamasını sağlar.


2. Tüm Bölmeleri Sil .

Bir dağıtım tarafından yönetilsin ya da yönetilmesin tüm pod'ları silmeniz gerekiyorsa aşağıdaki komutu kullanabilirsiniz.

 kubectl delete pods --all

Bölmelerin temizlenmesi, küme durumunuzu sıfırlamanıza veya yeni dağıtımlara hazırlanmanıza yardımcı olabilir.


3. Tüm Hizmetleri Sil .

Uygulamalarınızı ağa maruz bırakan servisleri temizlemek için aşağıdaki komutu kullanabilirsiniz.

 kubectl delete services --all

Hizmetlerin kaldırılması kesinti gerektirebilir; bu nedenle devam etmeden önce olası sonuçları göz önünde bulundurun.

Amazon EKS Kümesini Silme

Çalışan düğümler, ağ bileşenleri ve diğer kaynaklar dahil olmak üzere eksctl ile oluşturulan belirtilen Amazon EKS kümesiyle ilişkili tüm kaynakları kaldırmak için aşağıdaki komutu kullanabilirsiniz.

 eksctl delete cluster --name {your cluster name} --region {your region name}

Bu benim için.

 eksctl delete cluster --name zufarexplainedit --region eu-north-1

Bu eylem geri alınamayacağı ve veri kaybına neden olacağı için kümeyi durdurma konusunda emin olduğunuzdan emin olun.



Adım 14: “KubernetesServer” AWS EC2 Sanal Sunucu örneğine yeni bir kullanıcı ekleyin ve yapılandırın

Şimdi “KubernetesServer” AWS EC2 Virtual Server örneğine yeni bir ansible-admin kullanıcısı ekleyelim.


Bunu yapmak için bu komutu kullanın.

 sudo useradd ansible-admin


Daha sonra ansible-admin kullanıcısının şifresini ayarlayın.

 sudo passwd ansible-admin


Ayrıca sudoers dosyasını düzenleyerek kullanıcı ayrıcalıklarını yapılandırmanız gerekir.

 sudo visudo


Bu sudoers dosyasına “ansible-admin ALL=(ALL) ALL” ekleyin.

AWS EC2 Sanal Sunucu bulut sunucusu terminalinin yönetici ayrıcalıklarına işaret eden ekran görüntüsü


Ayrıca, PasswordAuthentication'ı etkinleştirmek için /etc/ssh/sshd_config dosyasını düzenlemeniz gerekir.

 sudo vi /etc/ssh/sshd_config 


AWS EC2 Sanal Sunucu bulut sunucusu terminalinin yönetici ayarları işaretçisini içeren ekran görüntüsü


Daha sonra bu değişiklikleri yapmak için hizmeti yeniden yüklemeniz gerekir.

 sudo service sshd reload


Bu komutu yürütmenin bir sonucu olarak şunu göreceksiniz:

AWS EC2 Sanal Sunucu bulut sunucusu terminalinin sshd yeniden yükleme sonucunu gösteren işaretçiyi içeren ekran görüntüsü


Artık diğer tüm komutlara sudo eklemekten kaçınmak için bu komutu kullanabilirsiniz.

 sudo su - ansible-admin


Adım 15: AWS EC2 Sanal Sunucu örneğinde anahtar oluşturun

Bu makalenin ilerleyen kısımlarında K8s EC2 sanal sunucu örneği gibi uzak sunucuları yönetmeyi planlıyorsunuz. Bu yüzden SSH anahtarlarını ayarlamanız gerekiyor.


 ssh-keygen


Bu komutu yürütmenin bir sonucu olarak şunu göreceksiniz:

AWS EC2 Sanal Sunucu bulut sunucusu terminalinin ssh-keygen sonucunu gösteren işaretçiyi içeren ekran görüntüsü


Artık SSH anahtarları oluşturuldu ve kullanıma hazır.

Adım 16: Ansible için localhost'ta Parolasız SSH kimlik doğrulamasını yapılandırın

Ansible, uzak sunuculardaki görevleri otomatikleştirmek için tasarlanmıştır. Parolasız SSH kimlik doğrulaması, Ansible'ın bu sunuculara manuel parola girişine gerek kalmadan bağlanmasını sağlar.

Ansible-admin kullanıcısının SSH anahtarını kullanarak bilgisayarınızdan başka bir bilgisayara (172.31.34.41 IP adresindeki gibi) güvenli bir bağlantı oluşturmak için bu komutu yürütün.


 sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address}


Benim durumumda şöyle görünüyor.

 sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub [email protected] 


Başarılı şifresiz ssh kimlik doğrulama kurulumu sonucunun ekran görüntüsü


Artık “Eklenen anahtar(lar)ın sayısı: 1”i görebilirsiniz. Bu, parolasız SSH kimlik doğrulama kurulumunun başarıyla tamamlandığı anlamına gelir.


Adım 17: AnsibleServer EC2 örneğinde Ansible ana bilgisayarlarını yapılandırın

Bir Ansible playbook'u çalıştırdığınızda, üzerinde çalışması gereken ana bilgisayarları belirtirsiniz. Bu adımda KubernetesServer EC2 örnek ana bilgisayarını belirtmeniz gerekir. Bunu yapmak için “ [Module 6]: Ansible”da geçtiğiniz adımların aynısını tekrarlamanız gerekir.


Aşağıdaki komutu çalıştırarak KubernetesServer EC2 sample hostunu bulalım.

 sudo ifconfig 


"ifconfig" dosyasının ekran görüntüsü


KubernetesServer EC2 örnek ana bilgisayarını bulduktan sonra aşağıdaki komutu çalıştırarak onu Ansible hosts dosyasına ekleyebilirsiniz.

 sudo vi /etc/ansible/hosts 


Ansible ve kubernetes ana bilgisayarlarına sahip "hosts" dosyalarının ekran görüntüsü


Referans olarak “[kubernetes]” ifadesini de ekleyebilirsiniz

18. Adım: Kubernetes görevleri için yeni bir Ansible çalışma kitabı oluşturun

Artık Kubernetes'in kurulumu tamam olduğuna ve kullanıma hazır olduğuna göre, işlem hattınız için Kubernetes görevlerini içeren yeni bir Ansible oyun kitabı oluşturabilirsiniz. Bu başucu kitabı, Ansible'ın uygulamanızı Kubernetes kümesinde kubectl komutlarıyla çalıştırmasına olanak tanır.


Bunu nasıl yapabileceğiniz aşağıda açıklanmıştır:


  1. Yeni bir Ansible oynatma kitabı dosyası oluşturarak başlayın. Sadece bu komutu kullanın.
 touch kubernetes-hello-app.yml


  1. Ardından yeni oluşturulan hello-app.yml dosyasını düzenleyin. Bu komutla düzenlemek için açın.
 vi kubernetes-hello-app.yml


  1. Dosyanın içine aşağıdakini yazın:
 --- - hosts: kubernetes tasks: - name: deploy regapp on kubernetes command: kubectl apply -f hello-app-deployment.yaml - name: create service for regapp command: kubectl apply -f hello-app-service.yaml - name: update deployment with new pods if image updated in docker hub command: kubectl rollout restart deployment.apps/zufarexplainedit-hello-app

Kubernetes görevleri için Ansible playbook kullanıma hazır.


Adım 19: Jenkins ile Kubernetes görevleri için yeni bir Ansible oyun kitabını entegre edin

Kubernetes, Ansible ve Kubernetes görevlerine yönelik Ansible oyun kitabı artık ayarlandığına ve kullanıma hazır olduğuna göre, bunu Jenkins ile entegre edebilirsiniz.


  1. JenkinsServer → Jenkins kontrol paneli → Yeni Öğe'ye gidin.

  2. “CD-Job” adında yeni Jenkins Freestyle projesi oluşturun.


    Jenkins'in yeni serbest stil projesi "CD-Job"un ekran görüntüsü


  3. “Tamam” butonuna tıklayın.

  4. “Derleme Sonrası Eylemler” bölümüne gidin.

  5. “Derleme sonrası eylem ekle” düğmesini tıklayın.

  6. “Derleme yapıtlarını SSH üzerinden gönder” seçeneğini seçin.

  7. SSH Sunucusu olarak “AnsibleServer”ı seçin.

  8. Bu komutu “exec command” girişine ekleyin.


 sudo -u ansible-admin ansible-playbook /opt/docker/kubernetes-hello-app.yml


  1. “Uygula” ve “Kaydet” butonlarına tıklayın.

  2. Jenkins kontrol paneli → “CI_CD_Pipeline” → Yapılandır → “Derleme Sonrası Eylemler” bölümüne gidin.

  3. “Derleme sonrası eylem ekle” düğmesini tıklayın.

  4. “Başka projeler oluştur” seçeneğini seçin.

  5. “Diğer projeler oluştur” bölümüne gidin.

  6. “Yalnızca derleme kararlıysa tetikle” seçeneğini seçin.

  7. “Yapılacak Proje” girişine “CD-İşi” ekleyin.



    "Diğer projeler oluştur" bölümünün ekran görüntüsü


  8. “Uygula” ve “Kaydet” butonlarına tıklayın.


Artık boru hattının tamamen bittiğini ve kullanıma hazır olduğunu düşünebilirsiniz.


Adım 20: Son İşlem Hattı Sürümünün Test Edilmesi

Şimdi son boru hattı versiyonunu teste tabi tutmanın zamanı geldi.


Jenkins → Jenkins kontrol paneli → "CI_CD_Pipeline" seçeneğine gidin.


"Şimdi Oluştur" düğmesini tıklayın.


Sonuçları görmek için derleme konsolu günlüklerini inceleyin.


Derleme konsolu günlüklerinin ekran görüntüsü


Derleme konsolu günlüklerinde "CD İşi"nin tetiklendiğini ve son durumun BAŞARI olarak işaretlendiğini fark edeceksiniz.

4

Ayrıca yeni Docker görüntüsünün eklendiğini onaylamak için Dockerhub'a gidebilirsiniz.

Son olarak uygulamanıza bir web tarayıcısı kullanarak erişebilirsiniz. Atanan harici IP adresini ve ardından ":8080" girin. Kısa bir süre sonra sayfa yüklenecek ve "MerhabaDünya" mesajı görüntülenecektir.


Çözüm

Bu modern CI/CD hattını kurma konusunda iyi iş çıkardınız!

Harika bir iş başardınız ve gerçek bir kahramansınız!


Tüm çabanız için teşekkürler!




Yazar hakkında

Zufar Sunagatov, modern yazılım sistemleri tasarlama konusunda tutkulu, deneyimli, kıdemli bir yazılım mühendisidir.


Zufar Sunagatov