Ö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.
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.
Bu web sayfasına gerekli tüm kimlik bilgilerini girin.
3. Adım: EC2 Sanal Sunucusunu Bulun
Arama kutusunda EC2'yi bulun.
EC2 Hizmeti seçeneğine tıklayarak EC2 Sanal Sunucusunu seçin.
Örneği Başlat düğmesini tıklayın.
4. Adım: “Ad ve etiketler” bölümünü yapılandırın
“Ad ve etiketler” bölümüne gidin.
"Ad" bölümüne yeni bir AWS EC2 Sanal Sunucu örneği için bir ad girin.
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.
Sanal sunucuyla ÜCRETSİZ oynamak için:
- Sanal sunucunuz için işletim sistemini seçin - Amazon Linux .
- Amazon Machine Image (AMI) bölümünde Ücretsiz kullanıma uygun etiketine sahip bir makine seçin.
6. Adım: “Örnek türü” bölümünü yapılandırın
“Örnek türü” bölümüne gidin.
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) .
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.
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.
Adım 8: “Ağ ayarları” bölümünü yapılandırın
“Ağ ayarları” bölümüne gidin.
Sanal sunucunuzun güvenliğini ayarlamanız gerekmektedir. Bunu yapmak için,
- “Güvenlik grubu oluştur” butonuna tıklayın.
- Yeni güvenlik grubunuzun adını “Güvenlik grubu adı” bölümüne ekleyin.
- “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.
Adım 9: “Anahtar çifti (giriş)” bölümünü yapılandırın
“Anahtar çifti (Giriş)” bölümüne gidin.
Henüz oluşturmadıysanız yeni bir anahtar çifti oluşturun.
Henüz “anahtar çifti” oluşturmadıysanız:
- “Yeni anahtar çifti oluştur” butonuna tıklayın.
- "Anahtar çifti adı" bölümünde yeni anahtar çiftinize bir ad verin.
- RSA veya ED25519 anahtar çifti türünü seçin. RSA türünü seçiyorum.
- Özel anahtar dosya biçimini seçin. .pem ve .ppk seçimi. .pem biçimini seçiyorum.
- “Anahtar çifti oluştur” düğmesine tıklayın.
- Ö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.
EC2 Sanal Sunucu bulut sunucusu oluşturma işlemi tamamlandıktan sonra aşağıdakileri göreceksiniz.
Daha sonra “Tüm örnekleri görüntüle” butonunu tıklayarak “Instances” bölümüne gitmelisiniz.
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ına → EC2 Yönetim Konsolu Kontrol Paneli → Bulut Sunucuları'na gidin.
Daha sonra JenkinsServer'ı seçmeli ve ardından “Bağlan” butonuna tıklamalısınız.
Daha sonra bu web sayfasını göreceksiniz. Tekrar “Bağlan” butonuna tıklamalısınız.
Artık EC2 sanal sunucu örneği çevrimiçi terminalini görebilirsiniz.
3. Adım: Jenkins deposunu indirin
Artık Jenkins'i EC2 sanal sunucu örneğinize indirmeniz gerekiyor.
Şu talimatları izleyin:
Jenkins indirme web sayfasına gidin.
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 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.
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 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.
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.
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.
Github "Serbest Stil Projesi" adını girin ("boru hattı" adı bundan sonra kullanılacaktır) ve ardından "Tamam" düğmesine tıklayın.
Daha sonra boru hattının Açıklamasını sağlayın.
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:
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.
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.
Adım 4: Github Jenkins eklentisini bulun
“Kullanılabilir eklentiler” düğmesine tıklayın.
Github eklentisi Arama kutusunu bulun.
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.
Github eklentisinin indirilmesinin bitmesini bekleyin.
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.
Daha sonra ana sayfada “Jenkins'i Yönet” butonuna ve ardından “Global araç konfigürasyonu” butonuna tıklamanız gerekiyor.
Daha sonra Global Tool Configuration web sayfasında Git bölümüne gitmelisiniz.
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.
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.
Yapı geçmişinden ilk yapıyı açın.
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.
[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
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.
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:
- “Kontrol Paneli” → “Jenkins'i Yönet” → “Eklentileri Yönet” → “Kullanılabilir” seçeneğine gidin.
- Arama kutusuna “Maven” yazın.
- “Maven Entegrasyonu” eklentisini seçin.
İndirme işleminin bitmesini bekleyin.
Daha sonra “En üst sayfaya dön” butonuna tıklayın.
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:
- “Gösterge Paneli” → “Jenkins'i Yönet” → “Global Araç Yapılandırması” → “JDK” seçeneğine gidin
- “JDK Ekle” düğmesine tıklayın.
- "Otomatik olarak yükle" seçeneğinin işaretini kaldırın.
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.
“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:
- "Kontrol Paneli" → "CI_CD_Pipeline" → "Yapılandır" → "Oluşturma Adımları" seçeneğine gidin.
- “Derleme adımı ekle” düğmesine tıklayın.
- “Üst düzey Maven hedeflerini çağır” seçeneğini seçin.
- “Maven Versiyonu” olarak “Apache-Maven”i seçin .
- “Hedefler” girişine “temiz paket” komutunu ekleyin.
- “Gelişmiş” butonuna tıklayın.
- “POM” girişine “pom.xml” ekleyin.
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.
Artık EC2 Sanal Sunucu örneği çevrimiçi terminalini görebilirsiniz.
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.
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.
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.
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.
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.
Daha sonra bu web sayfasını göreceksiniz. Tekrar “Bağlan” butonuna tıklamalısınız.
Artık EC2 sanal sunucu örneği çevrimiçi terminalini görebilirsiniz.
Ş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:
Bu ana bilgisayar adını "ansible-server" ile değiştirin. Ardından yeniden başlatın.
sudo init 6
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.
Ayrıca, PasswordAuthentication'ı etkinleştirmek için /etc/ssh/sshd_config dosyasını düzenlemeniz gerekir.
sudo vi /etc/ssh/sshd_config
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:
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:
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:
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.
“Yeniden başlatmadan yükle” düğmesine tıklayın. İndirme işleminin bitmesini bekleyin.
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.
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.
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.
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.
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:
- “Kontrol Paneli” → “CI_CD_Pipeline” → “Yapılandır” → “Derleme Sonrası Eylemler” seçeneğine gidin.
- “Derleme sonrası eylem ekle” düğmesine tıklayın.
- “Derleme yapıtlarını SSH üzerinden gönder” seçeneğini seçin.
- “SSH Sunucusu” bölümündeki “Ad” girişine “AnsibleServer” ı ekleyin**.**
- “Aktarım Seti” bölümündeki “Kaynak dosyalar” girişine “target/*.jar” ekleyin**.**
- “Transfer Seti” bölümündeki “Öneki kaldır” girişine “hedef/” ekleyin**.**
- “Aktarım Kümesi” bölümündeki “Uzak dizin” girişine “//opt/docker/” ekleyin**.**
- Şimdilik, 'Aktarım Kümesi' bölümünün altındaki 'Exec komutu' girişine boş bir dize koymanız yeterlidir.
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.
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:
- Ana bilgisayarları doğrudan Playbook'ta belirtin: Playbook'unuzda,
hosts
parametresini bir IP adresleri veya ana bilgisayar adları listesine ayarlayabilirsiniz. - 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 ö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.
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]
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:
- Yeni bir Ansible oynatma kitabı dosyası oluşturarak başlayın. Sadece bu komutu kullanın.
touch hello-app.yml
- Ardından yeni oluşturulan
hello-app.yml
dosyasını düzenleyin. Bu komutla düzenlemek için açın.
vi hello-app.yml
- 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.
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.
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:
- "Gösterge Paneli" → "CI_CD_Pipeline" → "Yapılandır" → "Derleme Sonrası Eylemler" → "Derleme yapıtlarını SSH üzerinden gönder" seçeneğine gidin.
- “Exec command” girişine “sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml” komutunu ekleyin.
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.
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.
Artık EC2 Sanal Sunucu örneği çevrimiçi terminalini görebilirsiniz.
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.
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.
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-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.
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.
İ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.
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 AWS → Belgeler → Amazon EKS → Kullanıcı Kılavuzu → kubectl'i yükleme veya güncelleme → Linux 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.
Ö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'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
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.
IAM Kontrol Paneli → Roller'e gidin.
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.
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.
Daha sonra “Rol adı” girişine “Eksctl_Role” yazın.
Ve “Rol oluştur” butonuna tıklayın.
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.
“Eksctl_Role” u seçin ve ardından “IAM rolünü güncelle” düğmesini tıklayın.
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:
- 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
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.
Küme oluşturma prosedürü genellikle yaklaşık 20 dakika sürer. Tamamlandığında, terminal işlemin sonucunu gösterecektir.
Ayrıca AWS CloudFormation web sayfasında başarılı EKS kümesi oluşturma durumunu doğrulayabilirsiniz.
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.
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.
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.
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.
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.
Ayrıca, PasswordAuthentication'ı etkinleştirmek için /etc/ssh/sshd_config dosyasını düzenlemeniz gerekir.
sudo vi /etc/ssh/sshd_config
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:
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:
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]
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
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
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:
- Yeni bir Ansible oynatma kitabı dosyası oluşturarak başlayın. Sadece bu komutu kullanın.
touch kubernetes-hello-app.yml
- 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
- 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.
JenkinsServer → Jenkins kontrol paneli → Yeni Öğe'ye gidin.
“CD-Job” adında yeni Jenkins Freestyle projesi oluşturun.
“Tamam” butonuna tıklayın.
“Derleme Sonrası Eylemler” bölümüne gidin.
“Derleme sonrası eylem ekle” düğmesini tıklayın.
“Derleme yapıtlarını SSH üzerinden gönder” seçeneğini seçin.
SSH Sunucusu olarak “AnsibleServer”ı seçin.
Bu komutu “exec command” girişine ekleyin.
sudo -u ansible-admin ansible-playbook /opt/docker/kubernetes-hello-app.yml
“Uygula” ve “Kaydet” butonlarına tıklayın.
Jenkins kontrol paneli → “CI_CD_Pipeline” → Yapılandır → “Derleme Sonrası Eylemler” bölümüne gidin.
“Derleme sonrası eylem ekle” düğmesini tıklayın.
“Başka projeler oluştur” seçeneğini seçin.
“Diğer projeler oluştur” bölümüne gidin.
“Yalnızca derleme kararlıysa tetikle” seçeneğini seçin.
“Yapılacak Proje” girişine “CD-İşi” ekleyin.
“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ü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.
- Citi (Londra), MTS (Moskova) ve diğerleri gibi şirketler için Java, Kotlin, AWS, Docker ve Kubernetes kullanarak yüksek performanslı dağıtılmış sistemler geliştirdi ( daha fazla bilgi için Zufar'ın LinkedIn profilini takip edebilirsiniz ).
- Sıfırdan açık kaynaklı bir çevrimiçi pazar yeri olan Ice Latte kuruldu (Zufar'ın ekibine katılabilir ve GitHub'daki projesine katkıda bulunabilirsiniz: https://github.com/Sunagatov/Online-Store ).
- Bilgi ve deneyimlerini başkalarıyla paylaşmak için ZufarExplainedIT topluluğunu kurdu (Zufar'ın IT Telegram topluluğunu takip edebilirsiniz: https://t.me/zufarexplained ).
- 3000 dakikadan fazla mentorluk yaptı ve ADPlist'te 60 oturum yöneterek gelecek vadeden yetenekleri yetiştirdi ( ADPlist'te Zufar'dan mentorluk alabilirsiniz ).
- Konferanslarda ve BT YouTube kanallarında konuşmacı olarak aktif kitleler, değerli görüşlerini paylaşıyor (YouTube videolarının örnekleri arasında şunlar yer alıyor: “Тестовое собеседование Java разработчика #27 - Зуфар Сунагатов” , “Hevesli Konuşmacılar Öğle Yemeğinde Yıldırım Konuşmaları 28 Mayıs” ).
- Her biri 7000'den fazla görüntülemeye sahip son derece popüler BT makaleleri yazmıştır (makalelerinin örnekleri şunlardır: "Mikro Hizmet Mimarisi Desenleri Bölüm 1: Ayrıştırma Modelleri" , "Что значит «вариативный»? Объясняем простыми словами" ).