अपने पिछले लेख में, मैंने माइक्रोसर्विसेज की आकर्षक दुनिया - माइक्रोसर्विस आर्किटेक्चर पैटर्न भाग 1: डीकंपोजिशन पैटर्न के बारे में विस्तार से बताया। यह माइक्रोसर्विसेज और उनके पैटर्न पर मेरी व्यापक लेख श्रृंखला की शुरुआत थी।
जबकि तार्किक कदम इस श्रृंखला के भाग 2 को जारी रखना होगा, मैंने फैसला किया है कि अगली चीज जो मैं तलाशना और आपको बताना चाहूंगा वह इन माइक्रोसर्विसेज को अंतिम उपयोगकर्ता तक निर्बाध रूप से पहुंचाने की महत्वपूर्ण प्रक्रिया है।
सामग्री अवलोकन
- प्रेरणा
- [मॉड्यूल 1]: AWS EC2 वर्चुअल सर्वर
- [मॉड्यूल 2]: जेनकींस सर्वर
- [मॉड्यूल 3]: गिट और गिथूब
- [मॉड्यूल 4]: अपाचे मावेन
- [मॉड्यूल 5]: डॉकर
- [मॉड्यूल 6]: उत्तरयोग्य
- [मॉड्यूल 7]: कुबेरनेट्स
- निष्कर्ष
- लेखक के बारे में
प्रेरणा
सीआई/सीडी ग्राहकों तक ऐप पहुंचाने की एक तकनीक है, जिसे ऐप विकास के विभिन्न चरणों में स्वचालन जोड़कर हासिल किया जाता है। मेरा मानना है कि सीआई/सीडी (कंटीन्यूअस इंटीग्रेशन एंड कंटीन्यूअस डिप्लॉयमेंट) को समझने से डेवलपर्स को इस बात की बेहतर समझ हासिल करने में मदद मिल सकती है कि प्रोजेक्ट रिपॉजिटरी की सीमाओं से परे बैकएंड प्रोजेक्ट कलाकृतियां कैसे मौजूद हैं। यह समझ किसी डेवलपर के परिप्रेक्ष्य में मौलिक बदलाव भी ला सकती है। अपने काम को केवल कोड की पंक्तियों के रूप में देखने के बजाय, वे अपने प्रोजेक्ट के व्यापक संदर्भ को एक मूल्यवान उत्पाद के रूप में अपनाना शुरू कर सकते हैं।
इस लेख में, हमारा लक्ष्य व्यावहारिक अनुप्रयोग के माध्यम से सीआई/सीडी प्रक्रिया के रहस्य को उजागर करना है। हम आपको चरण-दर-चरण ट्यूटोरियल के माध्यम से ले जाएंगे, इसे मॉड्यूल द्वारा मॉड्यूल में विभाजित करेंगे, जहां आप मैन्युअल रूप से सीआई/सीडी पाइपलाइन का निर्माण करेंगे। ऐसा करने के लिए, हम AWS, Docker, Kubernetes, Ansible, Git, Apache Maven और Zenkins जैसे समकालीन DevOps टूल की शक्ति का उपयोग करेंगे। तो चलिए शुरू करते हैं यह यात्रा!
[मॉड्यूल 1]: AWS EC2 वर्चुअल सर्वर
यह मॉड्यूल AWS EC2 वर्चुअल सर्वर इंस्टेंस के निर्माण के लिए समर्पित है। इस आलेख के भाग के रूप में, आप जेनकिंस, एन्सिबल और कुबेरनेट्स के लिए तीन EC2 इंस्टेंसेस स्थापित करेंगे। अभी के लिए, आप अगले मॉड्यूल के साथ आगे बढ़ सकते हैं और इस मॉड्यूल को "[मॉड्यूल 2]: जेनकिंस", "[मॉड्यूल 6]: एन्सिबल" और "[मॉड्यूल 7]: कुबेरनेट्स" अनुभागों में फिर से देख सकते हैं।
चरण 1: एक AWS खाता बनाएँ
https://aws.amazon.com पर जाएं।
AWS खाता बनाएं बटन पर क्लिक करें।
खाता बनाएं वेब पेज पर दिए गए निर्देशों का पालन करें.
चरण 2: अपने AWS खाते में साइन इन करें
https://console.aws.amazon.com/console/home पर जाएं। साइन इन बटन पर क्लिक करें.
इस वेब पेज पर सभी आवश्यक क्रेडेंशियल दर्ज करें।
चरण 3: EC2 वर्चुअल सर्वर ढूंढें
खोज बॉक्स में EC2 ढूंढें.
EC2 सेवा पर क्लिक करके EC2 वर्चुअल सर्वर चुनें।
बटन लॉन्च इंस्टेंस पर क्लिक करें।
चरण 4: "नाम और टैग" अनुभाग कॉन्फ़िगर करें
"नाम और टैग" अनुभाग पर जाएँ।
"नाम" अनुभाग में नए AWS EC2 वर्चुअल सर्वर इंस्टेंस के लिए एक नाम प्रदान करें।
आप ''अतिरिक्त टैग जोड़ें'' पर क्लिक करके अपने वर्चुअल सर्वर के लिए अतिरिक्त टैग भी जोड़ सकते हैं।
चरण 5: "एप्लिकेशन और ओएस छवियाँ (अमेज़ॅन मशीन छवि)" अनुभाग कॉन्फ़िगर करें
"एप्लिकेशन और ओएस इमेज (अमेज़ॅन मशीन इमेज)" अनुभाग पर जाएं।
वर्चुअल सर्वर के साथ मुफ़्त में खेलने के लिए:
- अपने वर्चुअल सर्वर के लिए ऑपरेटिंग सिस्टम चुनें - अमेज़ॅन लिनक्स ।
- अमेज़ॅन मशीन इमेज (एएमआई) अनुभाग में, फ्री टियर पात्र टैग वाली एक मशीन का चयन करें।
चरण 6: "इंस्टेंस प्रकार" अनुभाग कॉन्फ़िगर करें
''इंस्टेंस प्रकार'' अनुभाग पर जाएँ।
वर्चुअल सर्वर के साथ मुफ़्त में खेलने के लिए:
इंस्टेंस प्रकार अनुभाग में फ्री टियर पात्र टैग के साथ एक प्रकार का चयन करें।
मेरे लिए यह t2.micro (परिवार: t2 1cCPU 1 GiB मेमोरी वर्तमान पीढ़ी: सत्य) है।
चरण 7: "भंडारण कॉन्फ़िगर करें" अनुभाग कॉन्फ़िगर करें
''भंडारण कॉन्फ़िगर करें'' अनुभाग पर जाएँ।
वर्चुअल सर्वर के साथ मुफ़्त में खेलने के लिए:
डिफ़ॉल्ट सेटिंग्स न बदलें. फ्री टियर पात्र ग्राहक 30 जीबी ईबीएस सामान्य प्रयोजन (एसएसडी) या मैग्नेटिक स्टोरेज प्राप्त कर सकते हैं।
चरण 8: "नेटवर्क सेटिंग्स" अनुभाग कॉन्फ़िगर करें
"नेटवर्क सेटिंग" अनुभाग पर जाएँ।
आपको अपने वर्चुअल सर्वर की सुरक्षा स्थापित करने की आवश्यकता है। यह करने के लिए,
- "सुरक्षा समूह बनाएं" बटन पर क्लिक करें।
- "सुरक्षा समूह का नाम" अनुभाग में अपने नए सुरक्षा समूह का नाम जोड़ें।
- "विवरण" अनुभाग में अपने नए सुरक्षा समूह का विवरण जोड़ें।
डिफ़ॉल्ट रूप से, आपका वर्चुअल सर्वर ( टाइप - एसएसएच, प्रोटोकॉल - टीसीपी, पोर्ट - 22 ) के माध्यम से पहुंच योग्य है। यदि आपको अतिरिक्त कनेक्शन प्रकारों की आवश्यकता है, तो अतिरिक्त इनबाउंड सुरक्षा समूह नियम जोड़कर उन्हें जोड़ें।
चरण 9: "कुंजी जोड़ी (लॉगिन)" अनुभाग कॉन्फ़िगर करें
''कुंजी जोड़ी (लॉगिन)'' अनुभाग पर जाएँ।
यदि आपने इसे अभी तक नहीं बनाया है तो एक नई कुंजी-जोड़ी बनाएं।
यदि आपने अभी तक "कुंजी-जोड़ी" नहीं बनाई है:
- "नई कुंजी जोड़ी बनाएं" बटन पर क्लिक करें।
- अपनी नई कुंजी-जोड़ी को "कुंजी जोड़ी का नाम" अनुभाग में एक नाम दें।
- कुंजी-जोड़ी प्रकार RSA या ED25519 चुनें। मैं आरएसए प्रकार चुनता हूं।
- निजी कुंजी फ़ाइल स्वरूप का चयन करें. .pem और .ppk का विकल्प। मैं .pem प्रारूप चुनता हूं।
- "कुंजी जोड़ी बनाएं" बटन पर क्लिक करें।
- आपको एक पॉप-अप विंडो मिलेगी जो आपको निजी कुंजी फ़ाइल डाउनलोड करने के लिए प्रेरित करेगी। सहमत हों और फ़ाइल को अपने कंप्यूटर पर डाउनलोड करें।
चरण 10: EC2 वर्चुअल सर्वर इंस्टेंस लॉन्च करें
"लॉन्च इंस्टेंस" बटन पर क्लिक करके EC2 वर्चुअल सर्वर इंस्टेंस लॉन्च करें।
EC2 वर्चुअल सर्वर इंस्टेंस निर्माण प्रक्रिया पूरी होने के बाद, आप निम्नलिखित देखेंगे।
फिर आपको " सभी उदाहरण देखें" बटन पर क्लिक करके "उदाहरण" अनुभाग पर जाना चाहिए।
अब आप देख सकते हैं कि आपका AWS EC2 वर्चुअल सर्वर इंस्टेंस चल रहा है।
[मॉड्यूल 2]: जेनकींस सर्वर
अब, आइए EC2 वर्चुअल सर्वर इंस्टेंस पर जेनकिंससर्वर को कॉन्फ़िगर करें।
चरण 1: एक AWS EC2 वर्चुअल सर्वर इंस्टेंस बनाएं
जेनकींस चलाने के लिए आपको एक वर्चुअल सर्वर की आवश्यकता है।
इस चरण को पूरा करने के लिए इस ट्यूटोरियल के [मॉड्यूल 1]: एडब्ल्यूएस ईसी2 वर्चुअल सर्वर अनुभाग के निर्देशों का पालन करें और जेनकिंससर्वर नाम से एक ईसी2 वर्चुअल सर्वर इंस्टेंस बनाएं।
सुरक्षा समूह सेटअप जोड़ना न भूलें. यह जेनकींस और एसएसएच को क्रमशः पोर्ट 8080 और 22 पर काम करने की अनुमति देता है।
अपने EC2 वर्चुअल सर्वर इंस्टेंस को अलग करने के लिए "JenkinsServer" नाम का उपयोग करें।
नए "जेनकिंससर्वर" AWS EC2 उदाहरण के लिए "CI_CD_Pipeline" सुरक्षा समूह और "CI_CD_Pipeline_Key_Pair" बनाएं। आप लेख में आगे उनका पुन: उपयोग कर सकते हैं।
चरण 2: AWS EC2 वर्चुअल सर्वर इंस्टेंस से कनेक्ट करें
AWS कंसोल होम पेज → EC2 मैनेजमेंट कंसोल डैशबोर्ड → इंस्टेंसेस पर जाएँ।
फिर आपको जेनकिंस सर्वर चुनना चाहिए और फिर "कनेक्ट" बटन पर क्लिक करना चाहिए।
फिर आपको यह वेब पेज दिखाई देगा। आपको फिर से "कनेक्ट" बटन पर क्लिक करना चाहिए।
अब आप EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल देख सकते हैं।
चरण 3: जेनकिंस रिपॉजिटरी डाउनलोड करें
अब आपको अपने EC2 वर्चुअल सर्वर इंस्टेंस पर जेनकींस डाउनलोड करना होगा।
इन निर्देशों का पालन करें:
जेनकींस डाउनलोड वेबपेज पर जाएं।
आप स्थिर (एलटीएस) और नियमित रिलीज़ (साप्ताहिक) विकल्प देख सकते हैं। Red Hat/Fedora/Alma/Rocky/CentOS LTS विकल्प चुनें।
आपको यह वेब पेज दिखाई देगा.
- "sudo get.." कमांड को कॉपी करें और इंटरनेट पर जेनकिंस रिपॉजिटरी से जेनकिंस फ़ाइलों को डाउनलोड करने के लिए इसे निष्पादित करें और उन्हें अपने EC2 वर्चुअल सर्वर इंस्टेंस पर निर्दिष्ट स्थान पर सहेजें।
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
अब जेनकींस डाउनलोड हो गया है।
चरण 4: जेनकींस कुंजी आयात करें
जेनकींस स्थापना को पूरा करने के लिए, हमें जेनकींस कुंजी आयात करने की आवश्यकता है।
जेनकिंस कुंजी को आयात करने के लिए हमें "sudo rpm.." कमांड को कॉपी करना होगा और इसे निष्पादित करना होगा।
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
इस तरह "आरपीएम" पैकेज प्रबंधक यह सत्यापित कर सकता है कि आपके द्वारा इंस्टॉल किए गए जेनकींस पैकेज बिल्कुल जेनकींस प्रोजेक्ट द्वारा प्रकाशित हैं, और उनके साथ छेड़छाड़ या दूषित नहीं किया गया है।
चरण 5: जावा स्थापित करें
जेनकींस को चलाने के लिए, हमें अपने EC2 वर्चुअल सर्वर इंस्टेंस पर जावा इंस्टॉल करना होगा।
जावा स्थापित करने के लिए, इस कमांड का उपयोग करें।
sudo amazon-linux-extras install java-openjdk11 -y
सत्यापित करें कि इस कमांड का उपयोग करके जावा सही ढंग से स्थापित किया गया था:
java -version
आपको कुछ ऐसा ही दिखेगा.
चरण 6: फॉन्टकॉन्फिग स्थापित करें
जेनकींस को चलाने के लिए, आपको हमारे EC2 वर्चुअल सर्वर इंस्टेंस पर फॉन्टकॉन्फिग इंस्टॉल करना होगा।
इस आदेश का प्रयोग करें.
sudo yum install fontconfig java-11-openjdk -y
फ़ॉन्टकॉन्फिग एक लाइब्रेरी है जिसे सिस्टम-वाइड फ़ॉन्ट कॉन्फ़िगरेशन, अनुकूलन और एप्लिकेशन एक्सेस प्रदान करने के लिए डिज़ाइन किया गया है। यह जेनकींस के लिए आवश्यक है क्योंकि जेनकींस में ऐसी विशेषताएं हैं जो फ़ॉन्ट प्रस्तुत करती हैं।
चरण 7: जेनकींस स्थापित करें
पहले के चरणों में, आपने एक विशिष्ट जेनकींस रिपॉजिटरी का उपयोग करने के लिए अपने EC2 वर्चुअल सर्वर इंस्टेंस को कॉन्फ़िगर किया था और फिर आपने इस रिपॉजिटरी से जुड़ी GPG कुंजी आयात की थी। अब, आपको वह कमांड चलाने की आवश्यकता है जो जेनकिंस पैकेज को खोजने के लिए उन सभी रिपॉजिटरी को खोजेगी जिनके बारे में वह जानता है, जिसमें आपके द्वारा जोड़ा गया जेनकींस भी शामिल है। एक बार जब उसे जेनकिंस रिपॉजिटरी में जेनकिंस पैकेज मिल जाएगा, तो वह इसे डाउनलोड और इंस्टॉल कर लेगा।
आइए इस कमांड को चलाएं।
sudo yum install jenkins -y
चरण 8: जेनकींस प्रारंभ करें
आप इस कमांड का उपयोग करके जेनकींस शुरू कर सकते हैं।
sudo systemctl start jenkins
यह जांचने के लिए कि जेनकींस चल रहा है, इस कमांड का उपयोग करें।
sudo systemctl status jenkins
आपको आउटपुट वैसा ही दिखेगा जैसा नीचे स्क्रीनशॉट में है:
जेनकींस को अब सक्रिय होना चाहिए।
चरण 9: जेनकींस तक पहुंचें
जेनकिंस एप्लिकेशन तक पहुंचने के लिए, कोई भी वेब ब्राउज़र खोलें और अपने EC2 इंस्टेंस का सार्वजनिक आईपी पता या डोमेन नाम और उसके बाद पोर्ट 8080 दर्ज करें।
http://<your-ec2-ip>:8080
पहली बार जब आप जेनकींस एक्सेस करेंगे, तो इसे ऑटोजेनरेटेड पासवर्ड से लॉक कर दिया जाएगा।
आपको निम्नलिखित कमांड का उपयोग करके यह पासवर्ड प्रदर्शित करना होगा।
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
इस पासवर्ड को कॉपी करें, अपने ब्राउज़र पर वापस लौटें, इसे एडमिनिस्ट्रेटर पासवर्ड फ़ील्ड में पेस्ट करें और "जारी रखें" पर क्लिक करें।
फिर आप इस वेब पेज को देख पाएंगे।
अब, आप अपने जेनकींस सर्वर का उपयोग कर सकते हैं।
चरण 10: नई जेनकींस पाइपलाइन बनाएं
अब, चूंकि जेनकींस ठीक काम कर रहा है, आप जेनकींस पाइपलाइन बनाना शुरू कर सकते हैं। जेनकींस पाइपलाइन बनाने के लिए आपको एक नया "फ्रीस्टाइल प्रोजेक्ट" बनाना होगा। एक नया "फ्रीस्टाइल प्रोजेक्ट" बनाने के लिए आपको जेनकिंस डैशबोर्ड पर जाना होगा और "नया आइटम" बटन पर क्लिक करना होगा।
जीथब "फ्रीस्टाइल प्रोजेक्ट" का नाम दर्ज करें ("पाइपलाइन" नाम आगे उपयोग किया जाएगा) और फिर "ओके" बटन पर क्लिक करें।
फिर पाइपलाइन का विवरण प्रदान करें।
फिर "लागू करें" और "सहेजें" बटन पर क्लिक करें। उसके बाद, इसका मतलब है कि आपने पाइपलाइन का मूल आधार तैयार कर लिया है जो इस ट्यूटोरियल में बनने जा रहा है।
[मॉड्यूल 3]: गिट और गिथूब
अब चूंकि जेनकींस AWS EC2 वर्चुअल सर्वर इंस्टेंस पर चल रहा है, आप पाइपलाइन के साथ Git को कॉन्फ़िगर कर सकते हैं।
Git एक स्वतंत्र और खुला स्रोत वितरित संस्करण नियंत्रण प्रणाली (VCS) है जिसे सॉफ्टवेयर टीमों को एक विशेष प्रकार के डेटाबेस में कोड में हर संशोधन पर नज़र रखने में मदद करने के लिए डिज़ाइन किया गया है। यदि कोई गलती हो जाती है, तो डेवलपर्स घड़ी को पीछे कर सकते हैं और टीम के सभी सदस्यों के लिए व्यवधान को कम करते हुए गलती को ठीक करने में मदद के लिए कोड के पुराने संस्करणों की तुलना कर सकते हैं। वीसीएस विशेष रूप से उपयोगी है
सबसे लोकप्रिय संस्करण नियंत्रण प्रणाली के रूप में Git हमें आपके प्रोजेक्ट Github रिपॉजिटरी से नवीनतम कोड को आपके EC2 वर्चुअल सर्वर इंस्टेंस पर खींचने में सक्षम बनाता है जहां आपका जेनकींस स्थापित है।
चरण 1: गिट स्थापित करें
Git इंस्टॉल करने के लिए इस कमांड का उपयोग करें।
sudo yum install git -y
अब इस कमांड का उपयोग करके सत्यापित करें कि Git काम कर रहा है।
git --version
अब Git EC2 वर्चुअल सर्वर इंस्टेंस पर ठीक काम कर रहा है।
चरण 2: जेनकींस डैशबोर्ड खोलें
चूंकि Git EC2 वर्चुअल सर्वर इंस्टेंस पर ठीक से काम कर रहा है, हम अब जेनकींस को Git के साथ एकीकृत कर सकते हैं।
इस एकीकरण को शुरू करने के लिए आइए जेनकिंस जीथब प्लगइन इंस्टॉल करें।
जेनकींस डैशबोर्ड अनुभाग पर जाएँ।
चरण 3: जेनकिंस प्लगइन मैनेजर खोलें
"जेनकींस प्रबंधित करें" बटन पर क्लिक करें और फिर "प्लगइन्स प्रबंधित करें" बटन पर क्लिक करें।
चरण 4: जीथब जेनकिंस प्लगइन ढूंढें
"उपलब्ध प्लगइन्स" बटन पर क्लिक करें।
Github प्लगइन खोज बॉक्स ढूंढें।
जीथब प्लगइन चुनें.
चरण 5: जीथब जेनकिंस प्लगइन स्थापित करें
जीथब प्लगइन चुनें. और फिर "रीस्टार्ट किए बिना इंस्टॉल करें" बटन पर क्लिक करें।
Github प्लगइन डाउनलोडिंग समाप्त होने तक प्रतीक्षा करें।
हाँ! जेनकींस जीथब प्लगइन स्थापित है।
चरण 6: जीथब जेनकींस प्लगइन कॉन्फ़िगर करें
अब जैसे ही GitHub जेनकींस प्लगइन स्थापित हो गया है, आप अंततः जेनकींस को Git के साथ एकीकृत करने के लिए इस प्लगइन को कॉन्फ़िगर कर सकते हैं। ऐसा करने के लिए आपको "शीर्ष पृष्ठ पर वापस जाएं" बटन पर क्लिक करके मुख्य पृष्ठ पर लौटना होगा।
फिर मुख्य पृष्ठ पर, आपको "जेनकींस प्रबंधित करें" बटन पर क्लिक करना होगा और फिर "ग्लोबल टूल कॉन्फ़िगरेशन" बटन पर क्लिक करना होगा।
फिर ग्लोबल टूल कॉन्फ़िगरेशन वेब पेज पर आपको Git अनुभाग पर जाना चाहिए।
Git अनुभाग में, आपको कंप्यूटर पर Git का नाम और पथ प्रदान करके Git को कॉन्फ़िगर करना होगा।
फिर "लागू करें" और "सहेजें" बटन** पर क्लिक करें।**
यहां, आपने जेनकिंस जीथब प्लगइन को कॉन्फ़िगर करना समाप्त कर लिया है।
चरण 7: Git को पाइपलाइन में एकीकृत करें
अब, चूंकि जेनकिंस जीथब प्लगइन स्थापित और कॉन्फ़िगर किया गया है, अब आप इस प्लगइन को अपनी पाइपलाइन में उपयोग करने में सक्षम हैं। यह आपकी पाइपलाइन को, जिसे आपने मॉड्यूल 2 में बनाया है, आपके प्रोजेक्ट कोड को निर्दिष्ट GitHub रिपॉजिटरी से खींचने की अनुमति देगा।
खैर, इस प्लगइन को अपनी पाइपलाइन में एकीकृत करने के लिए आपको सोर्स कोड प्रबंधन अनुभाग में जाना होगा और अपनी पाइपलाइन में Git चुनना होगा। फिर आपको अपना प्रोजेक्ट रिपोजिटरी यूआरएल प्रदान करना होगा। यदि आपका प्रोजेक्ट रिपॉजिटरी Github पर सार्वजनिक है, तो आपको क्रेडेंशियल प्रदान करने की आवश्यकता नहीं है। यदि प्रोजेक्ट रिपॉजिटरी Github पर निजी है, तो आपको क्रेडेंशियल प्रदान करने की आवश्यकता है।
आप मेरे प्रोजेक्ट का उपयोग अगले रिपोजिटरी यूआरएल के साथ कर सकते हैं: https://github.com/Sunagatov/Hello.git ।
बस इसे कॉपी करें और " रिपोजिटरी यूआरएल" इनपुट पर पेस्ट करें। फिर पाइपलाइन के साथ एकीकरण Git को समाप्त करने के लिए "लागू करें" और "सहेजें" बटन पर क्लिक करें।
चरण 8: परीक्षण Git को पाइपलाइन में एकीकृत किया गया
अब आप Github से किसी प्रोजेक्ट को खींचने के लिए अपनी अद्यतन पाइपलाइन का उपयोग कर सकते हैं। ऐसा करने के लिए आपको **"बिल्ड नाउ"**बटन पर क्लिक करना होगा। परिणामस्वरूप, आप बिल्ड इतिहास में एक सफल निर्माण देखेंगे।
बिल्ड इतिहास से पहला बिल्ड खोलें।
अब आप पहले निर्माण का सफल कार्य परिणाम देख सकते हैं। यदि आप अपना AWS EC2 टर्मिनल खोलते हैं। आप जांच सकते हैं कि पाइपलाइन अच्छी तरह से काम करती है।
बस इस आदेश का प्रयोग करें.
cd /var/lib/jenkins/workspace/{your pipeline name}
इस तरह आप देख सकते हैं कि Github से आपका प्रोजेक्ट आपके AWS EC2 वर्चुअल सर्वर इंस्टेंस पर खींच लिया गया था।
[मॉड्यूल 4]: अपाचे मावेन
अपाचे मावेन सॉफ्टवेयर विकास में व्यापक रूप से उपयोग किया जाने वाला बिल्ड ऑटोमेशन और प्रोजेक्ट प्रबंधन उपकरण है। यह प्रोजेक्ट निर्भरता को प्रबंधित करके और एक सुसंगत निर्माण जीवनचक्र प्रदान करके कोड के संकलन, परीक्षण और पैकेजिंग की प्रक्रिया को सुव्यवस्थित करता है। मेवेन परियोजना संरचना, निर्भरता और कार्यों को परिभाषित करने के लिए XML-आधारित कॉन्फ़िगरेशन फ़ाइलों (POM फ़ाइलों) का उपयोग करता है, जिससे डेवलपर्स जटिल सॉफ़्टवेयर परियोजनाओं को कुशलतापूर्वक प्रबंधित और तैनात कर सकते हैं।
अब जब आपने Git को पाइपलाइन में एकीकृत कर लिया है, तो आप Apache Maven को शामिल करके पाइपलाइन को और बढ़ा सकते हैं जो आपको अपना प्रोजेक्ट बनाने, परीक्षण करने और पैकेज करने में सक्षम बनाता है। ऐसा करने के लिए आपको अपने AWS EC2 वर्चुअल सर्वर इंस्टेंस पर Apache Maven इंस्टॉल करना होगा जहां जेनकींस और Git इंस्टॉल किए गए थे।
चरण 1: अपाचे मावेन डाउनलोड करें
अपाचे मावेन को डाउनलोड करने के लिए “/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 का उपयोग करें।
चरण 2: संग्रह से अपाचे मावेन निकालें
डाउनलोड किए गए संग्रह से अपाचे मावेन को निकालने के लिए इस कमांड का उपयोग करें:
sudo tar -xvzf apache-maven-*.tar.gz
चरण 3: JAVA_HOME और M2_HOME जोड़ें
इस कमांड का उपयोग करके रूट फ़ोल्डर में जाएँ।
cd ~
इस आदेश का उपयोग करके .bash_profile फ़ाइल संपादित करें।
vi .bash_profile
JAVA_HOME और M2_HOME वेरिएबल जोड़ें।
JAVA_HOME के लिए JDK11 को पथ और M2_HOME वेरिएबल के लिए मावेन निर्देशिका को पथ निर्दिष्ट करें।
JDK पथ खोजने के लिए, इस कमांड का उपयोग करें।
sudo find / -name java
वीआईएम का उपयोग कैसे करें
- फ़ाइल को संपादित करने के लिए डेटा डालने के लिए कीबोर्ड बटन "I" दबाएँ।
- फ़ाइल को सहेजने के लिए कीबोर्ड बटन " esc " दबाएँ और ":w" दर्ज करें।
- फ़ाइल से बाहर निकलने के लिए कीबोर्ड बटन "esc" दबाएँ और ":q" दर्ज करें।
परिवर्तनों को सुरक्षित करें।
फिर, सिस्टम वेरिएबल्स को रीफ्रेश करने के लिए इस कमांड को निष्पादित करें।
source .bash_profile
$PATH को सत्यापित करने के लिए, इस कमांड का उपयोग करें।
echo $PATH
अपाचे मावेन को सत्यापित करने के लिए, इस कमांड का उपयोग करें।
mvn -v
यदि आपने सब कुछ सही ढंग से किया है, तो आप अपाचे मावेन का संस्करण देख पाएंगे।
चरण 4: अपाचे मावेन जेनकींस प्लगइन स्थापित करें
चूँकि Apache Maven का उपयोग EC2 उदाहरण पर किया जा सकता है, आप इसे पाइपलाइन के साथ एकीकृत करने के लिए Apache Maven प्लगइन स्थापित कर सकते हैं।
इसे प्राप्त करने के लिए, इन चरणों का पालन करें:
- "डैशबोर्ड" → "जेनकींस प्रबंधित करें" → "प्लगइन प्रबंधित करें" → "उपलब्ध" पर नेविगेट करें।
- खोज बॉक्स में, "मावेन" दर्ज करें।
- "मावेन इंटीग्रेशन" प्लगइन चुनें।
डाउनलोडिंग प्रक्रिया समाप्त होने तक प्रतीक्षा करें।
और फिर "शीर्ष पृष्ठ पर वापस जाएं" बटन पर क्लिक करें।
चरण 5: अपाचे मावेन जेनकींस प्लगइन कॉन्फ़िगर करें
अपाचे मावेन जेनकींस प्लगइन की सफल स्थापना के साथ, अब आप इस प्लगइन का उपयोग उस पाइपलाइन के भीतर करने में सक्षम हैं जिसे आपने मॉड्यूल 2 और 3 में बनाया और अपडेट किया था।
ऐसा करने के लिए, इन चरणों का पालन करें:
- "डैशबोर्ड" → "जेनकींस प्रबंधित करें" → "ग्लोबल टूल कॉनफिगरेशन" → "जेडीके" पर जाएं
- "जेडीके जोड़ें" बटन पर क्लिक करें।
- "स्वचालित रूप से इंस्टॉल करें" को अनचेक करें।
फिर "मावेन" अनुभाग पर जाएँ। "मावेन जोड़ें" बटन पर क्लिक करें। "स्वचालित रूप से इंस्टॉल करें" को अनचेक करें।
फिर नाम और MAVEN_HOME पथ जोड़ें।
"लागू करें" और "सहेजें" बटन पर क्लिक करें।
यहां, आपने अपाचे मावेन जेनकिंस प्लगइन को कॉन्फ़िगर करना समाप्त कर लिया है।
चरण 6: अपाचे मावेन को पाइपलाइन में एकीकृत करें
अब जैसे ही Apache Maven GitHub प्लगइन स्थापित और कॉन्फ़िगर किया गया है, अब आप अपनी पाइपलाइन के भीतर Apache Maven का उपयोग करने में सक्षम हैं। यह आपकी पाइपलाइन को, जिसे आपने "[मॉड्यूल 2]: जेनकिंस सर्वर" में बनाया था, एक जार आर्टिफैक्ट बनाने के लिए अपना प्रोजेक्ट कोड बनाने की अनुमति देगा।
अपाचे मावेन को पाइपलाइन में एकीकृत करने के लिए आपको इन चरणों का पालन करना होगा:
- "डैशबोर्ड" → "CI_CD_Pipeline" → "कॉन्फ़िगर करें" → "बिल्ड स्टेप्स" पर नेविगेट करें।
- "बिल्ड चरण जोड़ें" बटन पर क्लिक करें।
- "शीर्ष-स्तरीय मावेन लक्ष्यों को आमंत्रित करें" विकल्प चुनें।
- "अपाचे-मावेन" को "मावेन संस्करण" के रूप में चुनें।
- "लक्ष्य" इनपुट में "क्लीन पैकेज" कमांड जोड़ें।
- "उन्नत" बटन पर क्लिक करें।
- "POM" इनपुट में "pom.xml" जोड़ें।
अंत में, आपको पाइपलाइन के साथ अपाचे मावेन के एकीकरण को पूरा करने के लिए "लागू करें" और "सहेजें" बटन पर क्लिक करना चाहिए।
चरण 7: पाइपलाइन में एकीकृत अपाचे मावेन का परीक्षण करें
अब आप अपना Github प्रोजेक्ट बनाने के लिए अपनी अद्यतन पाइपलाइन का उपयोग कर सकते हैं। ऐसा करने के लिए आपको **"बिल्ड नाउ"**बटन पर क्लिक करना होगा। परिणामस्वरूप, आप बिल्ड इतिहास में एक सफल कार्य परिणाम देखेंगे।
यदि आप अपना AWS EC2 टर्मिनल खोलते हैं। आप जांच सकते हैं कि पाइपलाइन अच्छी तरह से काम करती है।
बस इस आदेश का प्रयोग करें.
cd /var/lib/jenkins/workspace/{your pipeline name}/target
इस तरह आप JAR आर्टिफैक्ट देख सकते हैं, जो GitHub से आपके प्रोजेक्ट के सफल निर्माण का संकेत देता है।
[मॉड्यूल 5]: डॉकर
अब "Ansible Server" नाम से एक नया EC2 इंस्टेंस बनाएं जहां आप Docker और Ansible इंस्टॉल करने जा रहे हैं।
चरण 1: AWS EC2 वर्चुअल सर्वर इंस्टेंस लॉन्च करें
इस चरण को पूरा करने के लिए इस ट्यूटोरियल के " AWS EC2 वर्चुअल सर्वर इंस्टेंस लॉन्च करें" अनुभाग के निर्देशों का उपयोग करें। सुरक्षा समूह सेटअप जोड़ना न भूलें. यह डॉकर और एसएसएच को क्रमशः पोर्ट 8080 और 22 पर काम करने की अनुमति देता है।
चरण 2: AWS EC2 वर्चुअल सर्वर इंस्टेंस से कनेक्ट करें
"कनेक्ट" बटन पर क्लिक करें।
अब आप EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल देख सकते हैं।
sudo chown ansible-admin:ansible-admin /opt/docker
चरण 3: Ansible EC2 वर्चुअल सर्वर पर डॉकर स्थापित करें।
अब आपको अपने Ansible EC2 इंस्टेंस पर docker इंस्टॉल करना होगा। ऐसा करने के लिए आपको एक नया डॉकर फ़ोल्डर बनाना होगा।
sudo mkdir /opt/docker
फिर, अगले कमांड को निष्पादित करके डॉकर इंस्टॉल करें।
sudo yum install docker -y
चरण 4: वर्तमान उपयोगकर्ता को Ansible EC2 वर्चुअल सर्वर पर डॉकर समूह में जोड़ें
आपको Docker को व्यवस्थापकीय विशेषाधिकार देने के लिए वर्तमान उपयोगकर्ता "ansible-admin" को "AnsibleServer" EC2 वर्चुअल सर्वर पर Docker समूह में जोड़ना होगा।
sudo usermod -a -G docker ansible-admin
इन परिवर्तनों को प्रभावी करने के लिए आपको लॉगआउट और वापस लॉग इन करना होगा।
फिर आप अगला कमांड निष्पादित कर सकते हैं
id ansible-admin
यह देखने के लिए कि नया डॉकर उपयोगकर्ता मौजूद है।
चरण 5: डॉकर लॉन्च करें
अब चूंकि डॉकर Ansible EC2 इंस्टेंस पर स्थापित है, आप इसे अगले कमांड को निष्पादित करके लॉन्च कर सकते हैं।
sudo systemctl start docker
जैसे ही डॉकर शुरू होता है आप अगला कमांड निष्पादित कर सकते हैं
sudo systemctl status docker
यह देखने के लिए कि डॉकर सक्रिय है और अभी चल रहा है।
चरण 6: डॉकरफ़ाइल बनाएं
पाइपलाइन के अंतिम संस्करण में, प्रक्रिया में आपके 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 उपयोग के लिए तैयार है।
चरण 7: डॉकर लॉगिन करें
अब जब आपकी Dockerfile उपयोग के लिए तैयार है, तो अपने प्रोजेक्ट के JAR आर्टिफैक्ट को **"JenkinsServer"**EC2 इंस्टेंस से कॉपी करके और इसे "AnsibleServer" EC2 इंस्टेंस पर पेस्ट करके आगे बढ़ें। यह ध्यान रखना महत्वपूर्ण है कि यह स्थानांतरण आगे पाइपलाइन के माध्यम से स्वचालित हो जाएगा।
इस चरण को पूरा करके, आप अपने द्वारा सेट किए गए डॉकर वातावरण के साथ अपनी डॉकरफ़ाइल का परीक्षण करने के लिए तैयार होंगे।
परीक्षण शुरू करने से पहले, डॉकरहब पर स्वयं को प्रमाणित करना सुनिश्चित करें। निम्नलिखित आदेश निष्पादित करें.
docker login
यह कमांड आपको आपके उपयोगकर्ता नाम और पासवर्ड सहित अपना डॉकरहब लॉगिन क्रेडेंशियल प्रदान करने के लिए प्रेरित करेगा।
इसके साथ, आपने डॉकर में लॉग इन करने की प्रक्रिया पूरी कर ली है और अब परीक्षण के लिए आगे बढ़ने के लिए तैयार हैं।
चरण 8: डॉकर वातावरण और डॉकरफाइल का परीक्षण
Dockerhub में आपका सफल लॉगिन पूरा होने के साथ, अब आप अपने द्वारा तैयार किए गए Dockerfile का परीक्षण शुरू करने के लिए तैयार हैं।
डॉकर छवि बनाने के लिए इस आदेश को निष्पादित करें।
docker build -t hello:latest .
इसके बाद, एक टैग स्थापित करने के लिए निम्नलिखित कमांड निष्पादित करें जो छवि को डॉकरहब पर अपलोड करने की सुविधा प्रदान करेगा:
docker tag hello:latest zufarexplainedit/hello:latest
अंत में, इस कमांड के निष्पादन के माध्यम से डॉकर छवि को डॉकरहब पर धकेलने के लिए आगे बढ़ें।
docker push zufarexplainedit/hello:latest
इन चरणों का पालन करते हुए, यह सत्यापित करने के लिए अपने डॉकरहब खाते पर जाएँ कि आप एक नई छवि देख सकते हैं या नहीं।
अब आपको देखना चाहिए कि छवि प्रभावी ढंग से जोड़ दी गई है। यह परिणाम डॉकर वातावरण की सफल स्थापना की पुष्टि करता है और आपकी डॉकरफ़ाइल सही है।
[मॉड्यूल 6]: उत्तरयोग्य
अब हम EC2 वर्चुअल सर्वर इंस्टेंस पर Ansible सर्वर को कॉन्फ़िगर करते हैं।
चरण 1: एक AWS EC2 वर्चुअल सर्वर इंस्टेंस बनाएं
Ansible को चलाने के लिए आपको एक वर्चुअल सर्वर की आवश्यकता है।
इस चरण को पूरा करने और Ansible के लिए EC2 वर्चुअल सर्वर इंस्टेंस बनाने के लिए इस ट्यूटोरियल के [मॉड्यूल 1]: AWS EC2 वर्चुअल सर्वर अनुभाग के निर्देशों का पालन करें।
सुरक्षा समूह सेटअप जोड़ना न भूलें. यह Ansible और SSH को क्रमशः पोर्ट 8080 और 22 पर काम करने की अनुमति देता है।
अपने EC2 वर्चुअल सर्वर इंस्टेंस को अलग करने के लिए "AnsibleServer" नाम का उपयोग करें।
आप नए "AnsibleServer" EC2 उदाहरण के लिए "CI_CD_Pipeline" सुरक्षा समूह और "CI_CD_Pipeline_Key_Pair" का पुन: उपयोग कर सकते हैं।
चरण 2: AWS EC2 वर्चुअल सर्वर इंस्टेंस से कनेक्ट करें
AWS कंसोल होम पेज → EC2 प्रबंधन कंसोल डैशबोर्ड → इंस्टेंस → AnsibleServer पर जाएं।
फिर "कनेक्ट" बटन पर क्लिक करें।
फिर आपको यह वेब पेज दिखाई देगा. आपको फिर से "कनेक्ट" बटन पर क्लिक करना चाहिए।
अब आप EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल देख सकते हैं।
अब EC2 वर्चुअल सर्वर इंस्टेंस पर Ansible सर्वर को कॉन्फ़िगर करते हैं।
चरण 3: "AnsibleServer" AWS EC2 वर्चुअल सर्वर इंस्टेंस का होस्टनाम बदलें
जब आप EC2 वर्चुअल सर्वर इंस्टेंस पर AnsibleServer को कॉन्फ़िगर करना चाहते हैं तो सबसे पहली चीज़ जो आपको करने की ज़रूरत है वह है इसका होस्टनाम बदलना।
चलो यह करते हैं। होस्टनाम फ़ाइल खोलने के लिए इस आदेश को निष्पादित करें:
sudo vi /etc/hostname
आपको कुछ इस तरह देखना चाहिए:
इस होस्टनाम को "ansible-server" से बदलें। फिर, इसे रीबूट करें।
sudo init 6
चरण 4: "AnsibleServer" 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" जोड़ें।
साथ ही, आपको पासवर्ड प्रमाणीकरण सक्षम करने के लिए /etc/ssh/sshd_config फ़ाइल को संपादित करना होगा।
sudo vi /etc/ssh/sshd_config
फिर आपको इन परिवर्तनों की पुष्टि करने के लिए सेवा को पुनः लोड करना होगा।
sudo service sshd reload
इस आदेश को निष्पादित करने के परिणामस्वरूप, आप देखेंगे:
अब आप आगे की सभी कमांड के लिए sudo जोड़ने से बचने के लिए इस कमांड का उपयोग कर सकते हैं।
sudo su - ansible-admin
चरण 5: AWS EC2 वर्चुअल सर्वर इंस्टेंस में कुंजी जेनरेट करें
आप इस आलेख में आगे K8s EC2 वर्चुअल सर्वर इंस्टेंसेस जैसे दूरस्थ सर्वर प्रबंधित करने की योजना बना रहे हैं। इसीलिए आपको SSH कुंजियाँ सेट करने की आवश्यकता है।
ssh-keygen
इस आदेश को निष्पादित करने के परिणामस्वरूप, आप देखेंगे:
अब SSH कुंजियाँ जनरेट हो गई हैं और उपयोग के लिए तैयार हैं।
चरण 6: अन्सिबल स्थापित करें
अब आप अपने "AnsibleServer" EC2 वर्चुअल सर्वर इंस्टेंस पर Ansible इंस्टॉल कर सकते हैं।
चलो यह करते हैं।
Ansible को स्थापित करने के लिए इस आदेश को निष्पादित करें।
sudo amazon-linux-extras install ansible2
Ansible को सत्यापित करने के लिए, इस कमांड का उपयोग करें:
ansible --version
इस आदेश को निष्पादित करने के परिणामस्वरूप, आप देखेंगे:
चरण 7: जेनकिंस सर्वर EC2 उदाहरण पर जेनकिंस "एसएसएच पर प्रकाशित करें" प्लगइन स्थापित करें
चूँकि Ansible आपके "AnsibleServer" EC2 वर्चुअल सर्वर इंस्टेंस पर स्थापित है, आप इसे Ansible के साथ एकीकृत करने के लिए जेनकींस को कॉन्फ़िगर कर सकते हैं। जेनकींस को EC2 वर्चुअल सर्वर इंस्टेंस जहां Ansible स्थापित है और अन्य EC2 वर्चुअल सर्वर इंस्टेंस जहां Kubernetes स्थापित है, के साथ एकीकृत करने के लिए आपको "SSH पर प्रकाशित करें" प्लगइन स्थापित करने की आवश्यकता है।
"डैशबोर्ड" → " जेनकींस प्रबंधित करें" → "सिस्टम कॉन्फ़िगर करें" → "उपलब्ध प्लगइन्स" पर जाएं।
फिर खोज बॉक्स में "एसएसएच पर प्रकाशित करें" दर्ज करें।
"रीस्टार्ट किए बिना इंस्टॉल करें" बटन पर क्लिक करें। डाउनलोडिंग प्रक्रिया समाप्त होने तक प्रतीक्षा करें।
अब "पब्लिश ओवर एसएसएच" प्लगइन जेनकिंस ईसी2 वर्चुअल सर्वर इंस्टेंस पर इंस्टॉल हो गया है।
चरण 8: जेनकींस "एसएसएच पर प्रकाशित करें" प्लगइन कॉन्फ़िगर करें
अपाचे मावेन जेनकींस प्लगइन की सफल स्थापना के साथ, अब आप इस प्लगइन का उपयोग उस पाइपलाइन के भीतर करने में सक्षम हैं जिसे आपने मॉड्यूल 2 और 3 में बनाया और अपडेट किया था।
ऐसा करने के लिए, इन चरणों का पालन करें:
"डैशबोर्ड" → "जेनकींस प्रबंधित करें" → "सिस्टम कॉन्फ़िगर करें" → "एसएसएच पर प्रकाशित करें" पर जाएं।
स्क्रीनशॉट पर मौजूद सभी आवश्यक डेटा दर्ज करें, जिसमें होस्टनाम, उपयोगकर्ता नाम और निजी कुंजी (या यदि लागू हो तो पासवर्ड) शामिल है।
फिर "लागू करें" और "सहेजें" बटन पर क्लिक करें।
यहां आपने "SSH पर प्रकाशित करें" जेनकींस प्लगइन को कॉन्फ़िगर करना समाप्त कर लिया है।
इसके बाद, यह सत्यापित करने के लिए कि प्लगइन सही ढंग से काम कर रहा है, "टेस्ट कॉन्फ़िगरेशन" पर क्लिक करें।
बाईं ओर आप देख सकते हैं कि परीक्षण प्लगइन कॉन्फ़िगरेशन स्थिति "सफलता" है। इसका मतलब है कि प्लगइन कॉन्फ़िगरेशन सही है.
चरण 9: AnsibleServer में नई डॉकर निर्देशिका बनाएं
आपको AnsibleServer EC2 इंस्टेंस पर एक नया फ़ोल्डर बनाने की आवश्यकता है जहां प्रोजेक्ट JAR संग्रहीत किया जाएगा। इस जार का उपयोग बाद में डॉकर छवि बनाने के लिए किया जाएगा।
चलो शुरू करो।
AnsibleServer EC2 उदाहरण में "/opt" फ़ोल्डर पर जाएँ।
cd /opt
वहां एक नया फ़ोल्डर "डॉकर" बनाएं।
sudo mkdir docker
इस "डॉकर" फ़ोल्डर को विशेषाधिकार दें।
sudo chown ansible-admin:ansible-admin docker
अब, इस आदेश को निष्पादित करके "डॉकर" फ़ोल्डर विशेषाधिकारों की जांच करें।
ll
आप देख सकते हैं कि "docker" फ़ोल्डर "ansible-admin" उपयोगकर्ता के साथ पहुंच योग्य है।
चरण 10: पाइपलाइन में "एसएसएच पर प्रकाशित करें" जीथब प्लगइन को एकीकृत करें
अब "एसएसएच पर प्रकाशित करें" जीथब प्लगइन स्थापित और कॉन्फ़िगर किया गया है, अब आप इसे उस पाइपलाइन में एकीकृत करने में सक्षम हैं जिसे आपने "[मॉड्यूल 2]: जेनकिंस सर्वर" में प्रोजेक्ट जार आर्टिफैक्ट को " जेनकिंस सर्वर" से स्थानांतरित करने के लिए बनाया था। "AnsibleServer" ।
खैर, पाइपलाइन में "एसएसएच पर प्रकाशित करें" जीथब प्लगइन को एकीकृत करने के लिए आपको इन चरणों का पालन करना होगा:
- "डैशबोर्ड" → "CI_CD_Pipeline" → "कॉन्फ़िगर करें" → "पोस्ट-बिल्ड एक्शन" पर नेविगेट करें।
- "पोस्ट-बिल्ड एक्शन जोड़ें" बटन पर क्लिक करें।
- "SSH पर निर्मित कलाकृतियाँ भेजें" विकल्प चुनें।
- "SSH सर्वर" अनुभाग में "नाम" इनपुट में "AnsibleServer" जोड़ें**।**
- "ट्रांसफर सेट" अनुभाग में "स्रोत फ़ाइलें" इनपुट में "लक्ष्य/*.jar" जोड़ें**।**
- "ट्रांसफर सेट" अनुभाग में "लक्ष्य/" को "उपसर्ग हटाएं" इनपुट में जोड़ें**।**
- "ट्रांसफर सेट" अनुभाग में "दूरस्थ निर्देशिका" इनपुट में "//opt/docker/" जोड़ें**।**
- अभी के लिए, बस 'ट्रांसफर सेट' अनुभाग के अंतर्गत 'एक्सेक कमांड' इनपुट में एक खाली स्ट्रिंग डालें।
अंत में, आपको पाइपलाइन के साथ " एसएसएच पर प्रकाशित करें" प्लगइन का एकीकरण पूरा करने के लिए "लागू करें" और "सहेजें" बटन पर क्लिक करना चाहिए।
चरण 11: पाइपलाइन में एकीकृत जीथब प्लगइन "एसएसएच पर प्रकाशित करें" का परीक्षण करें
अब आप प्रोजेक्ट जार आर्टिफैक्ट को " जेनकिंससर्वर" से "एन्सिबलसर्वर" में स्थानांतरित करने के लिए अपनी अद्यतन पाइपलाइन का उपयोग कर सकते हैं। ऐसा करने के लिए आपको "बिल्ड नाउ" बटन पर क्लिक करना होगा। परिणामस्वरूप आप निर्माण इतिहास में एक सफल कार्य परिणाम देखेंगे।
यदि आप अपना "AnsibleServer" AWS EC2 टर्मिनल खोलते हैं। आप जांच सकते हैं कि पाइपलाइन अच्छी तरह से काम करती है।
बस इस आदेश का प्रयोग करें.
cd /opt/docker
इस तरह आप JAR आर्टिफैक्ट देख सकते हैं, जो GitHub से आपके प्रोजेक्ट के सफल निर्माण का संकेत देता है।
चरण 12: अन्सिबल होस्ट कॉन्फ़िगर करें
जब आप एक अन्सिबल प्लेबुक चलाते हैं, तो आप उन होस्टों को निर्दिष्ट करते हैं जिन पर इसे चलाना चाहिए। आप इसे दो तरीकों से कर सकते हैं:
- सीधे प्लेबुक में होस्ट निर्दिष्ट करें: अपनी प्लेबुक में, आप
hosts
पैरामीटर को आईपी पते या होस्टनाम की सूची में सेट कर सकते हैं। - इन्वेंट्री फ़ाइल का उपयोग करें: Ansible आपको इन्वेंट्री फ़ाइल में होस्ट की एक सूची को परिभाषित करने और अपनी प्लेबुक चलाते समय इस फ़ाइल को संदर्भित करने की अनुमति देता है। डिफ़ॉल्ट इन्वेंट्री फ़ाइल
/etc/ansible/hosts
है।
/etc/ansible/hosts
संपादित करके, आप हर बार प्लेबुक चलाने पर उनके आईपी पते लिखे बिना आसानी से होस्ट के समूहों को प्रबंधित कर सकते हैं।
आइए निम्नलिखित कमांड निष्पादित करके AnsibleServer EC2 इंस्टेंस होस्ट का पता लगाएं।
sudo ifconfig
AnsibleServer EC2 इंस्टेंस होस्ट का पता लगाने के बाद, आप इसे निम्न कमांड निष्पादित करके Ansible होस्ट फ़ाइल में जोड़ सकते हैं।
sudo vi /etc/ansible/hosts
आप संदर्भ के रूप में "[ansible]" भी जोड़ सकते हैं
यदि आप सर्वरों का एक समूह प्रबंधित कर रहे हैं और आप उन सभी पर एक प्लेबुक लागू करना चाहते हैं, तो प्लेबुक में प्रत्येक सर्वर के आईपी पते को निर्दिष्ट करने के बजाय, आप बस सभी सर्वरों को इन्वेंट्री फ़ाइल में एक समूह में जोड़ सकते हैं और फिर निर्दिष्ट कर सकते हैं प्लेबुक में समूह.
चरण 13: Ansible के लिए पासवर्ड रहित 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 [email protected]
अब आप "जोड़ी गई कुंजी(कुंजियों) की संख्या: 1" देख सकते हैं। इसका मतलब है कि पासवर्ड रहित एसएसएच प्रमाणीकरण इंस्टॉलेशन सफलतापूर्वक पूरा हो गया था।
चरण 14: डॉकर कार्यों के लिए एक नई एन्सिबल प्लेबुक बनाएं
अब जब Ansible पूरी तरह तैयार हो गया है और जाने के लिए तैयार है, तो आप अपनी पाइपलाइन के लिए एक नई Ansible प्लेबुक बना सकते हैं। यह प्लेबुक Ansible को एक नई Docker छवि बनाने और Dockerhub को भेजने देगी।
यहां बताया गया है कि आप यह कैसे कर सकते हैं:
- एक नई Ansible प्लेबुक फ़ाइल बनाकर प्रारंभ करें। बस इस आदेश का प्रयोग करें.
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
डॉकर कार्यों के लिए अन्सिबल प्लेबुक उपयोग के लिए तैयार है।
चरण 13: डॉकर कार्यों के साथ एन्सिबल प्लेबुक का परीक्षण करें
Ansible, Ansible प्लेबुक, AnsibleServer और जेनकिंस सर्वर सभी को ठीक से कॉन्फ़िगर करने के साथ, यह Ansible प्लेबुक का परीक्षण करने का समय है।
अपनी Ansible प्लेबुक के स्थान पर नेविगेट करें।
cd /opt/docker
फिर, निम्न आदेश निष्पादित करें।
sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml
पूरा होने पर, आप अपनी Ansible प्लेबुक का सफल निष्पादन परिणाम देखेंगे।
इसके अलावा, अपने डॉकरहब खाते पर जाने के लिए कुछ समय निकालें और सत्यापित करें कि क्या अब कोई नई छवि दिखाई दे रही है।
आपको नई जोड़ी गई छवि देखनी चाहिए. यह परिणाम पुष्टि करता है कि आपकी अन्सिबल प्लेबुक सही है।
चरण 14: Ansible Docker कार्यों को पाइपलाइन में एकीकृत करें
अब "एसएसएच पर प्रकाशित करें" जीथब प्लगइन, एन्सिबल और डॉकर स्थापित और कॉन्फ़िगर किए गए हैं, अब आप प्रोजेक्ट जार आर्टिफैक्ट को स्थानांतरित करने के लिए "[मॉड्यूल 2]: जेनकिंस सर्वर" में बनाई गई पाइपलाइन में उन सभी को एकीकृत करने में सक्षम हैं। " जेनकिंससर्वर" से "एन्सिबलसर्वर" तक और फिर अपने प्रोजेक्ट से एक नई डॉकर छवि बनाएं और फिर इस डॉकर छवि को डॉकरहब पर धकेलें।
इसे प्राप्त करने के लिए आपको इन चरणों का पालन करना होगा:
- "डैशबोर्ड" → "सीआई_सीडी_पाइपलाइन" → "कॉन्फ़िगर" → "पोस्ट-बिल्ड एक्शन" → "एसएसएच पर बिल्ड आर्टवर्क भेजें" पर नेविगेट करें।
- "Exec कमांड" इनपुट में "sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml" कमांड जोड़ें।
अंत में, पाइपलाइन के साथ एकीकरण Ansible Docker कार्यों को पूरा करने के लिए "लागू करें" और "सहेजें" बटन पर क्लिक करें।
चरण 15: पाइपलाइन में एकीकृत "डॉकर कार्यों के साथ एन्सिबल प्लेबुक" का परीक्षण करें
अब आप प्रोजेक्ट जार आर्टिफैक्ट को " जेनकिंससर्वर" से "एन्सिबलसर्वर" में स्थानांतरित करने के लिए अपनी उन्नत पाइपलाइन का परीक्षण कर सकते हैं, फिर अपने प्रोजेक्ट से एक नई डॉकर छवि बना सकते हैं और फिर इस डॉकर छवि को डॉकरहब पर धकेल सकते हैं। ऐसा करने के लिए आपको "बिल्ड नाउ" बटन पर क्लिक करना होगा। परिणामस्वरूप आप निर्माण इतिहास में एक सफल कार्य परिणाम देखेंगे।
इसके अलावा, अपने डॉकरहब खाते पर जाने के लिए कुछ समय निकालें और सत्यापित करें कि क्या अब कोई नई छवि दिखाई दे रही है।
आपको नई जोड़ी गई छवि देखनी चाहिए. यह परिणाम पुष्टि करता है कि डॉकर कार्यों के साथ आपकी एंसिबल प्लेबुक को पाइपलाइन में सफलतापूर्वक एकीकृत किया गया था।
[मॉड्यूल 7]: कुबेरनेट्स
आइए अब K8s को EC2 इंस्टेंस पर कॉन्फ़िगर करें। आप एक नया EC2 इंस्टेंस बनाने जा रहे हैं और Kubernetes क्लस्टर के साथ आगे इंटरैक्ट करने के लिए उनके kubectl कमांड-लाइन टूल को इंस्टॉल करेंगे।
चरण 1: AWS EC2 वर्चुअल सर्वर इंस्टेंस लॉन्च करें
इस चरण को पूरा करने के लिए इस ट्यूटोरियल के " AWS EC2 वर्चुअल सर्वर इंस्टेंस लॉन्च करें" अनुभाग के निर्देशों का उपयोग करें।
सुरक्षा समूह सेटअप जोड़ना न भूलें. यह सभी टूल्स और एसएसएच को क्रमशः पोर्ट 8080 और 22 पर काम करने की अनुमति देता है।
अपने EC2 वर्चुअल सर्वर इंस्टेंस को अलग करने के लिए "K8sServer" नाम का उपयोग करें।
आप नए "K8sServer" EC2 उदाहरण के लिए "CI_CD_Pipeline" सुरक्षा समूह और "CI_CD_Pipeline_Key_Pair" का पुन: उपयोग कर सकते हैं।
चरण 2: AWS EC2 वर्चुअल सर्वर इंस्टेंस से कनेक्ट करें
"कनेक्ट" बटन पर क्लिक करें।
अब आप EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल देख सकते हैं।
चरण 3: "कुबेरनेट्ससर्वर" AWS EC2 वर्चुअल सर्वर इंस्टेंस का होस्टनाम बदलें
जब आप EC2 वर्चुअल सर्वर इंस्टेंस पर KuberenetesServer को कॉन्फ़िगर करना चाहते हैं तो सबसे पहले आपको इसका होस्टनाम बदलना होगा।
चलो यह करते हैं। होस्टनाम फ़ाइल खोलने के लिए इस आदेश को निष्पादित करें:
sudo vi /etc/hostname
आपको कुछ इस तरह देखना चाहिए.
इस होस्टनाम को "कुबेरनेट्स-सर्वर" से बदलें और फिर इसे रीबूट करें।
sudo init 6
आपका होस्टनाम बदल दिया गया है.
चरण 4: AWS CLI संस्करण की जाँच करें
AWS संस्करण की जाँच करने के लिए इस कमांड का उपयोग करें।
aws --version
इस तरह आप अपना वर्तमान aws-cli संस्करण देख सकते हैं।
यदि आप संस्करण aws-cli/1.18 देख सकते हैं, तो आपको नवीनतम संस्करण डाउनलोड करना चाहिए।
चरण 5: एडब्ल्यूएस सीएलआई अपडेट करें
अब जैसा कि आपको पता चला है कि आपके EC2 इंस्टेंस पर एक पुराना aws-cli संस्करण है, आपको इसे अपडेट करने की आवश्यकता है। इसके लिए AWS → दस्तावेज़ीकरण → AWS कमांड लाइन इंटरफ़ेस → संस्करण 2 के लिए उपयोगकर्ता मार्गदर्शिका पर जाएँ।
कर्ल कमांड को कॉपी-पेस्ट करें।
सबसे पहले, awscli संस्करण 2 डाउनलोड करने के लिए इस कमांड को निष्पादित करें।
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
डाउनलोडिंग प्रक्रिया शुरू होने तक प्रतीक्षा करें।
आपको कुछ इस तरह देखना चाहिए.
दूसरा, आपको awscli संस्करण 2 संग्रह को अनज़िप करने के लिए इस कमांड को निष्पादित करने की आवश्यकता है।
unzip awscliv2.zip
तीसरा, आपको awscli संस्करण 2 को स्थापित करने के लिए इस कमांड को निष्पादित करना चाहिए।
sudo ./aws/install
फिर, Kubernetes EC2 वर्चुअल सर्वर इंस्टेंस ऑनलाइन टर्मिनल को पुनः लोड करें।
इसके बाद, AWS संस्करण की जाँच करने के लिए इस कमांड का उपयोग करें
aws --version
आप देख सकते हैं कि aws cli में aws-cli/2 है।
चरण 6: कुबेक्टल स्थापित करें
Kubectl अंतर्निहित बुनियादी ढांचे की परवाह किए बिना, किसी भी Kubernetes क्लस्टर के साथ बातचीत करने के लिए एक मौलिक कमांड-लाइन उपकरण है। यह आपको कुबेरनेट्स क्लस्टर के भीतर संसाधनों को प्रबंधित करने, एप्लिकेशन तैनात करने, नेटवर्किंग कॉन्फ़िगर करने, लॉग तक पहुंचने और कई अन्य कार्य करने की अनुमति देता है।
अब आपको Kubernetes क्लस्टर के साथ आगे इंटरैक्ट करने के लिए kubectl कमांड-लाइन टूल इंस्टॉल करना होगा। इसके लिए आपको AWS → दस्तावेज़ीकरण → Amazon EKS → उपयोगकर्ता गाइड → kubectl इंस्टॉल या अपडेट करना → Linux पर जाना होगा।
या बस लिंक https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html पर क्लिक करें।
सबसे पहले, kubectl डाउनलोड करने के लिए इस कमांड को निष्पादित करें।
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.1/2023-04-19/bin/linux/amd64/kubectl
डाउनलोडिंग प्रक्रिया की प्रतीक्षा करें।
आपको कुछ ऐसा दिखेगा.
Kubectl को अनुमति दें.
chmod +x kubectl
Kubectl को /usr/local/bin फ़ोल्डर में ले जाएँ।
sudo mv kubectl /usr/local/bin
Kubectl के संस्करण की जाँच करें।
kubectl version --output=yaml
चरण 7: eksctl स्थापित करें
एक्ससीटीएल एक अन्य कमांड-लाइन टूल है जो विशेष रूप से अमेज़ॅन ईकेएस सेवा के लिए तैयार किया गया है। एक्ससीटीएल का उपयोग एडब्ल्यूएस ईकेएस क्लस्टर बनाने, नोड समूहों को प्रबंधित करने और ईकेएस के लिए विशिष्ट कार्यों को करने के लिए किया जा सकता है, जैसे कि एडब्ल्यूएस इंफ्रास्ट्रक्चर सेटअप और प्रबंधन के अधिकांश हिस्से को हटाकर आईएएम भूमिकाओं और अन्य एडब्ल्यूएस सेवाओं के साथ एकीकृत करना।
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
आपको संस्करण देखना चाहिए
चरण 8: eksctl के लिए IAM भूमिका बनाएँ
आपको एक IAM भूमिका बनानी होगी और इसे अपने "KubernetesServer" EC2 इंस्टेंस से जोड़ना होगा।
ऐसा करने के लिए आपको खोज बॉक्स में EC2 ढूंढना होगा।
https://us-east-1.console.aws.amazon.com/ec2 / लिंक पर क्लिक करके EC2 वर्चुअल सर्वर चुनें।
IAM डैशबोर्ड → भूमिकाएँ पर जाएँ।
IAM भूमिकाएँ वेब पेज पर "भूमिका बनाएँ" बटन पर क्लिक करें।
फिर "AWS सेवा", "EC2" चुनें। और "अगला" बटन पर क्लिक करें।
फिर, खोज बॉक्स में "AmazonEC2FullAccess" , "AmazonEC2FullAccess" , "IAMFullAccess" , "AWSCloudFormationFullAccess" ढूंढें और फिर "अनुमतियां जोड़ें" बटन पर क्लिक करें।
और फिर "अगला" बटन पर क्लिक करें।
फिर "भूमिका नाम" इनपुट में "Eksctl_Role" टाइप करें।
और "भूमिका बनाएं" बटन पर क्लिक करें।
भूमिका अंततः निर्मित होती है।
चरण 9: IAM भूमिका को eksctl से जोड़ें
AWS EC2 इंस्टेंस वेब पेज पर जाएँ। "कुबेरबेट्ससर्वर" चुनें। फिर "क्रियाएँ" → "सुरक्षा" → "IAM भूमिका संशोधित करें" पर क्लिक करें।
"Eksctl_Role" चुनें और फिर "अपडेट IAM रोल" बटन पर क्लिक करें।
अब आपकी IAM भूमिका आपके "EKS_Server" और eksctl टूल से जुड़ गई है।
चरण 10: 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
संशोधित आदेश निष्पादित करें और धैर्यपूर्वक क्लस्टर निर्माण प्रक्रिया के पूरा होने की प्रतीक्षा करें। आप देखेंगे कि ईकेएस क्लस्टर स्थिति को एडब्ल्यूएस क्लाउडफॉर्मेशन वेब पेज पर "बनाना" के रूप में दर्शाया गया है।
क्लस्टर निर्माण प्रक्रिया में आमतौर पर लगभग 20 मिनट लगते हैं। एक बार पूरा होने पर, टर्मिनल प्रक्रिया का परिणाम प्रदर्शित करेगा।
इसके अलावा, आप AWS CloudFormation वेब पेज पर सफल EKS क्लस्टर निर्माण स्थिति को सत्यापित कर सकते हैं।
चरण 11: Kubernetes परिनियोजन yaml फ़ाइल बनाएँ
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 बन गया है और उपयोग के लिए तैयार है।
चरण 12: Kubernetes Service 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 बन गया है और उपयोग के लिए तैयार है।
चरण 13: कुबेक्टल का उपयोग करके कुबेरनेट्स क्लस्टर का परीक्षण करें
आपके कुबेरनेट्स ईकेएस क्लस्टर के सफलतापूर्वक स्थापित और कॉन्फ़िगर होने और आपकी कुबेरनेट्स सेवा और परिनियोजन फ़ाइलें तैयार होने के साथ, कुबेक्टल कमांड का उपयोग करके चीजों को परीक्षण में डालने का समय आ गया है।
परिनियोजन लागू करें.
परिनियोजन कॉन्फ़िगरेशन लागू करने के लिए निम्न आदेश का उपयोग करें।
kubectl apply -f hello-app-deployment.yaml
यह आपके एप्लिकेशन की उपलब्धता और प्रबंधनीयता सुनिश्चित करते हुए, प्रतिकृतियों की निर्दिष्ट संख्या और एक रोलिंग अपडेट रणनीति के साथ एक तैनाती तैयार करेगा।
2. सेवा लागू करें.
इसके बाद, सेवा कॉन्फ़िगरेशन लागू करें।
kubectl apply -f hello-app-service.yaml
यह आपके एप्लिकेशन को इंटरनेट पर उजागर करते हुए एक लोडबैलेंसर प्रकार की सेवा स्थापित करेगा।
ध्यान दें कि लोडबैलेंसर को प्रावधानित करने और बाहरी आईपी पता प्राप्त करने में थोड़ा समय लग सकता है।
लोडबैलेंसर स्थिति जांचें।
अपनी सेवा का उपयोग करके उसकी स्थिति की निगरानी करें।
kubectl get service zufarexplainedit-hello-app-service
जब एक बाहरी आईपी असाइन किया जाता है, तो आप अपने एप्लिकेशन तक पहुंचने के लिए लगभग तैयार होते हैं।
अपने एप्लिकेशन तक पहुंचें.
वेब ब्राउज़र का उपयोग करते हुए, निर्दिष्ट बाहरी आईपी पता और उसके बाद :8080 दर्ज करें। थोड़ी देर के बाद, पेज लोड हो जाएगा और "हैलोवर्ल्ड" संदेश प्रदर्शित होगा। ध्यान रखें कि प्रारंभिक लोडिंग में कुछ सेकंड लग सकते हैं।
Kubectl कमांड के साथ सफाई
जब आपको अपने कुबेरनेट्स वातावरण में संसाधनों को व्यवस्थित करने की आवश्यकता होती है, तो आप तैनाती, पॉड्स और सेवाओं को प्रभावी ढंग से हटाने के लिए निम्नलिखित कुबेक्टल कमांड का उपयोग कर सकते हैं।
1. सभी परिनियोजन हटाएँ ।
सभी परिनियोजनों को हटाने के लिए, आप निम्न आदेश का उपयोग कर सकते हैं।
kubectl delete deployments --all
यह क्रिया सुनिश्चित करती है कि आपके क्लस्टर में कोई सक्रिय परिनियोजन उदाहरण नहीं बचा है।
2. सभी पॉड्स हटाएं ।
यदि आपको सभी पॉड्स को हटाने की आवश्यकता है, चाहे वे परिनियोजन द्वारा प्रबंधित हों या नहीं, तो आप निम्न कमांड का उपयोग कर सकते हैं।
kubectl delete pods --all
पॉड्स साफ़ करने से आपके क्लस्टर स्थिति को रीसेट करने या नई तैनाती के लिए तैयार होने में मदद मिल सकती है।
3. सभी सेवाएँ हटाएँ ।
आपके एप्लिकेशन को नेटवर्क पर उजागर करने वाली सेवाओं को साफ़ करने के लिए, आप निम्न कमांड का उपयोग कर सकते हैं।
kubectl delete services --all
सेवाओं को हटाने से डाउनटाइम शामिल हो सकता है, इसलिए आगे बढ़ने से पहले निहितार्थों पर विचार करें।
Amazon EKS क्लस्टर को हटाना
वर्कर नोड्स, नेटवर्किंग घटकों और अन्य संसाधनों सहित, eksctl
के साथ बनाए गए निर्दिष्ट अमेज़ॅन ईकेएस क्लस्टर से जुड़े सभी संसाधनों को हटाने के लिए, आप निम्न कमांड का उपयोग कर सकते हैं।
eksctl delete cluster --name {your cluster name} --region {your region name}
मेरे लिए यह।
eksctl delete cluster --name zufarexplainedit --region eu-north-1
सुनिश्चित करें कि आप क्लस्टर को रोकने के बारे में निश्चित हैं, क्योंकि यह क्रिया अपरिवर्तनीय है और इसके परिणामस्वरूप डेटा हानि होगी।
चरण 14: "कुबेरनेट्ससर्वर" AWS EC2 वर्चुअल सर्वर इंस्टेंस में एक नया उपयोगकर्ता जोड़ें और कॉन्फ़िगर करें
अब "KubernetesServer" AWS EC2 वर्चुअल सर्वर इंस्टेंस में एक नया ansible-admin उपयोगकर्ता जोड़ें।
ऐसा करने के लिए इस कमांड का उपयोग करें.
sudo useradd ansible-admin
फिर, ansible-admin उपयोगकर्ता के लिए पासवर्ड सेट करें।
sudo passwd ansible-admin
साथ ही, आपको sudoers फ़ाइल को संपादित करके उपयोगकर्ता विशेषाधिकारों को कॉन्फ़िगर करने की आवश्यकता है।
sudo visudo
इस sudoers फ़ाइल में "ansible-admin ALL=(ALL) ALL" जोड़ें।
साथ ही, आपको पासवर्ड प्रमाणीकरण सक्षम करने के लिए /etc/ssh/sshd_config फ़ाइल को संपादित करना होगा।
sudo vi /etc/ssh/sshd_config
फिर आपको ये परिवर्तन करने के लिए सेवा को पुनः लोड करना होगा।
sudo service sshd reload
इस आदेश को निष्पादित करने के परिणामस्वरूप, आप देखेंगे:
अब आप आगे की सभी कमांड के लिए sudo जोड़ने से बचने के लिए इस कमांड का उपयोग कर सकते हैं।
sudo su - ansible-admin
चरण 15: AWS EC2 वर्चुअल सर्वर इंस्टेंस में कुंजी जेनरेट करें
आप इस आलेख में आगे K8s EC2 वर्चुअल सर्वर इंस्टेंस जैसे दूरस्थ सर्वर को प्रबंधित करने की योजना बना रहे हैं। इसीलिए आपको SSH कुंजियाँ सेट करने की आवश्यकता है।
ssh-keygen
इस आदेश को निष्पादित करने के परिणामस्वरूप, आप देखेंगे:
अब SSH कुंजियाँ जनरेट हो गई हैं और उपयोग के लिए तैयार हैं।
चरण 16: Ansible के लिए पासवर्ड रहित 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 [email protected]
अब आप "जोड़ी गई कुंजी(कुंजियों) की संख्या: 1" देख सकते हैं। इसका मतलब है कि पासवर्ड रहित एसएसएच प्रमाणीकरण इंस्टॉलेशन सफलतापूर्वक पूरा हो गया था।
चरण 17: AnsibleServer EC2 उदाहरण में Ansible होस्ट कॉन्फ़िगर करें
जब आप एक अन्सिबल प्लेबुक चलाते हैं, तो आप उन होस्टों को निर्दिष्ट करते हैं जिन पर इसे चलाना चाहिए। इस चरण में आपको KubernetesServer EC2 इंस्टेंस होस्ट निर्दिष्ट करने की आवश्यकता है। ऐसा करने के लिए आपको वही चरण दोहराने होंगे जो आपने " [मॉड्यूल 6]: एन्सिबल" में पारित किए थे।
आइए निम्नलिखित कमांड निष्पादित करके KubernetesServer EC2 इंस्टेंस होस्ट का पता लगाएं।
sudo ifconfig
KubernetesServer EC2 इंस्टेंस होस्ट मिलने के बाद, आप इसे निम्न कमांड निष्पादित करके Ansible होस्ट फ़ाइल में जोड़ सकते हैं।
sudo vi /etc/ansible/hosts
आप संदर्भ के रूप में "[कुबेरनेट्स]" भी जोड़ सकते हैं
चरण 18: कुबेरनेट्स कार्यों के लिए एक नई अन्सिबल प्लेबुक बनाएं
अब जबकि Kubernetes पूरी तरह तैयार हो चुका है और उपयोग के लिए तैयार है, आप अपनी पाइपलाइन के लिए Kubernetes कार्यों के साथ एक नई Ansible प्लेबुक बना सकते हैं। यह प्लेबुक Ansible को आपके ऐप को Kubernetes क्लस्टर पर kubectl कमांड के साथ चलाने देगा।
यहां बताया गया है कि आप यह कैसे कर सकते हैं:
- एक नई Ansible प्लेबुक फ़ाइल बनाकर प्रारंभ करें। बस इस आदेश का प्रयोग करें.
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 प्लेबुक उपयोग के लिए तैयार है।
चरण 19: जेनकिंस के साथ कुबेरनेट्स कार्यों के लिए एक नई एन्सिबल प्लेबुक को एकीकृत करें
अब जब Kubernetes कार्यों के लिए Kubernetes, Ansible, और Ansible प्लेबुक पूरी तरह से सेट हो गए हैं और जाने के लिए तैयार हैं, तो आप इसे जेनकिंस के साथ एकीकृत कर सकते हैं।
जेनकिंस सर्वर → जेनकिंस डैशबोर्ड → नए आइटम पर जाएं।
"सीडी-जॉब" नाम से नया जेनकींस फ्रीस्टाइल प्रोजेक्ट बनाएं।
"ओके" बटन पर क्लिक करें।
"पोस्ट-बिल्ड एक्शन" अनुभाग पर जाएँ।
"पोस्ट-बिल्ड एक्शन जोड़ें" बटन पर क्लिक करें।
"SSH पर निर्मित कलाकृतियाँ भेजें" विकल्प चुनें।
SSH सर्वर के रूप में "AnsibleServer" चुनें।
इस कमांड को "exec कमांड" इनपुट में जोड़ें।
sudo -u ansible-admin ansible-playbook /opt/docker/kubernetes-hello-app.yml
"लागू करें" और "सहेजें" बटन पर क्लिक करें।
जेनकिंस डैशबोर्ड → “CI_CD_Pipeline” → कॉन्फ़िगर करें → “पोस्ट-बिल्ड एक्शन” अनुभाग पर जाएँ।
"पोस्ट-बिल्ड एक्शन जोड़ें" बटन पर क्लिक करें।
"अन्य प्रोजेक्ट बनाएँ" विकल्प चुनें।
"अन्य प्रोजेक्ट बनाएँ" अनुभाग पर जाएँ।
"केवल तभी ट्रिगर करें जब निर्माण स्थिर हो" विकल्प चुनें।
"प्रोजेक्ट टू बिल्ड" इनपुट में "सीडी-जॉब" जोड़ें।
"लागू करें" और "सहेजें" बटन पर क्लिक करें।
अब आप मान सकते हैं कि पाइपलाइन पूरी तरह से तैयार है और उपयोग के लिए तैयार है।
चरण 20: अंतिम पाइपलाइन संस्करण का परीक्षण
अब अंतिम पाइपलाइन संस्करण का परीक्षण करने का समय आ गया है।
जेनकींस → जेनकींस डैशबोर्ड → "CI_CD_Pipeline" पर नेविगेट करें।
"बिल्ड नाउ" बटन पर क्लिक करें।
परिणाम देखने के लिए, बिल्ड कंसोल लॉग की समीक्षा करें।
आप देखेंगे कि बिल्ड कंसोल लॉग में "सीडी-जॉब" ट्रिगर किया गया था, और अंतिम स्थिति को सफलता के रूप में चिह्नित किया गया है।
4
इसके अलावा, आप नई डॉकर छवि को जोड़ने की पुष्टि करने के लिए डॉकरहब पर जा सकते हैं।
और अंत में, आप वेब ब्राउज़र का उपयोग करके अपने एप्लिकेशन तक पहुंच सकते हैं। निर्दिष्ट बाहरी आईपी पता और उसके बाद ":8080" दर्ज करें। थोड़ी देर के बाद, पेज लोड हो जाएगा, जिसमें "हैलोवर्ल्ड" संदेश दिखाई देगा।
निष्कर्ष
इस आधुनिक सीआई/सीडी पाइपलाइन की स्थापना के लिए बधाई!
आपने बहुत बढ़िया काम किया है और आप असली हीरो हैं!
आपके सभी प्रयासों के लिए धन्यवाद!
लेखक के बारे में
ज़ुफ़र सनगाटोव एक अनुभवी वरिष्ठ सॉफ़्टवेयर इंजीनियर हैं जिन्हें आधुनिक सॉफ़्टवेयर सिस्टम डिज़ाइन करने का शौक है।
- सिटी (लंदन), एमटीएस (मॉस्को) और अन्य कंपनियों के लिए जावा, कोटलिन, एडब्ल्यूएस, डॉकर और कुबेरनेट्स का उपयोग करके उच्च-प्रदर्शन वितरित सिस्टम विकसित किया गया ( अधिक जानकारी के लिए आप ज़ुफ़र के लिंक्डइन प्रोफ़ाइल का अनुसरण कर सकते हैं )।
- शुरू से ही एक ओपन-सोर्स ऑनलाइन मार्केटप्लेस, आइस लाटे की स्थापना की (आप ज़ुफ़र की टीम में शामिल हो सकते हैं और GitHub पर उनके प्रोजेक्ट में योगदान कर सकते हैं: https://github.com/Sunagatov/Online-Store )।
- अपने ज्ञान और अनुभव को दूसरों के साथ साझा करने के लिए ZufarExplainedIT समुदाय की स्थापना की (आप Zufar के IT टेलीग्राम समुदाय का अनुसरण कर सकते हैं: https://t.me/zufarexplained )।
- 3000 मिनट से अधिक समय तक मार्गदर्शन किया और एडीपीलिस्ट पर 60 सत्र आयोजित किए, महत्वाकांक्षी प्रतिभाओं का पोषण किया ( आप एडीपीलिस्ट पर ज़ुफ़र द्वारा मार्गदर्शन प्राप्त कर सकते हैं )।
- सम्मेलनों और आईटी यूट्यूब चैनलों पर एक वक्ता के रूप में दर्शकों को शामिल किया, अमूल्य अंतर्दृष्टि साझा की (उनके यूट्यूब वीडियो के उदाहरणों में शामिल हैं: "Тестовое собеседование Java разработчика #27 - Зуфар Сунагато в" , "आकांक्षी वक्ता लंचटाइम लाइटनिंग टॉक्स 28 मई" )।
- 7000 से अधिक बार देखे गए अत्यधिक लोकप्रिय आईटी लेख लिखे (उनके लेखों के उदाहरण हैं: "माइक्रोसर्विस आर्किटेक्चर पैटर्न भाग 1: अपघटन पैटर्न" , "Что значит «вариативный»? Объясняем простыми словами” ).