Önceki makalemde mikro hizmetlerin büyüleyici dünyasına daldım - . Bu, mikro hizmetler ve kalıpları hakkındaki kapsamlı makale serimin başlangıcıydı. Mikro Hizmet Mimarisi Desenleri Bölüm 1: Ayrıştırma Desenleri 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 ve gibi çağdaş DevOps araçlarının gücünden yararlanacağız. Öyleyse bu yolculuğa başlayalım! AWS, Docker, Kubernetes, Ansible, Git, Apache Maven Jenkins [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. düğmesine tıklayın. AWS Hesabı Oluştur 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. düğmesini tıklayın. Oturum Aç Bu web sayfasına gerekli tüm kimlik bilgilerini girin. 3. Adım: EC2 Sanal Sunucusunu Bulun Arama kutusunda EC2'yi bulun. seçeneğine tıklayarak EC2 Sanal Sunucusunu seçin. EC2 Hizmeti düğmesini tıklayın. Örneği Başlat 4. Adım: “Ad ve etiketler” bölümünü yapılandırın bölümüne gidin. “Ad ve etiketler” bölümüne yeni bir AWS EC2 Sanal Sunucu örneği için bir ad girin. "Ad" Ayrıca seçeneğine tıklayarak sanal sunucunuz için ek etiketler ekleyebilirsiniz. “Ek etiket ekle” Adım 5: “Uygulama ve İşletim Sistemi Görüntüleri (Amazon Machine Image)” bölümünü yapılandırın bölümüne gidin. "Uygulama ve İşletim Sistemi Görüntüleri (Amazon Machine Image)" Sanal sunucuyla oynamak için: ÜCRETSİZ Sanal sunucunuz için işletim sistemini seçin - . Amazon Linux bölümünde sahip bir makine seçin. Amazon Machine Image (AMI) Ücretsiz kullanıma uygun etiketine 6. Adım: “Örnek türü” bölümünü yapılandırın bölümüne gidin. “Örnek türü” Sanal sunucuyla oynamak için: ÜCRETSİZ bölümünde sahip bir tür seçin. Bulut Sunucusu türü Ücretsiz kullanıma uygun etiketine 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 bölümüne gidin. "Depolamayı yapılandır" Sanal sunucuyla oynamak için: ÜCRETSİZ Varsayılan ayarları değiştirmeyin. Ücretsiz kullanıma uygun müşteriler sahip olabilir. , 30 GB EBS Genel Amaçlı (SSD) veya Manyetik depolama alanına Adım 8: “Ağ ayarları” bölümünü yapılandırın bölümüne gidin. “Ağ ayarları” Sanal sunucunuzun güvenliğini ayarlamanız gerekmektedir. Bunu yapmak için, butonuna tıklayın. “Güvenlik grubu oluştur” Yeni güvenlik grubunuzun adını bölümüne ekleyin. “Güvenlik grubu adı” bölümüne yeni güvenlik grubunuzun açıklamasını ekleyin. “Açıklama” Varsayılan olarak sanal sunucunuza ( ) üzerinden erişilebilir. Ek bağlantı türlerine ihtiyacınız varsa ek gelen güvenlik grubu kuralları ekleyerek bunları ekleyin. Tür - SSH, Protokol - TCP, Bağlantı Noktası - 22 Adım 9: “Anahtar çifti (giriş)” bölümünü yapılandırın bölümüne gidin. “Anahtar çifti (Giriş)” Henüz oluşturmadıysanız yeni bir anahtar çifti oluşturun. Henüz oluşturmadıysanız: “anahtar çifti” butonuna tıklayın. “Yeni anahtar çifti oluştur” bölümünde yeni anahtar çiftinize bir ad verin. "Anahtar çifti adı" veya anahtar çifti türünü seçin. türünü seçiyorum. RSA ED25519 RSA Özel anahtar dosya biçimini seçin. ve seçimi. biçimini seçiyorum. .pem .ppk .pem düğmesine tıklayın. “Anahtar çifti oluştur” Ö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 düğmesine tıklayarak EC2 Sanal Sunucu örneğini başlatın. “Örneği başlat” EC2 Sanal Sunucu bulut sunucusu oluşturma işlemi tamamlandıktan sonra aşağıdakileri göreceksiniz. Daha sonra butonunu tıklayarak bölümüne gitmelisiniz. “Tüm örnekleri görüntüle” “Instances” 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 bölümündeki talimatları izleyin. [Modül 1]: AWS EC2 Sanal Sunucu Güvenlik grubu kurulumu eklemeyi unutmayın. ve sırasıyla ve bağlantı noktalarında çalışmasına olanak tanır. Jenkins SSH'nin 8080 22 numaralı EC2 Sanal Sunucu örneğinizi ayırt etmek için adını kullanın. “JenkinsServer” Yeni bir AWS EC2 bulut sunucusu için güvenlik grubu ve oluşturun. Bunları makalenin ilerleyen kısımlarında yeniden kullanabilirsiniz. "JenkinsServer" "CI_CD_Pipeline" "CI_CD_Pipeline_Key_Pair" 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 seçmeli ve ardından butonuna tıklamalısınız. JenkinsServer'ı “Bağlan” Daha sonra bu web sayfasını göreceksiniz. Tekrar butonuna tıklamalısınız. “Bağlan” 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 gidin. web sayfasına Kararlı (LTS) ve Normal sürümler (Haftalık) seçeneklerini görebilirsiniz. LTS seçeneğini seçin. Red Hat/Fedora/Alma/Rocky/CentOS 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 komutunu kopyalayın ve çalıştırın. "sudo get.." 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 komutunu kopyalayıp çalıştırmamız gerekiyor. “sudo rpm..” sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key Bu şekilde 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. "rpm" Adım 5: Java'yı yükleyin Jenkins'i çalıştırmak için EC2 sanal sunucu örneğimize yüklememiz gerekiyor. Java yüklemek için bu komutu kullanın. Java'yı sudo amazon-linux-extras install java-openjdk11 -y Bu komutu kullanarak doğru şekilde yüklenip yüklenmediğini doğrulayın: Java'nı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 yüklemeniz gerekir. fontconfig 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 düğmesini tıklamanız gerekir. "Yeni Öğe" Github "Serbest Stil Projesi" adını girin ("boru hattı" adı bundan sonra kullanılacaktır) ve ardından düğmesine tıklayın. "Tamam" Daha sonra boru hattının sağlayın. Açıklaması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ış 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: Ekiplerin geliştirme süresini azaltmalarına ve başarılı dağıtımları artırmalarına yardımcı oldukları için [1]. ücretsiz ve açık kaynaklı DevOps 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 düğmesine tıklayın ve ardından düğmesine tıklayın. “Jenkins'i Yönet” “Eklentileri Yönet” Adım 4: Github Jenkins eklentisini bulun düğmesine tıklayın. “Kullanılabilir eklentiler” eklentisi Arama kutusunu bulun. Github eklentisini seçin. Github Adım 5: Github Jenkins eklentisini yükleyin eklentisini seçin. Ve ardından düğmesine tıklayın. Github “Yeniden başlatmadan yükle” 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 butonuna ve ardından butonuna tıklamanız gerekiyor. “Jenkins'i Yönet” “Global araç konfigürasyonu” 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 ve düğmelerini tıklayın**.** "Uygula" "Kaydet" 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 “ girişine yapıştırmanız yeterlidir. Ardından Git'in işlem hattıyla entegrasyonunu tamamlamak için ve düğmelerini tıklayın. Depo URL'si” "Uygula" "Kaydet" 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 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. Apache Maven, 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 dizinine gidin. “/opt” 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 bağlantısını kullanın. https://maven.Apache.org/download.cgi 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 dosyasını düzenleyin. .bash_profile vi .bash_profile ve M2_HOME değişkenlerini ekleyin. JAVA_HOME için JDK11 yolunu, değişkeni için maven dizininin yolunu atayın. JAVA_HOME M2_HOME JDK yolunu bulmak için bu komutu kullanın. sudo find / -name java VIM nasıl kullanılır? Dosyayı için veri eklemek üzere klavyedeki düğmesine basın. düzenlemek “ I “ Dosyayı için “esc” klavye tuşuna basın ve “:w” yazın. kaydetmek Dosyadan için klavye tuşuna basın ve yazın. çıkmak “esc” “:q” Değişiklikleri kaydedin. Daha sonra sistem değişkenlerini yenilemek için bu komutu yürütün. source .bash_profile doğrulamak için bu komutu kullanın. $PATH'i echo $PATH doğrulamak için bu komutu kullanın. Apache Maven'i 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 yazın. “Maven” eklentisini seçin. “Maven Entegrasyonu” İndirme işleminin bitmesini bekleyin. Daha sonra butonuna tıklayın. “En üst sayfaya dö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: gidin “Gösterge Paneli” → “Jenkins'i Yönet” → “Global Araç Yapılandırması” → “JDK” seçeneğine “JDK Ekle” düğmesine tıklayın. "Otomatik olarak yükle" seçeneğinin işaretini kaldırın. Daha sonra bölümüne gidin. butonuna tıklayın. “Maven” “Maven Ekle” "Otomatik olarak yükle" seçeneğinin işaretini kaldırın. Ardından ve yolunu ekleyin. adı MAVEN_HOME ve butonlarına tıklayın. “Uygula” “Kaydet” 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. düğmesine tıklayın. “Derleme adımı ekle” seçeneğini seçin. “Üst düzey Maven hedeflerini çağır” “Maven Versiyonu” olarak seçin “Apache-Maven”i . girişine komutunu ekleyin. “Hedefler” “temiz paket” butonuna tıklayın. “Gelişmiş” girişine “pom.xml” ekleyin. “POM” Son olarak Apache Maven'in işlem hattı ile entegrasyonunu tamamlamak için ve butonlarına tıklamalısınız. "Uygula" "Kaydet" 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 " 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. AWS EC2 Sanal Sunucu örneğini başlatma" 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 EC2 sanal sunucusu üzerindeki Docker grubuna eklemeniz gerekmektedir. “ansible-admin”i “AnsibleServer” 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ünde sunulan projesini kullandıysanız bu proje deposunda zaten Dockerfile bulunduğundan yeni bir Dockerfile oluşturmanıza gerek yoktur. [Modül 3]: Git ve Github” “Merhaba” 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 EC2 örneğine yapıştırarak ilerleyin. Bu aktarımın boru hattı yoluyla daha da otomatikleştirileceğini unutmamak önemlidir. "AnsibleServer" 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 oturum açma işlemini tamamladınız ve artık teste devam etmeye hazırsınız. Docker'da Docker ortamını ve Dockerfile'ı test etme Adım 8: 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 bölümündeki talimatları izleyin. [Modül 1]: AWS EC2 Sanal Sunucu Güvenlik grubu kurulumu eklemeyi unutmayın. ve sırasıyla ve bağlantı noktalarında çalışmasına olanak tanır. Ansible SSH'nin 8080 22 numaralı EC2 Sanal Sunucu örneğinizi ayırt etmek için adını kullanın. “AnsibleServer” Yeni bir EC2 örneği için güvenlik grubunu ve yeniden kullanabilirsiniz. "AnsibleServer" "CI_CD_Pipeline" "CI_CD_Pipeline_Key_Pair"i 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 butonuna tıklayın. “Bağlan” Daha sonra bu web sayfasını göreceksiniz. Tekrar butonuna tıklamalısınız. “Bağlan” 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ı Ardından yeniden başlatın. "ansible-server" ile değiştirin. 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 kullanıcısı ekleyelim. ansible-admin Bunu yapmak için şu komutu kullanın: sudo useradd ansible-admin Daha sonra kullanıcısının şifresini ayarlayın. ansible-admin sudo passwd ansible-admin Ayrıca dosyasını düzenleyerek kullanıcı ayrıcalıklarını yapılandırmanız gerekir. sudoers sudo visudo Bu dosyasına ekleyin. sudoers “ansible-admin ALL=(ALL) ALL” Ayrıca, PasswordAuthentication'ı etkinleştirmek için dosyasını düzenlemeniz gerekir. /etc/ssh/sshd_config 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'ı EC2 sanal sunucu örneğinize yükleyebilirsiniz. “AnsibleServer” 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 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 yüklü olduğu diğer EC2 Sanal Sunucu örnekleriyle entegre etmek için eklentisini yüklemeniz gerekir. , "AnsibleServer" Kubernetes'in “SSH üzerinden Yayınla” → “ → → seçeneğine gidin. “Gösterge Paneli” Jenkins'i Yönet” “Sistemi Yapılandır” “Kullanılabilir eklentiler” Daha sonra arama kutusuna yazın. “SSH üzerinden yayınla” düğmesine tıklayın. İndirme işleminin bitmesini bekleyin. “Yeniden başlatmadan yükle” 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: → → → gidin. “Kontrol Paneli” “Jenkins'i Yönet” “Sistemi Yapılandır” “SSH Üzerinden Yayınla” seçeneğine 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 ve butonlarına tıklayın. “Uygula” “Kaydet” Burada Jenkins eklentisini yapılandırmayı tamamladınız. “SSH üzerinden yayınla” 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 klasörüne gidin. “/opt” cd /opt Orada yeni bir klasörü oluşturun. “docker” sudo mkdir docker Bu klasörüne ayrıcalıklar verin. “docker” sudo chown ansible-admin:ansible-admin docker Şimdi bu komutu çalıştırarak klasörünün ayrıcalıklarını kontrol edin. “docker” ll klasörüne kullanıcısı ile erişilebildiğini görebilirsiniz. “Docker” “ansible-admin” Github eklentisini entegre edin Adım 10: “SSH üzerinden yayınla” ardışık düzene Artık 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 " a aktarabilirsiniz. . "SSH üzerinden yayınla" JenkinsServer" “AnsibleSunucusu” Peki, Github eklentisini ardışık düzene entegre etmek için şu adımları izlemeniz gerekir: "SSH üzerinden yayınla" “Kontrol Paneli” → “CI_CD_Pipeline” → “Yapılandır” → “Derleme Sonrası Eylemler” seçeneğine gidin. düğmesine tıklayın. “Derleme sonrası eylem ekle” seçeneğini seçin. “Derleme yapıtlarını SSH üzerinden gönder” bölümündeki girişine ı ekleyin**.** “SSH Sunucusu” “Ad” “AnsibleServer” bölümündeki girişine ekleyin**.** “Aktarım Seti” “Kaynak dosyalar” “target/*.jar” bölümündeki girişine ekleyin**.** “Transfer Seti” “Öneki kaldır” “hedef/” bölümündeki girişine ekleyin**.** “Aktarım Kümesi” “Uzak dizin” “//opt/docker/” Şimdilik, 'Aktarım Kümesi' bölümünün altındaki 'Exec komutu' girişine boş bir dize koymanız yeterlidir. Son olarak eklentisinin boru hattı ile entegrasyonunu tamamlamak için ve butonlarına basmalısınız. “SSH üzerinden yayınla” “Uygula” “Kaydet” "SSH üzerinden yayınla" Github eklentisini test edin Adım 11: İşlem hattına entegre edilmiş Artık bir proje jar yapıtını " dan a aktarmak için güncellenmiş işlem hattınızı kullanabilirsiniz. Bunu yapmak için düğmesine tıklamanız gerekir. Sonuç olarak yapım geçmişinde başarılı bir iş sonucu göreceksiniz. JenkinsServer" "AnsibleServer" “Şimdi Oluştur” AWS EC2 terminalinizi açarsanız. Boru hattının iyi çalışıp çalışmadığını kontrol edebilirsiniz. “AnsibleServer” 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: Playbook'unuzda, parametresini bir IP adresleri veya ana bilgisayar adları listesine ayarlayabilirsiniz. Ana bilgisayarları doğrudan Playbook'ta belirtin: hosts 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ı . Envanter dosyası kullanın: /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. /etc/ansible/hosts 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 ansible-admin@172.31.34.41 Artık görebilirsiniz. Bu, parolasız SSH kimlik doğrulama kurulumunun başarıyla tamamlandığı anlamına gelir. “Eklenen anahtar(lar)ın sayısı: 1”i 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 dosyasını düzenleyin. Bu komutla düzenlemek için açın. hello-app.yml 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. entegre edin Adım 14: Ansible Docker görevlerini ardışık düzene Artık 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. " dan 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. "SSH üzerinden yayınla" JenkinsServer" "AnsibleServer" 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. girişine komutunu ekleyin. “Exec command” “sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml” Son olarak, Ansible Docker görevlerinin işlem hattıyla entegrasyonunu tamamlamak için ve düğmelerine tıklayın. "Uygula" "Kaydet" Adım 15: İşlem hattına entegre edilmiş "Docker görevleriyle Ansible playbook"u test edin Artık bir proje jar eserini " dan 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 düğmesine tıklamanız gerekir. Sonuç olarak yapım geçmişinde başarılı bir iş sonucu göreceksiniz. JenkinsServer" "AnsibleServer" “Şimdi Oluştur” 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 kümesiyle daha fazla etkileşim kurmak için kubectl komut satırı aracını kuracaksınız. Kubernetes 1. Adım: Bir AWS EC2 Sanal Sunucu örneğini başlatın Bu adımı tamamlamak için bu eğitimin " bölümündeki talimatları kullanın. AWS EC2 Sanal Sunucu örneğini başlatma" Güvenlik grubu kurulumu eklemeyi unutmayın. ve sırasıyla ve bağlantı noktalarında çalışmasına olanak tanır. Tüm araçların SSH'nin 8080 22 numaralı EC2 Sanal Sunucu örneğinizi ayırt etmek için adını kullanın. “K8sServer” Yeni bir EC2 örneği için güvenlik grubunu ve yeniden kullanabilirsiniz. "K8sServer" "CI_CD_Pipeline" "CI_CD_Pipeline_Key_Pair"i 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ı ardından yeniden başlatın. “kubernetes-server” ile değiştirin ve sudo init 6 Ana makine adınız değiştirildi. 4. Adım: AWS CLI sürümünü kontrol edin sürümünü kontrol etmek için bu komutu kullanın. AWS aws --version Bu şekilde mevcut aws-cli sürümünüzü görebilirsiniz. sürümünü görebiliyorsanız en son sürümü indirmelisiniz. aws-cli/1.18 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. kopyalayıp yapıştırın. curl komutunu Ö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 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. Kubectl, 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 → → → → veya → seçeneğine gitmeniz gerekir. AWS Belgeler Amazon EKS Kullanıcı Kılavuzu kubectl'i yükleme güncelleme Linux Veya bağlantısını tıklamanız yeterlidir. https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html Ö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 , 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. Eksctl 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 EC2 örneğinize eklemeniz gerekir. “KubernetesServer” Bunu yapmak için arama kutusunda EC2'yi bulmanız gerekir. / bağlantısına tıklayarak EC2 Sanal Sunucusunu seçin. https://us-east-1.console.aws.amazon.com/ec2 → gidin. IAM Kontrol Paneli Roller'e rolleri web sayfasında düğmesini tıklayın. IAM "Rol oluştur" Ardından Ve butonuna tıklayın. “AWS hizmeti”, “EC2”yi seçin. “İleri” Daha sonra arama kutusunda , , , i bulun ve ardından butonuna tıklayın. “AmazonEC2FullAccess” “AmazonEC2FullAccess” “IAMFullAccess” “AWSCloudFormationFullAccess” “İzin ekle” Ve ardından düğmesine tıklayın. “İleri” Daha sonra girişine yazın. “Rol adı” “Eksctl_Role” Ve butonuna tıklayın. “Rol oluştur” Rol en sonunda oluşturulur. 9. Adım: IAM Rolünü eksctl ile bağlayın AWS EC2 bulut sunucusu web sayfasına gidin. Ardından → → “KuberbetesServer”ı seçin. “Eylemler” “Güvenlik” “IAM Rolünü Değiştir”i tıklayın. u seçin ve ardından düğmesini tıklayın. “Eksctl_Role” “IAM rolünü güncelle” Artık IAM Rolünüz ve eksctl aracınıza bağlandı. “EKS_Server” Adım 10: eksctl kümesi oluşturun 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. Amazon EKS (Elastic Kubernetes Service) 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 olarak belirtildiğini fark edeceksiniz. "oluşturuluyor" 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ı oluşturma durumunu doğrulayabilirsiniz. EKS kümesi Adım 11: Kubernetes Dağıtımı yaml dosyasını oluşturun 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. Kubernetes Dağıtımı YAML dosyası, 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 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 Hizmeti YAML dosyası, 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 ile oluşturulan belirtilen Amazon EKS kümesiyle ilişkili tüm kaynakları kaldırmak için aşağıdaki komutu kullanabilirsiniz. eksctl 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 AWS EC2 Virtual Server örneğine yeni bir kullanıcısı ekleyelim. “KubernetesServer” ansible-admin Bunu yapmak için bu komutu kullanın. sudo useradd ansible-admin Daha sonra kullanıcısının şifresini ayarlayın. ansible-admin sudo passwd ansible-admin Ayrıca dosyasını düzenleyerek kullanıcı ayrıcalıklarını yapılandırmanız gerekir. sudoers sudo visudo Bu dosyasına ekleyin. sudoers “ansible-admin ALL=(ALL) ALL” Ayrıca, PasswordAuthentication'ı etkinleştirmek için dosyasını düzenlemeniz gerekir. /etc/ssh/sshd_config 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 EC2 sanal sunucu örneği gibi uzak sunucuları yönetmeyi planlıyorsunuz. Bu yüzden SSH anahtarlarını ayarlamanız gerekiyor. K8s 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 ansible-admin@172.31.34.41 Artık görebilirsiniz. Bu, parolasız SSH kimlik doğrulama kurulumunun başarıyla tamamlandığı anlamına gelir. “Eklenen anahtar(lar)ın sayısı: 1”i 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 dosyasını düzenleyin. Bu komutla düzenlemek için açın. hello-app.yml 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 modern yazılım sistemleri tasarlama konusunda tutkulu, deneyimli, kıdemli bir yazılım mühendisidir. Zufar Sunagatov, 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" "Что значит «вариативный»? Объясняем простыми словами"