Subscribe to my channel https://t.me/zufarexplained
Walkthroughs, tutorials, guides, and tips. This story will teach you how to do something new or how to do something better.
This story contains new, firsthand information uncovered by the writer.
अपने पिछले लेख में, मैंने माइक्रोसर्विसेज की आकर्षक दुनिया - माइक्रोसर्विस आर्किटेक्चर पैटर्न भाग 1: डीकंपोजिशन पैटर्न के बारे में विस्तार से बताया। यह माइक्रोसर्विसेज और उनके पैटर्न पर मेरी व्यापक लेख श्रृंखला की शुरुआत थी।
जबकि तार्किक कदम इस श्रृंखला के भाग 2 को जारी रखना होगा, मैंने फैसला किया है कि अगली चीज जो मैं तलाशना और आपको बताना चाहूंगा वह इन माइक्रोसर्विसेज को अंतिम उपयोगकर्ता तक निर्बाध रूप से पहुंचाने की महत्वपूर्ण प्रक्रिया है।
सीआई/सीडी ग्राहकों तक ऐप पहुंचाने की एक तकनीक है, जिसे ऐप विकास के विभिन्न चरणों में स्वचालन जोड़कर हासिल किया जाता है। मेरा मानना है कि सीआई/सीडी (कंटीन्यूअस इंटीग्रेशन एंड कंटीन्यूअस डिप्लॉयमेंट) को समझने से डेवलपर्स को इस बात की बेहतर समझ हासिल करने में मदद मिल सकती है कि प्रोजेक्ट रिपॉजिटरी की सीमाओं से परे बैकएंड प्रोजेक्ट कलाकृतियां कैसे मौजूद हैं। यह समझ किसी डेवलपर के परिप्रेक्ष्य में मौलिक बदलाव भी ला सकती है। अपने काम को केवल कोड की पंक्तियों के रूप में देखने के बजाय, वे अपने प्रोजेक्ट के व्यापक संदर्भ को एक मूल्यवान उत्पाद के रूप में अपनाना शुरू कर सकते हैं।
इस लेख में, हमारा लक्ष्य व्यावहारिक अनुप्रयोग के माध्यम से सीआई/सीडी प्रक्रिया के रहस्य को उजागर करना है। हम आपको चरण-दर-चरण ट्यूटोरियल के माध्यम से ले जाएंगे, इसे मॉड्यूल द्वारा मॉड्यूल में विभाजित करेंगे, जहां आप मैन्युअल रूप से सीआई/सीडी पाइपलाइन का निर्माण करेंगे। ऐसा करने के लिए, हम AWS, Docker, Kubernetes, Ansible, Git, Apache Maven और Zenkins जैसे समकालीन DevOps टूल की शक्ति का उपयोग करेंगे। तो चलिए शुरू करते हैं यह यात्रा!
यह मॉड्यूल AWS EC2 वर्चुअल सर्वर इंस्टेंस के निर्माण के लिए समर्पित है। इस आलेख के भाग के रूप में, आप जेनकिंस, एन्सिबल और कुबेरनेट्स के लिए तीन EC2 इंस्टेंसेस स्थापित करेंगे। अभी के लिए, आप अगले मॉड्यूल के साथ आगे बढ़ सकते हैं और इस मॉड्यूल को "[मॉड्यूल 2]: जेनकिंस", "[मॉड्यूल 6]: एन्सिबल" और "[मॉड्यूल 7]: कुबेरनेट्स" अनुभागों में फिर से देख सकते हैं।
https://aws.amazon.com पर जाएं।
AWS खाता बनाएं बटन पर क्लिक करें।
"AWS खाता बनाएं" बटन के सूचक के साथ AWS मुख्य वेब पेज का स्क्रीनशॉट
खाता बनाएं वेब पेज पर दिए गए निर्देशों का पालन करें.
https://console.aws.amazon.com/console/home पर जाएं। साइन इन बटन पर क्लिक करें.
"साइन इन" बटन के सूचक के साथ AWS मुख्य वेब पेज का स्क्रीनशॉट
इस वेब पेज पर सभी आवश्यक क्रेडेंशियल दर्ज करें।
खोज बॉक्स में EC2 ढूंढें.
खोज बॉक्स के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
EC2 सेवा पर क्लिक करके EC2 वर्चुअल सर्वर चुनें।
"EC2" AWS सेवा के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
बटन लॉन्च इंस्टेंस पर क्लिक करें।
"लॉन्च इंस्टेंस" बटन के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
"नाम और टैग" अनुभाग पर जाएँ।
"नाम और टैग" अनुभाग के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
"नाम" अनुभाग में नए AWS EC2 वर्चुअल सर्वर इंस्टेंस के लिए एक नाम प्रदान करें।
"नाम और टैग" अनुभाग में "नाम" इनपुट बॉक्स के संकेतक के साथ AWS वेब पेज का स्क्रीनशॉट
आप ''अतिरिक्त टैग जोड़ें'' पर क्लिक करके अपने वर्चुअल सर्वर के लिए अतिरिक्त टैग भी जोड़ सकते हैं।
"एप्लिकेशन और ओएस इमेज (अमेज़ॅन मशीन इमेज)" अनुभाग पर जाएं।
"एप्लिकेशन और ओएस इमेज (अमेज़ॅन मशीन इमेज)" अनुभाग के संकेतक के साथ एडब्ल्यूएस वेब पेज का स्क्रीनशॉट
वर्चुअल सर्वर के साथ मुफ़्त में खेलने के लिए:
"एप्लिकेशन और ओएस इमेज (अमेज़ॅन मशीन इमेज)" अनुभाग में "ओएस" और "मशीन प्रकार" बटन के संकेतक के साथ एडब्ल्यूएस वेब पेज का स्क्रीनशॉट
''इंस्टेंस प्रकार'' अनुभाग पर जाएँ।
"इंस्टेंस प्रकार" अनुभाग के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
वर्चुअल सर्वर के साथ मुफ़्त में खेलने के लिए:
इंस्टेंस प्रकार अनुभाग में फ्री टियर पात्र टैग के साथ एक प्रकार का चयन करें।
मेरे लिए यह t2.micro (परिवार: t2 1cCPU 1 GiB मेमोरी वर्तमान पीढ़ी: सत्य) है।
"इंस्टेंस प्रकार" अनुभाग में "इंस्टेंस प्रकार" ड्रॉपडाउन के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
''भंडारण कॉन्फ़िगर करें'' अनुभाग पर जाएँ।
"कॉन्फ़िगर स्टोरेज" अनुभाग के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
वर्चुअल सर्वर के साथ मुफ़्त में खेलने के लिए:
डिफ़ॉल्ट सेटिंग्स न बदलें. फ्री टियर पात्र ग्राहक 30 जीबी ईबीएस सामान्य प्रयोजन (एसएसडी) या मैग्नेटिक स्टोरेज प्राप्त कर सकते हैं।
"कॉन्फ़िगर स्टोरेज" अनुभाग में स्टोरेज के संभावित कॉन्फ़िगरेशन के संकेतक के साथ AWS वेब पेज का स्क्रीनशॉट
"नेटवर्क सेटिंग" अनुभाग पर जाएँ।
"नेटवर्क सेटिंग्स" अनुभाग के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
आपको अपने वर्चुअल सर्वर की सुरक्षा स्थापित करने की आवश्यकता है। यह करने के लिए,
डिफ़ॉल्ट रूप से, आपका वर्चुअल सर्वर ( टाइप - एसएसएच, प्रोटोकॉल - टीसीपी, पोर्ट - 22 ) के माध्यम से पहुंच योग्य है। यदि आपको अतिरिक्त कनेक्शन प्रकारों की आवश्यकता है, तो अतिरिक्त इनबाउंड सुरक्षा समूह नियम जोड़कर उन्हें जोड़ें।
"नेटवर्क सेटिंग्स" अनुभाग में "सुरक्षा समूह" के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
''कुंजी जोड़ी (लॉगिन)'' अनुभाग पर जाएँ।
"केट जोड़ी (लॉगिन)" अनुभाग के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
यदि आपने इसे अभी तक नहीं बनाया है तो एक नई कुंजी-जोड़ी बनाएं।
"केट जोड़ी (लॉगिन)" अनुभाग में "कुंजी जोड़ी नाम", "कुंजी जोड़ी प्रकार", "निजी कुंजी फ़ाइल प्रारूप" के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
यदि आपने अभी तक "कुंजी-जोड़ी" नहीं बनाई है:
"लॉन्च इंस्टेंस" बटन पर क्लिक करके EC2 वर्चुअल सर्वर इंस्टेंस लॉन्च करें।
"लॉन्च इंस्टेंस" बटन के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
EC2 वर्चुअल सर्वर इंस्टेंस निर्माण प्रक्रिया पूरी होने के बाद, आप निम्नलिखित देखेंगे।
AWS वेब पेज का स्क्रीनशॉट 'सफलता' अधिसूचना प्रदर्शित करता है, जो EC2 वर्चुअल सर्वर इंस्टेंस निर्माण प्रक्रिया के सफल समापन का संकेत देता है
फिर आपको " सभी उदाहरण देखें" बटन पर क्लिक करके "उदाहरण" अनुभाग पर जाना चाहिए।
EC2 इंस्टेंस चलाने के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
अब आप देख सकते हैं कि आपका AWS EC2 वर्चुअल सर्वर इंस्टेंस चल रहा है।
अब, आइए EC2 वर्चुअल सर्वर इंस्टेंस पर जेनकिंससर्वर को कॉन्फ़िगर करें।
जेनकींस चलाने के लिए आपको एक वर्चुअल सर्वर की आवश्यकता है।
इस चरण को पूरा करने के लिए इस ट्यूटोरियल के [मॉड्यूल 1]: एडब्ल्यूएस ईसी2 वर्चुअल सर्वर अनुभाग के निर्देशों का पालन करें और जेनकिंससर्वर नाम से एक ईसी2 वर्चुअल सर्वर इंस्टेंस बनाएं।
सुरक्षा समूह सेटअप जोड़ना न भूलें. यह जेनकींस और एसएसएच को क्रमशः पोर्ट 8080 और 22 पर काम करने की अनुमति देता है।
अपने EC2 वर्चुअल सर्वर इंस्टेंस को अलग करने के लिए "JenkinsServer" नाम का उपयोग करें।
नए "जेनकिंससर्वर" AWS EC2 उदाहरण के लिए "CI_CD_Pipeline" सुरक्षा समूह और "CI_CD_Pipeline_Key_Pair" बनाएं। आप लेख में आगे उनका पुन: उपयोग कर सकते हैं।
AWS कंसोल होम पेज → EC2 मैनेजमेंट कंसोल डैशबोर्ड → इंस्टेंसेस पर जाएँ।
फिर आपको जेनकिंस सर्वर चुनना चाहिए और फिर "कनेक्ट" बटन पर क्लिक करना चाहिए।
"कनेक्ट" बटन के सूचक के साथ AWS "इंस्टेंस" वेब पेज का स्क्रीनशॉट
फिर आपको यह वेब पेज दिखाई देगा। आपको फिर से "कनेक्ट" बटन पर क्लिक करना चाहिए।
"कनेक्ट" बटन के सूचक के साथ AWS "कनेक्ट टू इंस्टेंस" वेब पेज का स्क्रीनशॉट
अब आप EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल देख सकते हैं।
AWS EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल का स्क्रीनशॉट
अब आपको अपने EC2 वर्चुअल सर्वर इंस्टेंस पर जेनकींस डाउनलोड करना होगा।
इन निर्देशों का पालन करें:
जेनकींस डाउनलोड वेबपेज पर जाएं।
आप स्थिर (एलटीएस) और नियमित रिलीज़ (साप्ताहिक) विकल्प देख सकते हैं। Red Hat/Fedora/Alma/Rocky/CentOS LTS विकल्प चुनें।
आपको यह वेब पेज दिखाई देगा.
जेनकींस डाउनलोड वेब पेज का स्क्रीनशॉट
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
अब जेनकींस डाउनलोड हो गया है।
जेनकींस स्थापना को पूरा करने के लिए, हमें जेनकींस कुंजी आयात करने की आवश्यकता है।
जेनकिंस कुंजी को आयात करने के लिए हमें "sudo rpm.." कमांड को कॉपी करना होगा और इसे निष्पादित करना होगा।
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
इस तरह "आरपीएम" पैकेज प्रबंधक यह सत्यापित कर सकता है कि आपके द्वारा इंस्टॉल किए गए जेनकींस पैकेज बिल्कुल जेनकींस प्रोजेक्ट द्वारा प्रकाशित हैं, और उनके साथ छेड़छाड़ या दूषित नहीं किया गया है।
जेनकींस को चलाने के लिए, हमें अपने EC2 वर्चुअल सर्वर इंस्टेंस पर जावा इंस्टॉल करना होगा।
जावा स्थापित करने के लिए, इस कमांड का उपयोग करें।
sudo amazon-linux-extras install java-openjdk11 -y
सत्यापित करें कि इस कमांड का उपयोग करके जावा सही ढंग से स्थापित किया गया था:
java -version
आपको कुछ ऐसा ही दिखेगा.
स्थापित JDK 11 के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल का स्क्रीनशॉट
जेनकींस को चलाने के लिए, आपको हमारे EC2 वर्चुअल सर्वर इंस्टेंस पर फॉन्टकॉन्फिग इंस्टॉल करना होगा।
इस आदेश का प्रयोग करें.
sudo yum install fontconfig java-11-openjdk -y
फ़ॉन्टकॉन्फिग एक लाइब्रेरी है जिसे सिस्टम-वाइड फ़ॉन्ट कॉन्फ़िगरेशन, अनुकूलन और एप्लिकेशन एक्सेस प्रदान करने के लिए डिज़ाइन किया गया है। यह जेनकींस के लिए आवश्यक है क्योंकि जेनकींस में ऐसी विशेषताएं हैं जो फ़ॉन्ट प्रस्तुत करती हैं।
पहले के चरणों में, आपने एक विशिष्ट जेनकींस रिपॉजिटरी का उपयोग करने के लिए अपने EC2 वर्चुअल सर्वर इंस्टेंस को कॉन्फ़िगर किया था और फिर आपने इस रिपॉजिटरी से जुड़ी GPG कुंजी आयात की थी। अब, आपको वह कमांड चलाने की आवश्यकता है जो जेनकिंस पैकेज को खोजने के लिए उन सभी रिपॉजिटरी को खोजेगी जिनके बारे में वह जानता है, जिसमें आपके द्वारा जोड़ा गया जेनकींस भी शामिल है। एक बार जब उसे जेनकिंस रिपॉजिटरी में जेनकिंस पैकेज मिल जाएगा, तो वह इसे डाउनलोड और इंस्टॉल कर लेगा।
आइए इस कमांड को चलाएं।
sudo yum install jenkins -y
आप इस कमांड का उपयोग करके जेनकींस शुरू कर सकते हैं।
sudo systemctl start jenkins
यह जांचने के लिए कि जेनकींस चल रहा है, इस कमांड का उपयोग करें।
sudo systemctl status jenkins
आपको आउटपुट वैसा ही दिखेगा जैसा नीचे स्क्रीनशॉट में है:
स्थापित जेनकींस के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल का स्क्रीनशॉट
जेनकींस को अब सक्रिय होना चाहिए।
जेनकिंस एप्लिकेशन तक पहुंचने के लिए, कोई भी वेब ब्राउज़र खोलें और अपने EC2 इंस्टेंस का सार्वजनिक आईपी पता या डोमेन नाम और उसके बाद पोर्ट 8080 दर्ज करें।
http://<your-ec2-ip>:8080
पहली बार जब आप जेनकींस एक्सेस करेंगे, तो इसे ऑटोजेनरेटेड पासवर्ड से लॉक कर दिया जाएगा।
प्रशासक पासवर्ड के सूचक के साथ AWS EC2 वर्चुअल सर्वर पर स्थापित जेनकींस का स्क्रीनशॉट
आपको निम्नलिखित कमांड का उपयोग करके यह पासवर्ड प्रदर्शित करना होगा।
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
इस पासवर्ड को कॉपी करें, अपने ब्राउज़र पर वापस लौटें, इसे एडमिनिस्ट्रेटर पासवर्ड फ़ील्ड में पेस्ट करें और "जारी रखें" पर क्लिक करें।
फिर आप इस वेब पेज को देख पाएंगे।
"कस्टमाइज़ जेनकींस" वेब पेज के पॉइंटर के साथ AWS EC2 वर्चुअल सर्वर पर स्थापित जेनकींस का स्क्रीनशॉट
अब, आप अपने जेनकींस सर्वर का उपयोग कर सकते हैं।
अब, चूंकि जेनकींस ठीक काम कर रहा है, आप जेनकींस पाइपलाइन बनाना शुरू कर सकते हैं। जेनकींस पाइपलाइन बनाने के लिए आपको एक नया "फ्रीस्टाइल प्रोजेक्ट" बनाना होगा। एक नया "फ्रीस्टाइल प्रोजेक्ट" बनाने के लिए आपको जेनकिंस डैशबोर्ड पर जाना होगा और "नया आइटम" बटन पर क्लिक करना होगा।
"नया आइटम" बटन के सूचक के साथ जेनकींस डैशबोर्ड वेब पेज का स्क्रीनशॉट
जीथब "फ्रीस्टाइल प्रोजेक्ट" का नाम दर्ज करें ("पाइपलाइन" नाम आगे उपयोग किया जाएगा) और फिर "ओके" बटन पर क्लिक करें।
"आइटम नाम" आइटम बॉक्स के सूचक के साथ जेनकींस न्यू आइटम वेब पेज का स्क्रीनशॉट
फिर पाइपलाइन का विवरण प्रदान करें।
"विवरण" इनपुट बॉक्स के सूचक के साथ जेनकींस जॉब कॉन्फ़िगरेशन वेब पेज का स्क्रीनशॉट
फिर "लागू करें" और "सहेजें" बटन पर क्लिक करें। उसके बाद, इसका मतलब है कि आपने पाइपलाइन का मूल आधार तैयार कर लिया है जो इस ट्यूटोरियल में बनने जा रहा है।
अब चूंकि जेनकींस AWS EC2 वर्चुअल सर्वर इंस्टेंस पर चल रहा है, आप पाइपलाइन के साथ Git को कॉन्फ़िगर कर सकते हैं।
Git एक स्वतंत्र और खुला स्रोत वितरित संस्करण नियंत्रण प्रणाली (VCS) है जिसे सॉफ्टवेयर टीमों को एक विशेष प्रकार के डेटाबेस में कोड में हर संशोधन पर नज़र रखने में मदद करने के लिए डिज़ाइन किया गया है। यदि कोई गलती हो जाती है, तो डेवलपर्स घड़ी को पीछे कर सकते हैं और टीम के सभी सदस्यों के लिए व्यवधान को कम करते हुए गलती को ठीक करने में मदद के लिए कोड के पुराने संस्करणों की तुलना कर सकते हैं। वीसीएस विशेष रूप से उपयोगी है
सबसे लोकप्रिय संस्करण नियंत्रण प्रणाली के रूप में Git हमें आपके प्रोजेक्ट Github रिपॉजिटरी से नवीनतम कोड को आपके EC2 वर्चुअल सर्वर इंस्टेंस पर खींचने में सक्षम बनाता है जहां आपका जेनकींस स्थापित है।
Git इंस्टॉल करने के लिए इस कमांड का उपयोग करें।
sudo yum install git -y
अब इस कमांड का उपयोग करके सत्यापित करें कि Git काम कर रहा है।
git --version
अब Git EC2 वर्चुअल सर्वर इंस्टेंस पर ठीक काम कर रहा है।
चूंकि Git EC2 वर्चुअल सर्वर इंस्टेंस पर ठीक से काम कर रहा है, हम अब जेनकींस को Git के साथ एकीकृत कर सकते हैं।
इस एकीकरण को शुरू करने के लिए आइए जेनकिंस जीथब प्लगइन इंस्टॉल करें।
जेनकींस डैशबोर्ड अनुभाग पर जाएँ।
जेनकींस डैशबोर्ड का स्क्रीनशॉट
"जेनकींस प्रबंधित करें" बटन पर क्लिक करें और फिर "प्लगइन्स प्रबंधित करें" बटन पर क्लिक करें।
"प्लगइन्स प्रबंधित करें" बटन के सूचक के साथ जेनकींस डैशबोर्ड का स्क्रीनशॉट
"उपलब्ध प्लगइन्स" बटन पर क्लिक करें।
"उपलब्ध प्लगइन्स" बटन के सूचक के साथ जेनकींस प्लगइन मैनेजर वेब पेज का स्क्रीनशॉट
Github प्लगइन खोज बॉक्स ढूंढें।
"जीथब" प्लगइन के पॉइंटर के साथ जेनकिंस प्लगइन मैनेजर वेब पेज का स्क्रीनशॉट
जीथब प्लगइन चुनें.
जीथब प्लगइन चुनें. और फिर "रीस्टार्ट किए बिना इंस्टॉल करें" बटन पर क्लिक करें।
"रीस्टार्ट किए बिना इंस्टॉल करें" बटन के पॉइंटर के साथ जेनकिंस प्लगइन मैनेजर वेब पेज का स्क्रीनशॉट
Github प्लगइन डाउनलोडिंग समाप्त होने तक प्रतीक्षा करें।
डाउनलोडिंग जीथब प्लगइन के साथ जेनकींस प्लगइन मैनेजर वेब पेज का स्क्रीनशॉट
हाँ! जेनकींस जीथब प्लगइन स्थापित है।
अब जैसे ही GitHub जेनकींस प्लगइन स्थापित हो गया है, आप अंततः जेनकींस को Git के साथ एकीकृत करने के लिए इस प्लगइन को कॉन्फ़िगर कर सकते हैं। ऐसा करने के लिए आपको "शीर्ष पृष्ठ पर वापस जाएं" बटन पर क्लिक करके मुख्य पृष्ठ पर लौटना होगा।
"शीर्ष पृष्ठ पर वापस जाएं" बटन के सूचक के साथ जेनकिंस प्लगइन मैनेजर वेब पेज का स्क्रीनशॉट
फिर मुख्य पृष्ठ पर, आपको "जेनकींस प्रबंधित करें" बटन पर क्लिक करना होगा और फिर "ग्लोबल टूल कॉन्फ़िगरेशन" बटन पर क्लिक करना होगा।
"ग्लोबल टूल कॉन्फ़िगरेशन" बटन के पॉइंटर के साथ जेनकिंस प्लगइन मैनेजर वेब पेज का स्क्रीनशॉट
फिर ग्लोबल टूल कॉन्फ़िगरेशन वेब पेज पर आपको Git अनुभाग पर जाना चाहिए।
"नाम" और "पाथ टू गिट एक्जीक्यूटेबल" इनपुट बॉक्स के पॉइंटर के साथ जेनकींस ग्लोबल टूल कॉन्फ़िगरेशन वेब पेज का स्क्रीनशॉट
Git अनुभाग में, आपको कंप्यूटर पर Git का नाम और पथ प्रदान करके Git को कॉन्फ़िगर करना होगा।
फिर "लागू करें" और "सहेजें" बटन** पर क्लिक करें।**
यहां, आपने जेनकिंस जीथब प्लगइन को कॉन्फ़िगर करना समाप्त कर लिया है।
अब, चूंकि जेनकिंस जीथब प्लगइन स्थापित और कॉन्फ़िगर किया गया है, अब आप इस प्लगइन को अपनी पाइपलाइन में उपयोग करने में सक्षम हैं। यह आपकी पाइपलाइन को, जिसे आपने मॉड्यूल 2 में बनाया है, आपके प्रोजेक्ट कोड को निर्दिष्ट GitHub रिपॉजिटरी से खींचने की अनुमति देगा।
खैर, इस प्लगइन को अपनी पाइपलाइन में एकीकृत करने के लिए आपको सोर्स कोड प्रबंधन अनुभाग में जाना होगा और अपनी पाइपलाइन में Git चुनना होगा। फिर आपको अपना प्रोजेक्ट रिपोजिटरी यूआरएल प्रदान करना होगा। यदि आपका प्रोजेक्ट रिपॉजिटरी Github पर सार्वजनिक है, तो आपको क्रेडेंशियल प्रदान करने की आवश्यकता नहीं है। यदि प्रोजेक्ट रिपॉजिटरी Github पर निजी है, तो आपको क्रेडेंशियल प्रदान करने की आवश्यकता है।
"स्रोत कोड प्रबंधन" सेटिंग्स के साथ जेनकींस जॉब कॉन्फ़िगरेशन वेब पेज का स्क्रीनशॉट
आप मेरे प्रोजेक्ट का उपयोग अगले रिपोजिटरी यूआरएल के साथ कर सकते हैं: https://github.com/Sunagatov/Hello.git ।
बस इसे कॉपी करें और " रिपोजिटरी यूआरएल" इनपुट पर पेस्ट करें। फिर पाइपलाइन के साथ एकीकरण Git को समाप्त करने के लिए "लागू करें" और "सहेजें" बटन पर क्लिक करें।
अब आप Github से किसी प्रोजेक्ट को खींचने के लिए अपनी अद्यतन पाइपलाइन का उपयोग कर सकते हैं। ऐसा करने के लिए आपको **"बिल्ड नाउ"**बटन पर क्लिक करना होगा। परिणामस्वरूप, आप बिल्ड इतिहास में एक सफल निर्माण देखेंगे।
"अभी बनाएं" बटन और "इतिहास बनाएं" अनुभाग के संकेतकों के साथ जेनकींस वेब पेज का स्क्रीनशॉट
बिल्ड इतिहास से पहला बिल्ड खोलें।
सफल नौकरी परिणाम के साथ जेनकींस पुल_कोड_फ्रॉम_जीथब_जॉब का स्क्रीनशॉट
अब आप पहले निर्माण का सफल कार्य परिणाम देख सकते हैं। यदि आप अपना AWS EC2 टर्मिनल खोलते हैं। आप जांच सकते हैं कि पाइपलाइन अच्छी तरह से काम करती है।
बस इस आदेश का प्रयोग करें.
cd /var/lib/jenkins/workspace/{your pipeline name}
इस तरह आप देख सकते हैं कि Github से आपका प्रोजेक्ट आपके AWS EC2 वर्चुअल सर्वर इंस्टेंस पर खींच लिया गया था।
Github प्रोजेक्ट का स्क्रीनशॉट EC2 इंस्टेंस टर्मिनल में डाउनलोड किया गया
अपाचे मावेन सॉफ्टवेयर विकास में व्यापक रूप से उपयोग किया जाने वाला बिल्ड ऑटोमेशन और प्रोजेक्ट प्रबंधन उपकरण है। यह प्रोजेक्ट निर्भरता को प्रबंधित करके और एक सुसंगत निर्माण जीवनचक्र प्रदान करके कोड के संकलन, परीक्षण और पैकेजिंग की प्रक्रिया को सुव्यवस्थित करता है। मेवेन परियोजना संरचना, निर्भरता और कार्यों को परिभाषित करने के लिए XML-आधारित कॉन्फ़िगरेशन फ़ाइलों (POM फ़ाइलों) का उपयोग करता है, जिससे डेवलपर्स जटिल सॉफ़्टवेयर परियोजनाओं को कुशलतापूर्वक प्रबंधित और तैनात कर सकते हैं।
अब जब आपने Git को पाइपलाइन में एकीकृत कर लिया है, तो आप Apache Maven को शामिल करके पाइपलाइन को और बढ़ा सकते हैं जो आपको अपना प्रोजेक्ट बनाने, परीक्षण करने और पैकेज करने में सक्षम बनाता है। ऐसा करने के लिए आपको अपने AWS EC2 वर्चुअल सर्वर इंस्टेंस पर Apache Maven इंस्टॉल करना होगा जहां जेनकींस और Git इंस्टॉल किए गए थे।
अपाचे मावेन को डाउनलोड करने के लिए “/opt” निर्देशिका पर जाएं।
cd /opt
और फिर इस कमांड का उपयोग करें.
sudo wget https://dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz
यह कमांड नवीनतम आधिकारिक अपाचे मावेन डाउनलोड करेगा (आधिकारिक अपाचे मावेन वेबसाइट पर नवीनतम संस्करण देखें)। नवीनतम आधिकारिक अपाचे मावेन रिलीज़ को खोजने के लिए, लिंक https://maven.apache.org/download.cgi का उपयोग करें।
डाउनलोड किए गए संग्रह से अपाचे मावेन को निकालने के लिए इस कमांड का उपयोग करें:
sudo tar -xvzf apache-maven-*.tar.gz
इस कमांड का उपयोग करके रूट फ़ोल्डर में जाएँ।
cd ~
इस आदेश का उपयोग करके .bash_profile फ़ाइल संपादित करें।
vi .bash_profile
JAVA_HOME और M2_HOME वेरिएबल जोड़ें।
JAVA_HOME के लिए JDK11 को पथ और M2_HOME वेरिएबल के लिए मावेन निर्देशिका को पथ निर्दिष्ट करें।
JDK पथ खोजने के लिए, इस कमांड का उपयोग करें।
sudo find / -name java
.bash_profile फ़ाइल के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल वेब पेज का स्क्रीनशॉट
वीआईएम का उपयोग कैसे करें
परिवर्तनों को सुरक्षित करें।
फिर, सिस्टम वेरिएबल्स को रीफ्रेश करने के लिए इस कमांड को निष्पादित करें।
source .bash_profile
$PATH को सत्यापित करने के लिए, इस कमांड का उपयोग करें।
echo $PATH
अपाचे मावेन को सत्यापित करने के लिए, इस कमांड का उपयोग करें।
mvn -v
यदि आपने सब कुछ सही ढंग से किया है, तो आप अपाचे मावेन का संस्करण देख पाएंगे।
Apache Maven के संस्करण के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल वेब पेज का स्क्रीनशॉट
चूँकि Apache Maven का उपयोग EC2 उदाहरण पर किया जा सकता है, आप इसे पाइपलाइन के साथ एकीकृत करने के लिए Apache Maven प्लगइन स्थापित कर सकते हैं।
इसे प्राप्त करने के लिए, इन चरणों का पालन करें:
मेवेन प्लगइन के पॉइंटर के साथ AWS EC2 वर्चुअल सर्वर पर स्थापित जेनकींस का स्क्रीनशॉट
डाउनलोडिंग प्रक्रिया समाप्त होने तक प्रतीक्षा करें।
और फिर "शीर्ष पृष्ठ पर वापस जाएं" बटन पर क्लिक करें।
मेवेन प्लगइन डाउनलोडिंग प्रक्रिया के पॉइंटर के साथ AWS EC2 वर्चुअल सर्वर पर स्थापित जेनकींस का स्क्रीनशॉट
अपाचे मावेन जेनकींस प्लगइन की सफल स्थापना के साथ, अब आप इस प्लगइन का उपयोग उस पाइपलाइन के भीतर करने में सक्षम हैं जिसे आपने मॉड्यूल 2 और 3 में बनाया और अपडेट किया था।
ऐसा करने के लिए, इन चरणों का पालन करें:
JDK कॉन्फ़िगरेशन के पॉइंटर के साथ AWS EC2 वर्चुअल सर्वर पर स्थापित जेनकींस का स्क्रीनशॉट
फिर "मावेन" अनुभाग पर जाएँ। "मावेन जोड़ें" बटन पर क्लिक करें। "स्वचालित रूप से इंस्टॉल करें" को अनचेक करें।
फिर नाम और MAVEN_HOME पथ जोड़ें।
Apache Maven कॉन्फ़िगरेशन के पॉइंटर के साथ AWS EC2 वर्चुअल सर्वर पर स्थापित जेनकींस का स्क्रीनशॉट
"लागू करें" और "सहेजें" बटन पर क्लिक करें।
यहां, आपने अपाचे मावेन जेनकिंस प्लगइन को कॉन्फ़िगर करना समाप्त कर लिया है।
अब जैसे ही Apache Maven GitHub प्लगइन स्थापित और कॉन्फ़िगर किया गया है, अब आप अपनी पाइपलाइन के भीतर Apache Maven का उपयोग करने में सक्षम हैं। यह आपकी पाइपलाइन को, जिसे आपने "[मॉड्यूल 2]: जेनकिंस सर्वर" में बनाया था, एक जार आर्टिफैक्ट बनाने के लिए अपना प्रोजेक्ट कोड बनाने की अनुमति देगा।
अपाचे मावेन को पाइपलाइन में एकीकृत करने के लिए आपको इन चरणों का पालन करना होगा:
"लागू करें" और "सहेजें" बटन के संकेतक के साथ पाइपलाइन कॉन्फ़िगरेशन में "बिल्ड स्टेप्स" अनुभाग का स्क्रीनशॉट
अंत में, आपको पाइपलाइन के साथ अपाचे मावेन के एकीकरण को पूरा करने के लिए "लागू करें" और "सहेजें" बटन पर क्लिक करना चाहिए।
अब आप अपना Github प्रोजेक्ट बनाने के लिए अपनी अद्यतन पाइपलाइन का उपयोग कर सकते हैं। ऐसा करने के लिए आपको **"बिल्ड नाउ"**बटन पर क्लिक करना होगा। परिणामस्वरूप, आप बिल्ड इतिहास में एक सफल कार्य परिणाम देखेंगे।
यदि आप अपना AWS EC2 टर्मिनल खोलते हैं। आप जांच सकते हैं कि पाइपलाइन अच्छी तरह से काम करती है।
बस इस आदेश का प्रयोग करें.
cd /var/lib/jenkins/workspace/{your pipeline name}/target
इस तरह आप JAR आर्टिफैक्ट देख सकते हैं, जो GitHub से आपके प्रोजेक्ट के सफल निर्माण का संकेत देता है।
अब "Ansible Server" नाम से एक नया EC2 इंस्टेंस बनाएं जहां आप Docker और Ansible इंस्टॉल करने जा रहे हैं।
इस चरण को पूरा करने के लिए इस ट्यूटोरियल के " AWS EC2 वर्चुअल सर्वर इंस्टेंस लॉन्च करें" अनुभाग के निर्देशों का उपयोग करें। सुरक्षा समूह सेटअप जोड़ना न भूलें. यह डॉकर और एसएसएच को क्रमशः पोर्ट 8080 और 22 पर काम करने की अनुमति देता है।
"कनेक्ट" बटन पर क्लिक करें।
"कनेक्ट" बटन के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
अब आप EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल देख सकते हैं।
AWS EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल का स्क्रीनशॉट
sudo chown ansible-admin:ansible-admin /opt/docker
अब आपको अपने Ansible EC2 इंस्टेंस पर docker इंस्टॉल करना होगा। ऐसा करने के लिए आपको एक नया डॉकर फ़ोल्डर बनाना होगा।
sudo mkdir /opt/docker
फिर, अगले कमांड को निष्पादित करके डॉकर इंस्टॉल करें।
sudo yum install docker -y
आपको Docker को व्यवस्थापकीय विशेषाधिकार देने के लिए वर्तमान उपयोगकर्ता "ansible-admin" को "AnsibleServer" EC2 वर्चुअल सर्वर पर Docker समूह में जोड़ना होगा।
sudo usermod -a -G docker ansible-admin
इन परिवर्तनों को प्रभावी करने के लिए आपको लॉगआउट और वापस लॉग इन करना होगा।
फिर आप अगला कमांड निष्पादित कर सकते हैं
id ansible-admin
यह देखने के लिए कि नया डॉकर उपयोगकर्ता मौजूद है।
डॉकर उपयोगकर्ता के लिए पॉइंटर के साथ Ansible EC2 इंस्टेंस का स्क्रीनशॉट
अब चूंकि डॉकर Ansible EC2 इंस्टेंस पर स्थापित है, आप इसे अगले कमांड को निष्पादित करके लॉन्च कर सकते हैं।
sudo systemctl start docker
जैसे ही डॉकर शुरू होता है आप अगला कमांड निष्पादित कर सकते हैं
sudo systemctl status docker
यह देखने के लिए कि डॉकर सक्रिय है और अभी चल रहा है।
सक्रिय डॉकर स्थिति के साथ Ansible EC2 इंस्टेंस का स्क्रीनशॉट
पाइपलाइन के अंतिम संस्करण में, प्रक्रिया में आपके GitHub प्रोजेक्ट से एक नई डॉकर छवि बनाना और इसे डॉकर हब पर धकेलना शामिल होगा। इसे पूरा करने के लिए, आपके GitHub प्रोजेक्ट में एक Dockerfile होनी चाहिए।
यदि आपने प्रोजेक्ट "हैलो" का उपयोग किया है जो " [मॉड्यूल 3]: गिट और जीथब" मॉड्यूल में पेश किया गया था, तो आपको एक नया डॉकरफाइल बनाने की आवश्यकता नहीं है क्योंकि इस प्रोजेक्ट रिपॉजिटरी में पहले से ही डॉकरफाइल शामिल है।
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" ]
यदि आपने अपने स्वयं के प्रोजेक्ट रिपॉजिटरी का उपयोग किया है और इसमें डॉकरफाइल नहीं है, तो आपको एक नया डॉकरफाइल बनाना होगा।
एक नई Dockerfile बनाने के लिए, निम्नलिखित कमांड निष्पादित करें, जो नई फ़ाइल बनाएगी।
sudo touch Dockerfile
फिर आप इस फ़ाइल को कमांड के अनुक्रम से भर सकते हैं जो बताता है कि कंटेनरीकृत एप्लिकेशन वातावरण कैसे बनाया जाए। इन आदेशों में छवि में फ़ाइलों की प्रतिलिपि बनाना, सॉफ़्टवेयर स्थापित करना, पर्यावरण चर सेट करना और कंटेनर को कॉन्फ़िगर करना जैसी क्रियाएं शामिल हैं।
इन कमांडों के साथ डॉकरफाइल को भरने के लिए, निम्नलिखित कमांड निष्पादित करें।
vim Dockerfile
Dockerfile उपयोग के लिए तैयार है।
अब जब आपकी Dockerfile उपयोग के लिए तैयार है, तो अपने प्रोजेक्ट के JAR आर्टिफैक्ट को **"JenkinsServer"**EC2 इंस्टेंस से कॉपी करके और इसे "AnsibleServer" EC2 इंस्टेंस पर पेस्ट करके आगे बढ़ें। यह ध्यान रखना महत्वपूर्ण है कि यह स्थानांतरण आगे पाइपलाइन के माध्यम से स्वचालित हो जाएगा।
इस चरण को पूरा करके, आप अपने द्वारा सेट किए गए डॉकर वातावरण के साथ अपनी डॉकरफ़ाइल का परीक्षण करने के लिए तैयार होंगे।
परीक्षण शुरू करने से पहले, डॉकरहब पर स्वयं को प्रमाणित करना सुनिश्चित करें। निम्नलिखित आदेश निष्पादित करें.
docker login
यह कमांड आपको आपके उपयोगकर्ता नाम और पासवर्ड सहित अपना डॉकरहब लॉगिन क्रेडेंशियल प्रदान करने के लिए प्रेरित करेगा।
"AnsibleServer" EC2 उदाहरण में सफल डॉकर लॉगिन का स्क्रीनशॉट
इसके साथ, आपने डॉकर में लॉग इन करने की प्रक्रिया पूरी कर ली है और अब परीक्षण के लिए आगे बढ़ने के लिए तैयार हैं।
Dockerhub में आपका सफल लॉगिन पूरा होने के साथ, अब आप अपने द्वारा तैयार किए गए Dockerfile का परीक्षण शुरू करने के लिए तैयार हैं।
डॉकर छवि बनाने के लिए इस आदेश को निष्पादित करें।
docker build -t hello:latest .
इसके बाद, एक टैग स्थापित करने के लिए निम्नलिखित कमांड निष्पादित करें जो छवि को डॉकरहब पर अपलोड करने की सुविधा प्रदान करेगा:
docker tag hello:latest zufarexplainedit/hello:latest
अंत में, इस कमांड के निष्पादन के माध्यम से डॉकर छवि को डॉकरहब पर धकेलने के लिए आगे बढ़ें।
docker push zufarexplainedit/hello:latest
इन चरणों का पालन करते हुए, यह सत्यापित करने के लिए अपने डॉकरहब खाते पर जाएँ कि आप एक नई छवि देख सकते हैं या नहीं।
नई छवि के साथ Dockerhub खाते का स्क्रीनशॉट जोड़ा गया
अब आपको देखना चाहिए कि छवि प्रभावी ढंग से जोड़ दी गई है। यह परिणाम डॉकर वातावरण की सफल स्थापना की पुष्टि करता है और आपकी डॉकरफ़ाइल सही है।
अब हम EC2 वर्चुअल सर्वर इंस्टेंस पर Ansible सर्वर को कॉन्फ़िगर करते हैं।
Ansible को चलाने के लिए आपको एक वर्चुअल सर्वर की आवश्यकता है।
इस चरण को पूरा करने और Ansible के लिए EC2 वर्चुअल सर्वर इंस्टेंस बनाने के लिए इस ट्यूटोरियल के [मॉड्यूल 1]: AWS EC2 वर्चुअल सर्वर अनुभाग के निर्देशों का पालन करें।
सुरक्षा समूह सेटअप जोड़ना न भूलें. यह Ansible और SSH को क्रमशः पोर्ट 8080 और 22 पर काम करने की अनुमति देता है।
अपने EC2 वर्चुअल सर्वर इंस्टेंस को अलग करने के लिए "AnsibleServer" नाम का उपयोग करें।
आप नए "AnsibleServer" EC2 उदाहरण के लिए "CI_CD_Pipeline" सुरक्षा समूह और "CI_CD_Pipeline_Key_Pair" का पुन: उपयोग कर सकते हैं।
AWS कंसोल होम पेज → EC2 प्रबंधन कंसोल डैशबोर्ड → इंस्टेंस → AnsibleServer पर जाएं।
फिर "कनेक्ट" बटन पर क्लिक करें।
"कनेक्ट" बटन के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
फिर आपको यह वेब पेज दिखाई देगा. आपको फिर से "कनेक्ट" बटन पर क्लिक करना चाहिए।
"कनेक्ट" बटन के सूचक के साथ AWS "कनेक्ट टू इंस्टेंस" वेब पेज का स्क्रीनशॉट
अब आप EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल देख सकते हैं।
AWS EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल का स्क्रीनशॉट
अब EC2 वर्चुअल सर्वर इंस्टेंस पर Ansible सर्वर को कॉन्फ़िगर करते हैं।
जब आप EC2 वर्चुअल सर्वर इंस्टेंस पर AnsibleServer को कॉन्फ़िगर करना चाहते हैं तो सबसे पहली चीज़ जो आपको करने की ज़रूरत है वह है इसका होस्टनाम बदलना।
चलो यह करते हैं। होस्टनाम फ़ाइल खोलने के लिए इस आदेश को निष्पादित करें:
sudo vi /etc/hostname
आपको कुछ इस तरह देखना चाहिए:
होस्टनाम फ़ाइल के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस का स्क्रीनशॉट
इस होस्टनाम को "ansible-server" से बदलें। फिर, इसे रीबूट करें।
sudo init 6
होस्टनाम के सूचक के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल का स्क्रीनशॉट
अब AWS EC2 वर्चुअल सर्वर इंस्टेंस में एक नया ansible-admin उपयोगकर्ता जोड़ें।
ऐसा करने के लिए इस आदेश का उपयोग करें:
sudo useradd ansible-admin
फिर, ansible-admin उपयोगकर्ता के लिए पासवर्ड सेट करें।
sudo passwd ansible-admin
साथ ही, आपको sudoers फ़ाइल को संपादित करके उपयोगकर्ता विशेषाधिकारों को कॉन्फ़िगर करने की आवश्यकता है।
sudo visudo
इस sudoers फ़ाइल में "ansible-admin ALL=(ALL) ALL" जोड़ें।
व्यवस्थापक विशेषाधिकारों के सूचक के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल का स्क्रीनशॉट
साथ ही, आपको पासवर्ड प्रमाणीकरण सक्षम करने के लिए /etc/ssh/sshd_config फ़ाइल को संपादित करना होगा।
sudo vi /etc/ssh/sshd_config
एडमिन सेटिंग्स के पॉइंटर के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल का स्क्रीनशॉट
फिर आपको इन परिवर्तनों की पुष्टि करने के लिए सेवा को पुनः लोड करना होगा।
sudo service sshd reload
इस आदेश को निष्पादित करने के परिणामस्वरूप, आप देखेंगे:
Sshd पुनः लोड परिणाम के सूचक के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल का स्क्रीनशॉट
अब आप आगे की सभी कमांड के लिए sudo जोड़ने से बचने के लिए इस कमांड का उपयोग कर सकते हैं।
sudo su - ansible-admin
आप इस आलेख में आगे K8s EC2 वर्चुअल सर्वर इंस्टेंसेस जैसे दूरस्थ सर्वर प्रबंधित करने की योजना बना रहे हैं। इसीलिए आपको SSH कुंजियाँ सेट करने की आवश्यकता है।
ssh-keygen
इस आदेश को निष्पादित करने के परिणामस्वरूप, आप देखेंगे:
ssh-keygen परिणाम के सूचक के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल का स्क्रीनशॉट
अब SSH कुंजियाँ जनरेट हो गई हैं और उपयोग के लिए तैयार हैं।
अब आप अपने "AnsibleServer" EC2 वर्चुअल सर्वर इंस्टेंस पर Ansible इंस्टॉल कर सकते हैं।
चलो यह करते हैं।
Ansible को स्थापित करने के लिए इस आदेश को निष्पादित करें।
sudo amazon-linux-extras install ansible2
Ansible को सत्यापित करने के लिए, इस कमांड का उपयोग करें:
ansible --version
इस आदेश को निष्पादित करने के परिणामस्वरूप, आप देखेंगे:
Sudo yum install ansible परिणाम के सूचक के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल का स्क्रीनशॉट
चूँकि Ansible आपके "AnsibleServer" EC2 वर्चुअल सर्वर इंस्टेंस पर स्थापित है, आप इसे Ansible के साथ एकीकृत करने के लिए जेनकींस को कॉन्फ़िगर कर सकते हैं। जेनकींस को EC2 वर्चुअल सर्वर इंस्टेंस जहां Ansible स्थापित है और अन्य EC2 वर्चुअल सर्वर इंस्टेंस जहां Kubernetes स्थापित है, के साथ एकीकृत करने के लिए आपको "SSH पर प्रकाशित करें" प्लगइन स्थापित करने की आवश्यकता है।
"डैशबोर्ड" → " जेनकींस प्रबंधित करें" → "सिस्टम कॉन्फ़िगर करें" → "उपलब्ध प्लगइन्स" पर जाएं।
फिर खोज बॉक्स में "एसएसएच पर प्रकाशित करें" दर्ज करें।
"उपलब्ध प्लगइन्स" वेब पेज के पॉइंटर के साथ AWS EC2 वर्चुअल सर्वर पर स्थापित जेनकींस का स्क्रीनशॉट
"रीस्टार्ट किए बिना इंस्टॉल करें" बटन पर क्लिक करें। डाउनलोडिंग प्रक्रिया समाप्त होने तक प्रतीक्षा करें।
"डाउनलोड प्रगति" वेब पेज के सूचक के साथ AWS EC2 वर्चुअल सर्वर पर स्थापित जेनकींस का स्क्रीनशॉट
अब "पब्लिश ओवर एसएसएच" प्लगइन जेनकिंस ईसी2 वर्चुअल सर्वर इंस्टेंस पर इंस्टॉल हो गया है।
अपाचे मावेन जेनकींस प्लगइन की सफल स्थापना के साथ, अब आप इस प्लगइन का उपयोग उस पाइपलाइन के भीतर करने में सक्षम हैं जिसे आपने मॉड्यूल 2 और 3 में बनाया और अपडेट किया था।
ऐसा करने के लिए, इन चरणों का पालन करें:
"डैशबोर्ड" → "जेनकींस प्रबंधित करें" → "सिस्टम कॉन्फ़िगर करें" → "एसएसएच पर प्रकाशित करें" पर जाएं।
"SSH पर प्रकाशित करें" प्लगइन के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल का स्क्रीनशॉट
स्क्रीनशॉट पर मौजूद सभी आवश्यक डेटा दर्ज करें, जिसमें होस्टनाम, उपयोगकर्ता नाम और निजी कुंजी (या यदि लागू हो तो पासवर्ड) शामिल है।
"SSH पर प्रकाशित करें" प्लगइन के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल का स्क्रीनशॉट
फिर "लागू करें" और "सहेजें" बटन पर क्लिक करें।
यहां आपने "SSH पर प्रकाशित करें" जेनकींस प्लगइन को कॉन्फ़िगर करना समाप्त कर लिया है।
इसके बाद, यह सत्यापित करने के लिए कि प्लगइन सही ढंग से काम कर रहा है, "टेस्ट कॉन्फ़िगरेशन" पर क्लिक करें।
"टेस्ट कॉन्फ़िगरेशन" बटन के साथ "एसएसएच पर प्रकाशित करें" प्लगइन का स्क्रीनशॉट
बाईं ओर आप देख सकते हैं कि परीक्षण प्लगइन कॉन्फ़िगरेशन स्थिति "सफलता" है। इसका मतलब है कि प्लगइन कॉन्फ़िगरेशन सही है.
आपको AnsibleServer EC2 इंस्टेंस पर एक नया फ़ोल्डर बनाने की आवश्यकता है जहां प्रोजेक्ट JAR संग्रहीत किया जाएगा। इस जार का उपयोग बाद में डॉकर छवि बनाने के लिए किया जाएगा।
चलो शुरू करो।
AnsibleServer EC2 उदाहरण में "/opt" फ़ोल्डर पर जाएँ।
cd /opt
वहां एक नया फ़ोल्डर "डॉकर" बनाएं।
sudo mkdir docker
इस "डॉकर" फ़ोल्डर को विशेषाधिकार दें।
sudo chown ansible-admin:ansible-admin docker
अब, इस आदेश को निष्पादित करके "डॉकर" फ़ोल्डर विशेषाधिकारों की जांच करें।
ll
आप देख सकते हैं कि "docker" फ़ोल्डर "ansible-admin" उपयोगकर्ता के साथ पहुंच योग्य है।
"AnsibleServer" EC2 उदाहरण में "docker" फ़ोल्डर का स्क्रीनशॉट
अब "एसएसएच पर प्रकाशित करें" जीथब प्लगइन स्थापित और कॉन्फ़िगर किया गया है, अब आप इसे उस पाइपलाइन में एकीकृत करने में सक्षम हैं जिसे आपने "[मॉड्यूल 2]: जेनकिंस सर्वर" में प्रोजेक्ट जार आर्टिफैक्ट को " जेनकिंस सर्वर" से स्थानांतरित करने के लिए बनाया था। "AnsibleServer" ।
खैर, पाइपलाइन में "एसएसएच पर प्रकाशित करें" जीथब प्लगइन को एकीकृत करने के लिए आपको इन चरणों का पालन करना होगा:
पाइपलाइन कॉन्फ़िगरेशन में "एसएसएच पर बिल्ड आर्टिफैक्ट भेजें" अनुभाग का स्क्रीनशॉट
अंत में, आपको पाइपलाइन के साथ " एसएसएच पर प्रकाशित करें" प्लगइन का एकीकरण पूरा करने के लिए "लागू करें" और "सहेजें" बटन पर क्लिक करना चाहिए।
अब आप प्रोजेक्ट जार आर्टिफैक्ट को " जेनकिंससर्वर" से "एन्सिबलसर्वर" में स्थानांतरित करने के लिए अपनी अद्यतन पाइपलाइन का उपयोग कर सकते हैं। ऐसा करने के लिए आपको "बिल्ड नाउ" बटन पर क्लिक करना होगा। परिणामस्वरूप आप निर्माण इतिहास में एक सफल कार्य परिणाम देखेंगे।
यदि आप अपना "AnsibleServer" AWS EC2 टर्मिनल खोलते हैं। आप जांच सकते हैं कि पाइपलाइन अच्छी तरह से काम करती है।
बस इस आदेश का प्रयोग करें.
cd /opt/docker
इस तरह आप JAR आर्टिफैक्ट देख सकते हैं, जो GitHub से आपके प्रोजेक्ट के सफल निर्माण का संकेत देता है।
प्रोजेक्ट जार आर्टिफैक्ट के साथ /opt/docker निर्देशिका का स्क्रीनशॉट
जब आप एक अन्सिबल प्लेबुक चलाते हैं, तो आप उन होस्टों को निर्दिष्ट करते हैं जिन पर इसे चलाना चाहिए। आप इसे दो तरीकों से कर सकते हैं:
hosts
पैरामीटर को आईपी पते या होस्टनाम की सूची में सेट कर सकते हैं।/etc/ansible/hosts
है।
/etc/ansible/hosts
संपादित करके, आप हर बार प्लेबुक चलाने पर उनके आईपी पते लिखे बिना आसानी से होस्ट के समूहों को प्रबंधित कर सकते हैं।
आइए निम्नलिखित कमांड निष्पादित करके AnsibleServer EC2 इंस्टेंस होस्ट का पता लगाएं।
sudo ifconfig
AnsibleServer EC2 इंस्टेंस की नेटवर्क इंटरफ़ेस सेटिंग का स्क्रीनशॉट
AnsibleServer EC2 इंस्टेंस होस्ट का पता लगाने के बाद, आप इसे निम्न कमांड निष्पादित करके Ansible होस्ट फ़ाइल में जोड़ सकते हैं।
sudo vi /etc/ansible/hosts
आप संदर्भ के रूप में "[ansible]" भी जोड़ सकते हैं
Ansible होस्ट फ़ाइल का स्क्रीनशॉट
यदि आप सर्वरों का एक समूह प्रबंधित कर रहे हैं और आप उन सभी पर एक प्लेबुक लागू करना चाहते हैं, तो प्लेबुक में प्रत्येक सर्वर के आईपी पते को निर्दिष्ट करने के बजाय, आप बस सभी सर्वरों को इन्वेंट्री फ़ाइल में एक समूह में जोड़ सकते हैं और फिर निर्दिष्ट कर सकते हैं प्लेबुक में समूह.
Ansible को दूरस्थ सर्वर पर कार्यों को स्वचालित करने के लिए डिज़ाइन किया गया है। पासवर्ड रहित SSH प्रमाणीकरण, Ansible को मैन्युअल पासवर्ड प्रविष्टि की आवश्यकता के बिना उन सर्वरों से कनेक्ट करने का अधिकार देता है।
अपने कंप्यूटर से दूसरे कंप्यूटर (जैसे आईपी एड्रेस 172.31.34.41 पर एक) के साथ एक सुरक्षित कनेक्शन बनाने के लिए, ansible-admin उपयोगकर्ता की SSH कुंजी का उपयोग करके इस कमांड को निष्पादित करें।
sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address}
मेरे मामले में, यह इस तरह दिखता है.
sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub ansible-admin@172.31.34.41
सफल पासवर्ड रहित एसएसएच प्रमाणीकरण स्थापना परिणाम का स्क्रीनशॉट
अब आप "जोड़ी गई कुंजी(कुंजियों) की संख्या: 1" देख सकते हैं। इसका मतलब है कि पासवर्ड रहित एसएसएच प्रमाणीकरण इंस्टॉलेशन सफलतापूर्वक पूरा हो गया था।
अब जब Ansible पूरी तरह तैयार हो गया है और जाने के लिए तैयार है, तो आप अपनी पाइपलाइन के लिए एक नई Ansible प्लेबुक बना सकते हैं। यह प्लेबुक Ansible को एक नई Docker छवि बनाने और Dockerhub को भेजने देगी।
यहां बताया गया है कि आप यह कैसे कर सकते हैं:
touch hello-app.yml
hello-app.yml
फ़ाइल को संपादित करें। इस आदेश के साथ संपादन के लिए इसे खोलें। vi hello-app.yml
--- - 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
डॉकर कार्यों के लिए अन्सिबल प्लेबुक उपयोग के लिए तैयार है।
Ansible, Ansible प्लेबुक, AnsibleServer और जेनकिंस सर्वर सभी को ठीक से कॉन्फ़िगर करने के साथ, यह Ansible प्लेबुक का परीक्षण करने का समय है।
अपनी Ansible प्लेबुक के स्थान पर नेविगेट करें।
cd /opt/docker
फिर, निम्न आदेश निष्पादित करें।
sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml
पूरा होने पर, आप अपनी Ansible प्लेबुक का सफल निष्पादन परिणाम देखेंगे।
डॉकर कार्यों के लिए एन्सिबल प्लेबुक के सफल निष्पादन परिणाम का स्क्रीनशॉट
इसके अलावा, अपने डॉकरहब खाते पर जाने के लिए कुछ समय निकालें और सत्यापित करें कि क्या अब कोई नई छवि दिखाई दे रही है।
नई छवि के साथ Dockerhub खाते का स्क्रीनशॉट जोड़ा गया
आपको नई जोड़ी गई छवि देखनी चाहिए. यह परिणाम पुष्टि करता है कि आपकी अन्सिबल प्लेबुक सही है।
अब "एसएसएच पर प्रकाशित करें" जीथब प्लगइन, एन्सिबल और डॉकर स्थापित और कॉन्फ़िगर किए गए हैं, अब आप प्रोजेक्ट जार आर्टिफैक्ट को स्थानांतरित करने के लिए "[मॉड्यूल 2]: जेनकिंस सर्वर" में बनाई गई पाइपलाइन में उन सभी को एकीकृत करने में सक्षम हैं। " जेनकिंससर्वर" से "एन्सिबलसर्वर" तक और फिर अपने प्रोजेक्ट से एक नई डॉकर छवि बनाएं और फिर इस डॉकर छवि को डॉकरहब पर धकेलें।
इसे प्राप्त करने के लिए आपको इन चरणों का पालन करना होगा:
पाइपलाइन कॉन्फ़िगरेशन में "एसएसएच पर बिल्ड आर्टिफैक्ट भेजें" अनुभाग का स्क्रीनशॉट
अंत में, पाइपलाइन के साथ एकीकरण Ansible Docker कार्यों को पूरा करने के लिए "लागू करें" और "सहेजें" बटन पर क्लिक करें।
अब आप प्रोजेक्ट जार आर्टिफैक्ट को " जेनकिंससर्वर" से "एन्सिबलसर्वर" में स्थानांतरित करने के लिए अपनी उन्नत पाइपलाइन का परीक्षण कर सकते हैं, फिर अपने प्रोजेक्ट से एक नई डॉकर छवि बना सकते हैं और फिर इस डॉकर छवि को डॉकरहब पर धकेल सकते हैं। ऐसा करने के लिए आपको "बिल्ड नाउ" बटन पर क्लिक करना होगा। परिणामस्वरूप आप निर्माण इतिहास में एक सफल कार्य परिणाम देखेंगे।
इसके अलावा, अपने डॉकरहब खाते पर जाने के लिए कुछ समय निकालें और सत्यापित करें कि क्या अब कोई नई छवि दिखाई दे रही है।
नई छवि के साथ Dockerhub खाते का स्क्रीनशॉट जोड़ा गया
आपको नई जोड़ी गई छवि देखनी चाहिए. यह परिणाम पुष्टि करता है कि डॉकर कार्यों के साथ आपकी एंसिबल प्लेबुक को पाइपलाइन में सफलतापूर्वक एकीकृत किया गया था।
आइए अब K8s को EC2 इंस्टेंस पर कॉन्फ़िगर करें। आप एक नया EC2 इंस्टेंस बनाने जा रहे हैं और Kubernetes क्लस्टर के साथ आगे इंटरैक्ट करने के लिए उनके kubectl कमांड-लाइन टूल को इंस्टॉल करेंगे।
इस चरण को पूरा करने के लिए इस ट्यूटोरियल के " AWS EC2 वर्चुअल सर्वर इंस्टेंस लॉन्च करें" अनुभाग के निर्देशों का उपयोग करें।
सुरक्षा समूह सेटअप जोड़ना न भूलें. यह सभी टूल्स और एसएसएच को क्रमशः पोर्ट 8080 और 22 पर काम करने की अनुमति देता है।
अपने EC2 वर्चुअल सर्वर इंस्टेंस को अलग करने के लिए "K8sServer" नाम का उपयोग करें।
आप नए "K8sServer" EC2 उदाहरण के लिए "CI_CD_Pipeline" सुरक्षा समूह और "CI_CD_Pipeline_Key_Pair" का पुन: उपयोग कर सकते हैं।
"कनेक्ट" बटन पर क्लिक करें।
"कनेक्ट" बटन के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
अब आप EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल देख सकते हैं।
AWS EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल का स्क्रीनशॉट
जब आप EC2 वर्चुअल सर्वर इंस्टेंस पर KuberenetesServer को कॉन्फ़िगर करना चाहते हैं तो सबसे पहले आपको इसका होस्टनाम बदलना होगा।
चलो यह करते हैं। होस्टनाम फ़ाइल खोलने के लिए इस आदेश को निष्पादित करें:
sudo vi /etc/hostname
आपको कुछ इस तरह देखना चाहिए.
होस्टनाम फ़ाइल के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस का स्क्रीनशॉट
इस होस्टनाम को "कुबेरनेट्स-सर्वर" से बदलें और फिर इसे रीबूट करें।
sudo init 6
आपका होस्टनाम बदल दिया गया है.
होस्टनाम के सूचक के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल का स्क्रीनशॉट
AWS संस्करण की जाँच करने के लिए इस कमांड का उपयोग करें।
aws --version
इस तरह आप अपना वर्तमान aws-cli संस्करण देख सकते हैं।
AWS संस्करण कमांड परिणाम के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल का स्क्रीनशॉट
यदि आप संस्करण aws-cli/1.18 देख सकते हैं, तो आपको नवीनतम संस्करण डाउनलोड करना चाहिए।
अब जैसा कि आपको पता चला है कि आपके EC2 इंस्टेंस पर एक पुराना aws-cli संस्करण है, आपको इसे अपडेट करने की आवश्यकता है। इसके लिए AWS → दस्तावेज़ीकरण → AWS कमांड लाइन इंटरफ़ेस → संस्करण 2 के लिए उपयोगकर्ता मार्गदर्शिका पर जाएँ।
संस्करण 2 के लिए उपयोगकर्ता गाइड के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस वेबपेज का स्क्रीनशॉट
कर्ल कमांड को कॉपी-पेस्ट करें।
सबसे पहले, awscli संस्करण 2 डाउनलोड करने के लिए इस कमांड को निष्पादित करें।
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
डाउनलोडिंग प्रक्रिया शुरू होने तक प्रतीक्षा करें।
आपको कुछ इस तरह देखना चाहिए.
AWS संस्करण 2 परिणाम डाउनलोड करने के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल का स्क्रीनशॉट
दूसरा, आपको awscli संस्करण 2 संग्रह को अनज़िप करने के लिए इस कमांड को निष्पादित करने की आवश्यकता है।
unzip awscliv2.zip
तीसरा, आपको awscli संस्करण 2 को स्थापित करने के लिए इस कमांड को निष्पादित करना चाहिए।
sudo ./aws/install
फिर, Kubernetes EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल को पुनः लोड करें।
इसके बाद, AWS संस्करण की जाँच करने के लिए इस कमांड का उपयोग करें
aws --version
आप देख सकते हैं कि aws cli में aws-cli/2 है।
AWS संस्करण कोमांड परिणाम के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल का स्क्रीनशॉट
Kubectl अंतर्निहित बुनियादी ढांचे की परवाह किए बिना, किसी भी Kubernetes क्लस्टर के साथ बातचीत करने के लिए एक मौलिक कमांड-लाइन उपकरण है। यह आपको कुबेरनेट्स क्लस्टर के भीतर संसाधनों को प्रबंधित करने, एप्लिकेशन तैनात करने, नेटवर्किंग कॉन्फ़िगर करने, लॉग तक पहुंचने और कई अन्य कार्य करने की अनुमति देता है।
अब आपको Kubernetes क्लस्टर के साथ आगे इंटरैक्ट करने के लिए kubectl कमांड-लाइन टूल इंस्टॉल करना होगा। इसके लिए आपको AWS → दस्तावेज़ीकरण → Amazon EKS → उपयोगकर्ता गाइड → kubectl इंस्टॉल या अपडेट करना → Linux पर जाना होगा।
या बस लिंक https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html पर क्लिक करें।
AWS EKS उपयोगकर्ता गाइड का स्क्रीनशॉट
सबसे पहले, kubectl डाउनलोड करने के लिए इस कमांड को निष्पादित करें।
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.1/2023-04-19/bin/linux/amd64/kubectl
डाउनलोडिंग प्रक्रिया की प्रतीक्षा करें।
आपको कुछ ऐसा दिखेगा.
Kubectl परिणाम डाउनलोड करने के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल का स्क्रीनशॉट
Kubectl को अनुमति दें.
chmod +x kubectl
Kubectl को /usr/local/bin फ़ोल्डर में ले जाएँ।
sudo mv kubectl /usr/local/bin
Kubectl के संस्करण की जाँच करें।
kubectl version --output=yaml
एक्ससीटीएल एक अन्य कमांड-लाइन टूल है जो विशेष रूप से अमेज़ॅन ईकेएस सेवा के लिए तैयार किया गया है। एक्ससीटीएल का उपयोग एडब्ल्यूएस ईकेएस क्लस्टर बनाने, नोड समूहों को प्रबंधित करने और ईकेएस के लिए विशिष्ट कार्यों को करने के लिए किया जा सकता है, जैसे कि एडब्ल्यूएस इंफ्रास्ट्रक्चर सेटअप और प्रबंधन के अधिकांश हिस्से को हटाकर आईएएम भूमिकाओं और अन्य एडब्ल्यूएस सेवाओं के साथ एकीकृत करना।
Kubectl डाउनलोड करने के लिए कमांड निष्पादित करें।
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
eksctl को /usr/local/bin फ़ोल्डर में ले जाएँ।
sudo mv /tmp/eksctl /usr/local/bin
eksctl का संस्करण जांचें.
eksctl version
आपको संस्करण देखना चाहिए
EWSCTL संस्करण के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल का स्क्रीनशॉट
आपको एक IAM भूमिका बनानी होगी और इसे अपने "KubernetesServer" EC2 इंस्टेंस से जोड़ना होगा।
ऐसा करने के लिए आपको खोज बॉक्स में EC2 ढूंढना होगा।
https://us-east-1.console.aws.amazon.com/ec2 / लिंक पर क्लिक करके EC2 वर्चुअल सर्वर चुनें।
"IAM" के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
IAM डैशबोर्ड → भूमिकाएँ पर जाएँ।
"IAM भूमिकाएँ" के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
IAM भूमिकाएँ वेब पेज पर "भूमिका बनाएँ" बटन पर क्लिक करें।
फिर "AWS सेवा", "EC2" चुनें। और "अगला" बटन पर क्लिक करें।
"IAM भूमिका कॉन्फ़िगरेशन" के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
फिर, खोज बॉक्स में "AmazonEC2FullAccess" , "AmazonEC2FullAccess" , "IAMFullAccess" , "AWSCloudFormationFullAccess" ढूंढें और फिर "अनुमतियां जोड़ें" बटन पर क्लिक करें।
और फिर "अगला" बटन पर क्लिक करें।
एडमिनिस्ट्रेटर एक्सेस अनुमति के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
फिर "भूमिका नाम" इनपुट में "Eksctl_Role" टाइप करें।
और "भूमिका बनाएं" बटन पर क्लिक करें।
अनुमति भूमिका कॉन्फ़िगरेशन के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
भूमिका अंततः निर्मित होती है।
AWS EC2 इंस्टेंस वेब पेज पर जाएँ। "कुबेरबेट्ससर्वर" चुनें। फिर "क्रियाएँ" → "सुरक्षा" → "IAM भूमिका संशोधित करें" पर क्लिक करें।
KubernetesServer Security बटन के पॉइंटर के साथ AWS वेब पेज का स्क्रीनशॉट
"Eksctl_Role" चुनें और फिर "अपडेट IAM रोल" बटन पर क्लिक करें।
Elsctl_Role IAM भूमिका के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट
अब आपकी IAM भूमिका आपके "EKS_Server" और eksctl टूल से जुड़ गई है।
अमेज़ॅन ईकेएस (इलास्टिक कुबेरनेट्स सर्विस) क्लस्टर एडब्ल्यूएस पर एक प्रबंधित कुबेरनेट्स वातावरण है, जो सेटअप, स्केलिंग और रखरखाव जैसे जटिल बुनियादी ढांचे के कार्यों को स्वचालित करता है। यह आवश्यक है क्योंकि यह कंटेनरीकृत अनुप्रयोगों को तैनात करने, प्रबंधित करने और स्केल करने, संचालन को सुव्यवस्थित करने और डेवलपर्स को अंतर्निहित बुनियादी ढांचे के प्रबंधन के बजाय कोडिंग पर ध्यान केंद्रित करने के लिए एक कुशल, सुरक्षित और एडब्ल्यूएस-अनुकूलित मंच प्रदान करता है।
अब, आपका ईकेएस क्लस्टर स्थापित करने का समय आ गया है।
इसे प्राप्त करने के लिए, इन चरणों का पालन करें:
eksctl create cluster --name cluster-name \ --region region-name \ --node-type instance-type \ --nodes-min 2 \ --nodes-max 2 \ --zones <AZ-1>,<AZ-2>
उदाहरण के लिए, मेरे मामले में, यह इस तरह दिखता है।
eksctl create cluster --name zufarexplainedit \ --region eu-north-1 \ --node-type t3.micro
संशोधित आदेश निष्पादित करें और धैर्यपूर्वक क्लस्टर निर्माण प्रक्रिया के पूरा होने की प्रतीक्षा करें। आप देखेंगे कि ईकेएस क्लस्टर स्थिति को एडब्ल्यूएस क्लाउडफॉर्मेशन वेब पेज पर "बनाना" के रूप में दर्शाया गया है।
AWS क्लाउडफ़ॉर्मेशन के सूचक के साथ AWS वेब पेज का स्क्रीनशॉट जहां आप EKS क्लस्टर "निर्माण" स्थिति देख सकते हैं
क्लस्टर निर्माण प्रक्रिया में आमतौर पर लगभग 20 मिनट लगते हैं। एक बार पूरा होने पर, टर्मिनल प्रक्रिया का परिणाम प्रदर्शित करेगा।
AWS EC2 टर्मिनल के पॉइंटर के साथ AWS वेब पेज का स्क्रीनशॉट जहां आप EKS क्लस्टर निर्माण परिणाम देख सकते हैं
इसके अलावा, आप AWS CloudFormation वेब पेज पर सफल EKS क्लस्टर निर्माण स्थिति को सत्यापित कर सकते हैं।
AWS क्लाउडफ़ॉर्मेशन के पॉइंटर के साथ AWS वेब पेज का स्क्रीनशॉट जहां आप EKS क्लस्टर निर्माण परिणाम देख सकते हैं
Kubernetes परिनियोजन YAML फ़ाइल YAML प्रारूप में लिखी गई एक कॉन्फ़िगरेशन स्क्रिप्ट है जो परिभाषित करती है कि Kubernetes क्लस्टर के भीतर किसी विशिष्ट एप्लिकेशन या सेवा को कैसे प्रबंधित और बनाए रखा जाए। यह एप्लिकेशन चलाने वाले कंटेनरों की तैनाती, स्केलिंग, अपडेटिंग और निगरानी को व्यवस्थित करने के लिए निर्देशों को समाहित करता है। इस फ़ाइल में कंटेनर छवि, प्रतिकृतियों की वांछित संख्या, संसाधन सीमाएं, पर्यावरण चर, नेटवर्किंग सेटिंग्स और बहुत कुछ जैसे विवरण शामिल हैं। जब कुबेरनेट्स क्लस्टर पर लागू किया जाता है, तो परिनियोजन YAML फ़ाइल एप्लिकेशन की वांछित स्थिति सुनिश्चित करती है, उपलब्धता और विश्वसनीयता के वांछित स्तर को बनाए रखने के लिए कंटेनरों के निर्माण, स्केलिंग और पुनर्प्राप्ति को स्वचालित रूप से प्रबंधित करती है।
अब, जैसे ही Kubernetes क्लस्टर, eksctl, kubectl स्थापित और कॉन्फ़िगर किया गया है, आप Kubernetes परिनियोजन yaml फ़ाइल बना सकते हैं।
आप निम्न आदेश निष्पादित करके ऐसा कर सकते हैं।
touch hello-app-deployment.yaml
फिर, निम्न आदेश निष्पादित करके इस फ़ाइल को संपादित करें।
vi hello-app-deployment.yaml
इस सामग्री को hello-app-deployment.yaml में जोड़ें।
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
अब hello-app-deployment.yaml बन गया है और उपयोग के लिए तैयार है।
Kubernetes Service YAML फ़ाइल YAML प्रारूप में लिखी गई एक कॉन्फ़िगरेशन स्क्रिप्ट है जो पॉड्स के एक सेट के लिए नेटवर्क एब्स्ट्रैक्शन को परिभाषित करती है, जिससे उन्हें Kubernetes क्लस्टर के भीतर लगातार एक्सेस करने की अनुमति मिलती है। यह फ़ाइल बताती है कि अन्य सेवाओं या बाहरी ग्राहकों द्वारा सेवा को कैसे खोजा, एक्सेस किया जाना चाहिए और लोड-संतुलित किया जाना चाहिए। इसमें सेवा प्रकार (क्लस्टरआईपी, नोडपोर्ट, लोडबैलेंसर), पोर्ट नंबर, पॉड्स की पहचान करने के लिए चयनकर्ता और बहुत कुछ जैसे विनिर्देश शामिल हैं। जब कुबेरनेट्स क्लस्टर पर लागू किया जाता है, तो सेवा YAML फ़ाइल एक वर्चुअल आईपी और पोर्ट बनाती है जो ट्रैफ़िक को उपयुक्त पॉड्स तक रूट करती है, अंतर्निहित पॉड परिवर्तनों को अमूर्त करती है और संचार के लिए एक स्थिर समापन बिंदु प्रदान करती है, जिससे निर्बाध कनेक्टिविटी और गतिशील स्केलिंग सक्षम होती है।
जैसे ही Kubernetes क्लस्टर, eksctl, kubectl स्थापित और कॉन्फ़िगर किया जाता है, आप Kubernetes Service yaml फ़ाइल बना सकते हैं।
ऐसा करने के लिए आपको निम्नलिखित कमांड निष्पादित करके एक Kubernetes Service yaml फ़ाइल बनानी होगी।
touch hello-app-service.yaml
फिर, निम्न आदेश निष्पादित करके इस फ़ाइल को संपादित करें।
vi hello-app-service.yaml
इस सामग्री को hello-app-deployment.yaml में जोड़ें।
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
अब hello-app-service.yaml बन गया है और उपयोग के लिए तैयार है।
आपके कुबेरनेट्स ईकेएस क्लस्टर के सफलतापूर्वक स्थापित और कॉन्फ़िगर होने और आपकी कुबेरनेट्स सेवा और परिनियोजन फ़ाइलें तैयार होने के साथ, कुबेक्टल कमांड का उपयोग करके चीजों को परीक्षण में डालने का समय आ गया है।
परिनियोजन लागू करें.
परिनियोजन कॉन्फ़िगरेशन लागू करने के लिए निम्न आदेश का उपयोग करें।
kubectl apply -f hello-app-deployment.yaml
यह आपके एप्लिकेशन की उपलब्धता और प्रबंधनीयता सुनिश्चित करते हुए, प्रतिकृतियों की निर्दिष्ट संख्या और एक रोलिंग अपडेट रणनीति के साथ एक तैनाती तैयार करेगा।
2. सेवा लागू करें.
इसके बाद, सेवा कॉन्फ़िगरेशन लागू करें।
kubectl apply -f hello-app-service.yaml
यह आपके एप्लिकेशन को इंटरनेट पर उजागर करते हुए एक लोडबैलेंसर प्रकार की सेवा स्थापित करेगा।
ध्यान दें कि लोडबैलेंसर को प्रावधानित करने और बाहरी आईपी पता प्राप्त करने में थोड़ा समय लग सकता है।
लोडबैलेंसर स्थिति जांचें।
अपनी सेवा का उपयोग करके उसकी स्थिति की निगरानी करें।
kubectl get service zufarexplainedit-hello-app-service
जब एक बाहरी आईपी असाइन किया जाता है, तो आप अपने एप्लिकेशन तक पहुंचने के लिए लगभग तैयार होते हैं।
अपने एप्लिकेशन तक पहुंचें.
वेब ब्राउज़र का उपयोग करते हुए, निर्दिष्ट बाहरी आईपी पता और उसके बाद :8080 दर्ज करें। थोड़ी देर के बाद, पेज लोड हो जाएगा और "हैलोवर्ल्ड" संदेश प्रदर्शित होगा। ध्यान रखें कि प्रारंभिक लोडिंग में कुछ सेकंड लग सकते हैं।
हेलो ऐप वेब पेज का स्क्रीनशॉट
जब आपको अपने कुबेरनेट्स वातावरण में संसाधनों को व्यवस्थित करने की आवश्यकता होती है, तो आप तैनाती, पॉड्स और सेवाओं को प्रभावी ढंग से हटाने के लिए निम्नलिखित कुबेक्टल कमांड का उपयोग कर सकते हैं।
1. सभी परिनियोजन हटाएँ ।
सभी परिनियोजनों को हटाने के लिए, आप निम्न आदेश का उपयोग कर सकते हैं।
kubectl delete deployments --all
यह क्रिया सुनिश्चित करती है कि आपके क्लस्टर में कोई सक्रिय परिनियोजन उदाहरण नहीं बचा है।
2. सभी पॉड्स हटाएं ।
यदि आपको सभी पॉड्स को हटाने की आवश्यकता है, चाहे वे परिनियोजन द्वारा प्रबंधित हों या नहीं, तो आप निम्न कमांड का उपयोग कर सकते हैं।
kubectl delete pods --all
पॉड्स साफ़ करने से आपके क्लस्टर स्थिति को रीसेट करने या नई तैनाती के लिए तैयार होने में मदद मिल सकती है।
3. सभी सेवाएँ हटाएँ ।
आपके एप्लिकेशन को नेटवर्क पर उजागर करने वाली सेवाओं को साफ़ करने के लिए, आप निम्न कमांड का उपयोग कर सकते हैं।
kubectl delete services --all
सेवाओं को हटाने से डाउनटाइम शामिल हो सकता है, इसलिए आगे बढ़ने से पहले निहितार्थों पर विचार करें।
वर्कर नोड्स, नेटवर्किंग घटकों और अन्य संसाधनों सहित, eksctl
के साथ बनाए गए निर्दिष्ट अमेज़ॅन ईकेएस क्लस्टर से जुड़े सभी संसाधनों को हटाने के लिए, आप निम्न कमांड का उपयोग कर सकते हैं।
eksctl delete cluster --name {your cluster name} --region {your region name}
मेरे लिए यह।
eksctl delete cluster --name zufarexplainedit --region eu-north-1
सुनिश्चित करें कि आप क्लस्टर को रोकने के बारे में निश्चित हैं, क्योंकि यह क्रिया अपरिवर्तनीय है और इसके परिणामस्वरूप डेटा हानि होगी।
अब "KubernetesServer" AWS EC2 वर्चुअल सर्वर इंस्टेंस में एक नया ansible-admin उपयोगकर्ता जोड़ें।
ऐसा करने के लिए इस कमांड का उपयोग करें.
sudo useradd ansible-admin
फिर, ansible-admin उपयोगकर्ता के लिए पासवर्ड सेट करें।
sudo passwd ansible-admin
साथ ही, आपको sudoers फ़ाइल को संपादित करके उपयोगकर्ता विशेषाधिकारों को कॉन्फ़िगर करने की आवश्यकता है।
sudo visudo
इस sudoers फ़ाइल में "ansible-admin ALL=(ALL) ALL" जोड़ें।
व्यवस्थापक विशेषाधिकारों के सूचक के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल का स्क्रीनशॉट
साथ ही, आपको पासवर्ड प्रमाणीकरण सक्षम करने के लिए /etc/ssh/sshd_config फ़ाइल को संपादित करना होगा।
sudo vi /etc/ssh/sshd_config
एडमिन सेटिंग्स के पॉइंटर के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल का स्क्रीनशॉट
फिर आपको ये परिवर्तन करने के लिए सेवा को पुनः लोड करना होगा।
sudo service sshd reload
इस आदेश को निष्पादित करने के परिणामस्वरूप, आप देखेंगे:
Sshd पुनः लोड परिणाम के सूचक के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल का स्क्रीनशॉट
अब आप आगे की सभी कमांड के लिए sudo जोड़ने से बचने के लिए इस कमांड का उपयोग कर सकते हैं।
sudo su - ansible-admin
आप इस आलेख में आगे K8s EC2 वर्चुअल सर्वर इंस्टेंस जैसे दूरस्थ सर्वर को प्रबंधित करने की योजना बना रहे हैं। इसीलिए आपको SSH कुंजियाँ सेट करने की आवश्यकता है।
ssh-keygen
इस आदेश को निष्पादित करने के परिणामस्वरूप, आप देखेंगे:
ssh-keygen परिणाम के सूचक के साथ AWS EC2 वर्चुअल सर्वर इंस्टेंस टर्मिनल का स्क्रीनशॉट
अब SSH कुंजियाँ जनरेट हो गई हैं और उपयोग के लिए तैयार हैं।
Ansible को दूरस्थ सर्वर पर कार्यों को स्वचालित करने के लिए डिज़ाइन किया गया है। पासवर्ड रहित SSH प्रमाणीकरण, Ansible को मैन्युअल पासवर्ड प्रविष्टि की आवश्यकता के बिना उन सर्वरों से कनेक्ट करने का अधिकार देता है।
अपने कंप्यूटर से दूसरे कंप्यूटर (जैसे आईपी एड्रेस 172.31.34.41 पर एक) के साथ एक सुरक्षित कनेक्शन बनाने के लिए, ansible-admin उपयोगकर्ता की SSH कुंजी का उपयोग करके इस कमांड को निष्पादित करें।
sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address}
मेरे मामले में, यह इस तरह दिखता है.
sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub ansible-admin@172.31.34.41
सफल पासवर्ड रहित एसएसएच प्रमाणीकरण स्थापना परिणाम का स्क्रीनशॉट
अब आप "जोड़ी गई कुंजी(कुंजियों) की संख्या: 1" देख सकते हैं। इसका मतलब है कि पासवर्ड रहित एसएसएच प्रमाणीकरण इंस्टॉलेशन सफलतापूर्वक पूरा हो गया था।
जब आप एक अन्सिबल प्लेबुक चलाते हैं, तो आप उन होस्टों को निर्दिष्ट करते हैं जिन पर इसे चलाना चाहिए। इस चरण में आपको KubernetesServer EC2 इंस्टेंस होस्ट निर्दिष्ट करने की आवश्यकता है। ऐसा करने के लिए आपको वही चरण दोहराने होंगे जो आपने " [मॉड्यूल 6]: एन्सिबल" में पारित किए थे।
आइए निम्नलिखित कमांड निष्पादित करके KubernetesServer EC2 इंस्टेंस होस्ट का पता लगाएं।
sudo ifconfig
"ifconfig" फ़ाइल का स्क्रीनशॉट
KubernetesServer EC2 इंस्टेंस होस्ट मिलने के बाद, आप इसे निम्न कमांड निष्पादित करके Ansible होस्ट फ़ाइल में जोड़ सकते हैं।
sudo vi /etc/ansible/hosts
एन्सिबल और कुबेरनेट्स होस्ट के साथ "होस्ट" फ़ाइलों का स्क्रीनशॉट
आप संदर्भ के रूप में "[कुबेरनेट्स]" भी जोड़ सकते हैं
अब जबकि Kubernetes पूरी तरह तैयार हो चुका है और उपयोग के लिए तैयार है, आप अपनी पाइपलाइन के लिए Kubernetes कार्यों के साथ एक नई Ansible प्लेबुक बना सकते हैं। यह प्लेबुक Ansible को आपके ऐप को Kubernetes क्लस्टर पर kubectl कमांड के साथ चलाने देगा।
यहां बताया गया है कि आप यह कैसे कर सकते हैं:
touch kubernetes-hello-app.yml
hello-app.yml
फ़ाइल को संपादित करें। इस आदेश के साथ संपादन के लिए इसे खोलें। vi kubernetes-hello-app.yml
--- - 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 कार्यों के लिए Ansible प्लेबुक उपयोग के लिए तैयार है।
अब जब Kubernetes कार्यों के लिए Kubernetes, Ansible, और Ansible प्लेबुक पूरी तरह से सेट हो गए हैं और जाने के लिए तैयार हैं, तो आप इसे जेनकिंस के साथ एकीकृत कर सकते हैं।
जेनकिंस सर्वर → जेनकिंस डैशबोर्ड → नए आइटम पर जाएं।
"सीडी-जॉब" नाम से नया जेनकींस फ्रीस्टाइल प्रोजेक्ट बनाएं।
नए जेनकींस फ्रीस्टाइल प्रोजेक्ट "सीडी-जॉब" का स्क्रीनशॉट
"ओके" बटन पर क्लिक करें।
"पोस्ट-बिल्ड एक्शन" अनुभाग पर जाएँ।
"पोस्ट-बिल्ड एक्शन जोड़ें" बटन पर क्लिक करें।
"SSH पर निर्मित कलाकृतियाँ भेजें" विकल्प चुनें।
SSH सर्वर के रूप में "AnsibleServer" चुनें।
इस कमांड को "exec कमांड" इनपुट में जोड़ें।
sudo -u ansible-admin ansible-playbook /opt/docker/kubernetes-hello-app.yml
"लागू करें" और "सहेजें" बटन पर क्लिक करें।
जेनकिंस डैशबोर्ड → “CI_CD_Pipeline” → कॉन्फ़िगर करें → “पोस्ट-बिल्ड एक्शन” अनुभाग पर जाएँ।
"पोस्ट-बिल्ड एक्शन जोड़ें" बटन पर क्लिक करें।
"अन्य प्रोजेक्ट बनाएँ" विकल्प चुनें।
"अन्य प्रोजेक्ट बनाएँ" अनुभाग पर जाएँ।
"केवल तभी ट्रिगर करें जब निर्माण स्थिर हो" विकल्प चुनें।
"प्रोजेक्ट टू बिल्ड" इनपुट में "सीडी-जॉब" जोड़ें।
"अन्य प्रोजेक्ट बनाएँ" अनुभाग का स्क्रीनशॉट
"लागू करें" और "सहेजें" बटन पर क्लिक करें।
अब आप मान सकते हैं कि पाइपलाइन पूरी तरह से तैयार है और उपयोग के लिए तैयार है।
अब अंतिम पाइपलाइन संस्करण का परीक्षण करने का समय आ गया है।
जेनकींस → जेनकींस डैशबोर्ड → "CI_CD_Pipeline" पर नेविगेट करें।
"बिल्ड नाउ" बटन पर क्लिक करें।
परिणाम देखने के लिए, बिल्ड कंसोल लॉग की समीक्षा करें।
बिल्ड कंसोल लॉग का स्क्रीनशॉट
आप देखेंगे कि बिल्ड कंसोल लॉग में "सीडी-जॉब" ट्रिगर किया गया था, और अंतिम स्थिति को सफलता के रूप में चिह्नित किया गया है।
4
इसके अलावा, आप नई डॉकर छवि को जोड़ने की पुष्टि करने के लिए डॉकरहब पर जा सकते हैं।
और अंत में, आप वेब ब्राउज़र का उपयोग करके अपने एप्लिकेशन तक पहुंच सकते हैं। निर्दिष्ट बाहरी आईपी पता और उसके बाद ":8080" दर्ज करें। थोड़ी देर के बाद, पेज लोड हो जाएगा, जिसमें "हैलोवर्ल्ड" संदेश दिखाई देगा।
इस आधुनिक सीआई/सीडी पाइपलाइन की स्थापना के लिए बधाई!
आपने बहुत बढ़िया काम किया है और आप असली हीरो हैं!
आपके सभी प्रयासों के लिए धन्यवाद!
ज़ुफ़र सनगाटोव एक अनुभवी वरिष्ठ सॉफ़्टवेयर इंजीनियर हैं जिन्हें आधुनिक सॉफ़्टवेयर सिस्टम डिज़ाइन करने का शौक है।
ज़ुफ़र सनगाटोव
AWS, K8S, Docker, Ansible, Git, Github, Apache Maven और जेनकिंस के साथ CI/CD पाइपलाइन का निर्माण | HackerNoon