আমার পূর্ববর্তী প্রবন্ধে, আমি মাইক্রোসার্ভিসের আকর্ষণীয় জগতের সন্ধান করেছি - মাইক্রোসার্ভিস আর্কিটেকচার প্যাটার্নস পার্ট 1: ডিকম্পোজিশন প্যাটার্নস । এটি ছিল মাইক্রোসার্ভিসেস এবং তাদের নিদর্শনগুলির উপর আমার ব্যাপক নিবন্ধ সিরিজের শুরু।
যদিও যৌক্তিক পদক্ষেপটি এই সিরিজের পার্ট 2 এর সাথে চালিয়ে যাওয়া হবে, আমি সিদ্ধান্ত নিয়েছি যে পরবর্তী যে জিনিসটি আমি অন্বেষণ করতে চাই এবং আপনাকে বলতে চাই তা হল এই মাইক্রোসার্ভিসগুলিকে নির্বিঘ্নে শেষ ব্যবহারকারীর কাছে পৌঁছে দেওয়ার গুরুত্বপূর্ণ প্রক্রিয়া।
CI/CD হল গ্রাহকদের কাছে অ্যাপ সরবরাহ করার একটি কৌশল, যা অ্যাপ বিকাশের বিভিন্ন পর্যায়ে অটোমেশন যোগ করে অর্জন করা হয়। আমি বিশ্বাস করি যে CI/CD (কন্টিনিউয়াস ইন্টিগ্রেশন এবং কন্টিনিউয়াস ডিপ্লোয়মেন্ট) উপলব্ধি করা ডেভেলপারদের ক্ষমতায়িত করতে পারে যাতে প্রকল্পের ভান্ডারের সীমানা ছাড়িয়ে ব্যাকএন্ড প্রকল্পের নিদর্শনগুলি কীভাবে বিদ্যমান তা আরও ভালভাবে বোঝার জন্য। এই বোধগম্যতা একজন বিকাশকারীর দৃষ্টিভঙ্গিতে একটি মৌলিক পরিবর্তনও তৈরি করতে পারে। কেবলমাত্র তাদের কাজকে কোডের লাইন হিসাবে দেখার পরিবর্তে, তারা একটি মূল্যবান পণ্য হিসাবে তাদের প্রকল্পের বিস্তৃত প্রেক্ষাপটকে আলিঙ্গন করতে শুরু করতে পারে।
এই নিবন্ধে, আমরা ব্যবহারিক প্রয়োগের মাধ্যমে সিআই/সিডি প্রক্রিয়াটিকে রহস্যময় করার লক্ষ্য রাখি। আমরা আপনাকে একটি ধাপে ধাপে টিউটোরিয়ালের মাধ্যমে নিয়ে যাব, এটিকে মডিউল দ্বারা মডিউল ভেঙ্গে, যেখানে আপনি ম্যানুয়ালি একটি CI/CD পাইপলাইন তৈরি করবেন। এটি করার জন্য, আমরা AWS, Docker, Kubernetes, Ansible, Git, Apache Maven এবং Jenkins এর মত সমসাময়িক DevOps টুলের শক্তি ব্যবহার করব। সুতরাং, আসুন এই যাত্রা শুরু করা যাক!
এই মডিউলটি একটি AWS EC2 ভার্চুয়াল সার্ভার উদাহরণ তৈরির জন্য নিবেদিত। এই নিবন্ধটির অংশ হিসাবে, আপনি জেনকিন্স, অ্যানসিবল এবং কুবারনেটসের জন্য তিনটি EC2 দৃষ্টান্ত স্থাপন করবেন। আপাতত, আপনি পরবর্তী মডিউলগুলির সাথে এগিয়ে যেতে পারেন এবং "[মডিউল 2]: জেনকিন্স", "[মডিউল 6]: উত্তরযোগ্য" এবং "[মডিউল 7]: কুবারনেটস" বিভাগে এই মডিউলটি পুনরায় দেখতে পারেন।
https://aws.amazon.com-এ যান।
একটি AWS অ্যাকাউন্ট তৈরি করুন বোতামে ক্লিক করুন।
অ্যাকাউন্ট তৈরি করুন ওয়েব পৃষ্ঠায় নির্দেশাবলী অনুসরণ করুন.
https://console.aws.amazon.com/console/home-এ যান। সাইন ইন বোতামে ক্লিক করুন।
এই ওয়েব পৃষ্ঠায় সমস্ত প্রয়োজনীয় শংসাপত্র লিখুন।
সার্চ বক্সে EC2 খুঁজুন।
EC2 সার্ভিসে ক্লিক করে EC2 ভার্চুয়াল সার্ভার বেছে নিন।
লঞ্চ ইনস্ট্যান্স বোতামে ক্লিক করুন।
"নাম এবং ট্যাগ" বিভাগে যান।
"নাম" বিভাগে একটি নতুন AWS EC2 ভার্চুয়াল সার্ভার উদাহরণের জন্য একটি নাম প্রদান করুন৷
আপনি "অতিরিক্ত ট্যাগ যোগ করুন" এ ক্লিক করে আপনার ভার্চুয়াল সার্ভারের জন্য অতিরিক্ত ট্যাগ যোগ করতে পারেন।
"Application and OS Images (Amazon Machine Image)" বিভাগে যান।
ভার্চুয়াল সার্ভারের সাথে বিনামূল্যে খেলতে:
"ইনস্ট্যান্স টাইপ" বিভাগে যান।
ভার্চুয়াল সার্ভারের সাথে বিনামূল্যে খেলতে:
ইন্সট্যান্স টাইপ বিভাগে মুক্ত স্তরের যোগ্য ট্যাগ সহ একটি প্রকার নির্বাচন করুন।
আমার জন্য এটি t2.micro (পরিবার: t2 1cCPU 1 GiB মেমরি বর্তমান প্রজন্ম:সত্য)।
"সঞ্চয়স্থান কনফিগার করুন" বিভাগে যান।
ভার্চুয়াল সার্ভারের সাথে বিনামূল্যে খেলতে:
ডিফল্ট সেটিংস পরিবর্তন করবেন না। বিনামূল্যের স্তরের যোগ্য গ্রাহকরা 30 GB EBS জেনারেল পারপাস (SSD) বা ম্যাগনেটিক স্টোরেজ পেতে পারেন।
"নেটওয়ার্ক সেটিংস" বিভাগে যান।
আপনাকে আপনার ভার্চুয়াল সার্ভারের নিরাপত্তা সেট আপ করতে হবে। এটা করতে,
ডিফল্টরূপে, আপনার ভার্চুয়াল সার্ভারটি ( প্রকার - SSH, প্রোটোকল - TCP, পোর্ট - 22 ) এর মাধ্যমে অ্যাক্সেসযোগ্য। আপনার যদি অতিরিক্ত সংযোগ প্রকারের প্রয়োজন হয়, অতিরিক্ত অন্তর্মুখী নিরাপত্তা গোষ্ঠীর নিয়মগুলি যোগ করে সেগুলি যোগ করুন৷
"কী জোড়া (লগইন)" বিভাগে যান।
আপনি যদি এখনও এটি তৈরি না করে থাকেন তবে একটি নতুন কী-জোড়া তৈরি করুন৷
আপনি যদি এখনও "কী-পেয়ার" তৈরি না করে থাকেন:
"লঞ্চ ইনস্ট্যান্স" বোতামে ক্লিক করে EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্স চালু করুন।
EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্স তৈরির প্রক্রিয়া শেষ হওয়ার পরে, আপনি নিম্নলিখিতগুলি দেখতে পাবেন।
তারপরে আপনাকে " সব দৃষ্টান্ত দেখুন" বোতামে ক্লিক করে "ইনস্ট্যান্স" বিভাগে যেতে হবে।
এখন আপনি দেখতে পাচ্ছেন যে আপনার AWS EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্স চলছে৷
এখন, EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে জেনকিন্স সার্ভার কনফিগার করা যাক।
জেনকিন্স চালানোর জন্য আপনার একটি ভার্চুয়াল সার্ভার প্রয়োজন।
[মডিউল 1] থেকে নির্দেশাবলী অনুসরণ করুন: এই ধাপটি শেষ করার জন্য এই টিউটোরিয়ালের AWS EC2 ভার্চুয়াল সার্ভার বিভাগে এবং JenkinsServer নামের একটি EC2 ভার্চুয়াল সার্ভারের উদাহরণ তৈরি করুন।
একটি নিরাপত্তা গ্রুপ সেটআপ যোগ করতে ভুলবেন না. এটি জেনকিন্স এবং এসএসএইচকে যথাক্রমে 8080 এবং 22 পোর্টে কাজ করার অনুমতি দেয়।
আপনার EC2 ভার্চুয়াল সার্ভারের উদাহরণকে আলাদা করতে "জেনকিন্স সার্ভার" নামটি ব্যবহার করুন।
একটি নতুন "জেনকিন্স সার্ভার" AWS EC2 উদাহরণের জন্য "CI_CD_Pipeline" নিরাপত্তা গোষ্ঠী এবং "CI_CD_Pipeline_Key_Pair" তৈরি করুন। আপনি নিবন্ধে তাদের আরও পুনরায় ব্যবহার করতে পারেন।
AWS কনসোলের হোম পেজে যান → EC2 ম্যানেজমেন্ট কনসোল ড্যাশবোর্ড → ইনস্ট্যান্স।
তারপরে আপনার জেনকিন্স সার্ভার নির্বাচন করা উচিত এবং তারপরে "সংযোগ" বোতামটি ক্লিক করুন।
তারপর আপনি এই ওয়েব পেজ দেখতে পাবেন. আপনাকে আবার "সংযোগ" বোতামে ক্লিক করতে হবে।
এখন আপনি EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্স অনলাইন টার্মিনাল দেখতে পারেন।
এখন আপনাকে আপনার EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে জেনকিন্স ডাউনলোড করতে হবে।
এই নির্দেশাবলী অনুসরণ করুন:
জেনকিন্স ডাউনলোড ওয়েবপেজে যান।
আপনি স্থিতিশীল (LTS) এবং নিয়মিত রিলিজ (সাপ্তাহিক) বিকল্প দেখতে পারেন। 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
এইভাবে "rpm" প্যাকেজ ম্যানেজার যাচাই করতে পারে যে আপনি যে জেনকিন্স প্যাকেজগুলি ইনস্টল করেছেন তা ঠিক জেনকিন্স প্রকল্প দ্বারা প্রকাশিত, এবং সেগুলিকে টেম্পার করা বা দূষিত করা হয়নি৷
জেনকিন্স চালানোর জন্য, আমাদের EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে জাভা ইনস্টল করতে হবে।
Java ইনস্টল করতে, এই কমান্ডটি ব্যবহার করুন।
sudo amazon-linux-extras install java-openjdk11 -y
এই কমান্ডটি ব্যবহার করে জাভা সঠিকভাবে ইনস্টল করা হয়েছে কিনা তা যাচাই করুন:
java -version
আপনি এমন কিছু দেখতে পাবেন।
জেনকিন্স চালানোর জন্য, আপনাকে আমাদের EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে fontconfig ইনস্টল করতে হবে।
এই কমান্ড ব্যবহার করুন.
sudo yum install fontconfig java-11-openjdk -y
Fontconfig হল একটি লাইব্রেরি যা সিস্টেম-ব্যাপী ফন্ট কনফিগারেশন, কাস্টমাইজেশন এবং অ্যাপ্লিকেশন অ্যাক্সেস প্রদানের জন্য ডিজাইন করা হয়েছে। এটি জেনকিন্সের প্রয়োজন কারণ জেনকিন্সের বৈশিষ্ট্য রয়েছে যা ফন্ট রেন্ডার করে।
পূর্ববর্তী ধাপে, আপনি একটি নির্দিষ্ট Jenkins সংগ্রহস্থল ব্যবহার করার জন্য আপনার EC2 ভার্চুয়াল সার্ভারের উদাহরণ কনফিগার করেছেন এবং তারপর আপনি এই সংগ্রহস্থলের সাথে যুক্ত GPG কী আমদানি করেছেন। এখন, আপনাকে কমান্ডটি চালাতে হবে যা জেনকিন্স প্যাকেজটি খুঁজে পেতে আপনার যোগ করা জেনকিন্স সহ এটির জানা সমস্ত সংগ্রহস্থল অনুসন্ধান করবে। একবার এটি জেনকিন্স সংগ্রহস্থলে জেনকিন্স প্যাকেজটি খুঁজে পেলে, এটি ডাউনলোড এবং ইনস্টল করবে।
এর এই কমান্ড রান করা যাক.
sudo yum install jenkins -y
আপনি এই কমান্ড ব্যবহার করে জেনকিন্স শুরু করতে পারেন।
sudo systemctl start jenkins
জেনকিন্স চলছে কিনা তা পরীক্ষা করতে এই কমান্ডটি ব্যবহার করুন।
sudo systemctl status jenkins
আপনি আউটপুট দেখতে পাবেন যেমনটি নীচের স্ক্রিনশটে রয়েছে:
জেনকিন্স এখন আপ এবং চলমান করা উচিত.
জেনকিন্স অ্যাপ্লিকেশানটি অ্যাক্সেস করতে, যেকোনো ওয়েব ব্রাউজার খুলুন এবং আপনার EC2 উদাহরণের সর্বজনীন আইপি ঠিকানা বা পোর্ট 8080 অনুসরণ করে ডোমেন নাম লিখুন।
http://<your-ec2-ip>:8080
প্রথমবার যখন আপনি জেনকিন্স অ্যাক্সেস করবেন, এটি একটি স্বয়ংক্রিয় পাসওয়ার্ড দিয়ে লক করা হবে।
আপনাকে নিম্নলিখিত কমান্ডটি ব্যবহার করে এই পাসওয়ার্ডটি প্রদর্শন করতে হবে।
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
এই পাসওয়ার্ডটি অনুলিপি করুন, আপনার ব্রাউজারে ফিরে আসুন, এটি অ্যাডমিনিস্ট্রেটর পাসওয়ার্ড ক্ষেত্রে পেস্ট করুন এবং "চালিয়ে যান" এ ক্লিক করুন।
তারপর আপনি এই ওয়েব পেজ দেখতে সক্ষম হবে.
এখন, আপনি আপনার জেনকিন্স সার্ভার ব্যবহার করতে পারেন।
এখন, যেহেতু জেনকিন্স ঠিকঠাক কাজ করছে, আপনি জেনকিন্স পাইপলাইন তৈরি করা শুরু করতে পারেন। জেনকিন্স পাইপলাইন তৈরি করতে আপনাকে একটি নতুন "ফ্রিস্টাইল প্রকল্প" তৈরি করতে হবে। একটি নতুন "ফ্রিস্টাইল প্রকল্প" তৈরি করতে আপনাকে জেনকিন্স ড্যাশবোর্ডে যেতে হবে এবং "নতুন আইটেম" বোতামে ক্লিক করতে হবে।
Github "ফ্রিস্টাইল প্রজেক্ট" এর নাম লিখুন ("পাইপলাইন" নামটি আরও ব্যবহার করা হবে) এবং তারপরে "ঠিক আছে" বোতামটি ক্লিক করুন।
তারপর পাইপলাইনের বিবরণ প্রদান করুন।
তারপর "প্রয়োগ করুন" এবং "সংরক্ষণ করুন" বোতামে ক্লিক করুন। এর পরে, এর মানে হল আপনি পাইপলাইনের ভিত্তি তৈরি করেছেন যা এই টিউটোরিয়ালে নির্মিত হতে চলেছে।
এখন যেহেতু জেনকিন্স AWS EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে চলছে, আপনি পাইপলাইনের সাথে গিট কনফিগার করতে পারেন।
Git হল একটি মুক্ত এবং ওপেন সোর্স ডিস্ট্রিবিউটেড ভার্সন কন্ট্রোল সিস্টেম (VCS) যা সফ্টওয়্যার দলগুলিকে একটি বিশেষ ধরনের ডাটাবেসে কোডের প্রতিটি পরিবর্তনের ট্র্যাক রাখতে সাহায্য করার জন্য ডিজাইন করা হয়েছে৷ যদি একটি ভুল করা হয়, বিকাশকারীরা ঘড়িটি ফিরিয়ে দিতে পারে এবং সমস্ত দলের সদস্যদের বাধা কমিয়ে ভুল সংশোধন করতে সহায়তা করতে কোডের আগের সংস্করণগুলির তুলনা করতে পারে। VCS এর জন্য বিশেষভাবে উপযোগী
সবচেয়ে জনপ্রিয় ভার্সন কন্ট্রোল সিস্টেম হিসাবে গিট আমাদেরকে আপনার প্রোজেক্ট Github রিপোজিটরি থেকে আপনার EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে লেটেস্ট কোড টানতে সক্ষম করে যেখানে আপনার জেনকিন্স ইনস্টল করা আছে।
গিট ইনস্টল করতে এই কমান্ডটি ব্যবহার করুন।
sudo yum install git -y
এখন যাচাই করুন গিট কাজ করছে, এই কমান্ডটি ব্যবহার করে।
git --version
এখন গিট EC2 ভার্চুয়াল সার্ভার উদাহরণে ভাল কাজ করছে।
যেহেতু গিট EC2 ভার্চুয়াল সার্ভার উদাহরণে ভাল কাজ করছে, আমরা এখন গিটের সাথে জেনকিন্সকে একীভূত করতে পারি।
এই ইন্টিগ্রেশন শুরু করতে আসুন Jenkins Github প্লাগইন ইনস্টল করি।
জেনকিন্স ড্যাশবোর্ড বিভাগে যান।
"জেনকিন্স পরিচালনা করুন" বোতামটি ক্লিক করুন এবং তারপরে "প্লাগইনগুলি পরিচালনা করুন" বোতামটি ক্লিক করুন।
"উপলভ্য প্লাগইন" বোতামে ক্লিক করুন।
Github প্লাগইন অনুসন্ধান বাক্স খুঁজুন.
Github প্লাগইন নির্বাচন করুন।
Github প্লাগইন নির্বাচন করুন। এবং তারপর "রিস্টার্ট ছাড়াই ইনস্টল করুন" বোতামটি ক্লিক করুন।
Github প্লাগইন ডাউনলোড শেষ হওয়ার জন্য অপেক্ষা করুন।
হ্যাঁ! Jenkins Github প্লাগইন ইনস্টল করা আছে।
এখন GitHub Jenkins প্লাগইন ইনস্টল করা হয়েছে, আপনি অবশেষে Git এর সাথে জেনকিন্সকে একীভূত করতে এই প্লাগইনটি কনফিগার করতে পারেন। এটি করার জন্য আপনাকে "শীর্ষ পৃষ্ঠায় ফিরে যান" বোতামটি ক্লিক করে মূল পৃষ্ঠায় ফিরে যেতে হবে।
তারপরে মূল পৃষ্ঠায়, আপনাকে "জেনকিন্স পরিচালনা করুন" বোতামটি ক্লিক করতে হবে এবং তারপরে "গ্লোবাল টুল কনফিগারেশন" বোতামটি ক্লিক করতে হবে।
তারপরে গ্লোবাল টুল কনফিগারেশন ওয়েব পৃষ্ঠায় আপনাকে গিট বিভাগে যেতে হবে।
গিট বিভাগে, আপনাকে কম্পিউটারে গিট-এর নাম এবং পথ প্রদান করে গিট কনফিগার করতে হবে।
তারপরে "প্রয়োগ করুন" এবং "সংরক্ষণ করুন" বোতামে ক্লিক করুন**।**
এখানে, আপনি Jenkins Github প্লাগইন কনফিগার করা শেষ করেছেন।
এখন, জেনকিন্স গিথুব প্লাগইন ইনস্টল এবং কনফিগার করা হয়েছে, আপনি এখন আপনার পাইপলাইনের মধ্যে এই প্লাগইনটি ব্যবহার করতে সক্ষম। এটি আপনার পাইপলাইনকে অনুমতি দেবে যা আপনি মডিউল 2 এ তৈরি করেছেন নির্দিষ্ট গিটহাব রিপোজিটরি থেকে আপনার প্রোজেক্ট কোড টানতে।
ঠিক আছে, এই প্লাগইনটিকে আপনার পাইপলাইনে একীভূত করতে আপনাকে সোর্স কোড ম্যানেজমেন্ট বিভাগে যেতে হবে এবং আপনার পাইপলাইনে গিট বেছে নিতে হবে। তারপর আপনাকে আপনার প্রকল্পের সংগ্রহস্থলের URL প্রদান করতে হবে। যদি আপনার প্রকল্পের সংগ্রহস্থল Github-এ সর্বজনীন হয়, তাহলে আপনাকে শংসাপত্র প্রদান করতে হবে না। যদি প্রকল্পের সংগ্রহস্থলটি গিথুবে ব্যক্তিগত হয় তবে আপনাকে শংসাপত্র সরবরাহ করতে হবে।
আপনি পরবর্তী রিপোজিটাইরি URL এর সাথে আমার প্রকল্পটি ব্যবহার করতে পারেন: https://github.com/Sunagatov/Hello.git ।
শুধু কপি করুন এবং এটিকে " রিপোজিটরি URL" ইনপুটে পেস্ট করুন। তারপর পাইপলাইনের সাথে ইন্টিগ্রেশন গিট শেষ করতে "প্রয়োগ করুন" এবং "সংরক্ষণ করুন" বোতামে ক্লিক করুন।
এখন আপনি Github থেকে একটি প্রকল্প টানতে আপনার আপডেট করা পাইপলাইন ব্যবহার করতে পারেন। এটি করার জন্য আপনাকে **"এখনই তৈরি করুন"** বোতামে ক্লিক করতে হবে। ফলস্বরূপ, আপনি বিল্ড ইতিহাসে একটি সফল বিল্ড দেখতে পাবেন।
বিল্ড ইতিহাস থেকে প্রথম বিল্ড খুলুন।
এখন আপনি প্রথম বিল্ডের সফল কাজের ফলাফল দেখতে পারেন। আপনি যদি আপনার AWS EC2 টার্মিনাল খোলেন। আপনি পরীক্ষা করতে পারেন যে পাইপলাইন ভাল কাজ করে।
শুধু এই কমান্ড ব্যবহার করুন.
cd /var/lib/jenkins/workspace/{your pipeline name}
এইভাবে আপনি দেখতে পাচ্ছেন যে Github থেকে আপনার প্রকল্পটি আপনার AWS EC2 ভার্চুয়াল সার্ভার উদাহরণে টানা হয়েছে।
Apache Maven একটি বহুল ব্যবহৃত বিল্ড অটোমেশন এবং প্রজেক্ট ম্যানেজমেন্ট টুল সফটওয়্যার ডেভেলপমেন্টে। এটি প্রকল্প নির্ভরতাগুলি পরিচালনা করে এবং একটি সামঞ্জস্যপূর্ণ বিল্ড লাইফসাইকেল প্রদান করে কম্পাইলিং, টেস্টিং এবং প্যাকেজিং কোডের প্রক্রিয়াটিকে প্রবাহিত করে। Maven XML-ভিত্তিক কনফিগারেশন ফাইল (POM ফাইল) নিয়োগ করে প্রকল্পের কাঠামো, নির্ভরতা এবং কাজগুলিকে সংজ্ঞায়িত করতে, যা ডেভেলপারদের দক্ষতার সাথে জটিল সফ্টওয়্যার প্রকল্পগুলি পরিচালনা এবং স্থাপন করতে সক্ষম করে।
এখন যেহেতু আপনি পাইপলাইনে Git সংহত করেছেন, আপনি Apache Maven অন্তর্ভুক্ত করে পাইপলাইনটিকে আরও উন্নত করতে পারেন যা আপনাকে আপনার প্রকল্প তৈরি করতে, পরীক্ষা করতে এবং প্যাকেজ করতে সক্ষম করে। এটি করার জন্য আপনাকে আপনার AWS EC2 ভার্চুয়াল সার্ভার উদাহরণে Apache Maven ইনস্টল করতে হবে যেখানে Jenkins এবং Git ইনস্টল করা হয়েছিল।
Apache Maven ডাউনলোড করতে "/opt" ডিরেক্টরিতে যান।
cd /opt
এবং তারপর এই কমান্ড ব্যবহার করুন.
sudo wget https://dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz
এই কমান্ডটি সর্বশেষ অফিসিয়াল Apache Maven ডাউনলোড করবে (অফিসিয়াল Apache Maven ওয়েবসাইটে সর্বশেষ সংস্করণটি দেখুন)। সর্বশেষ অফিসিয়াল Apache Maven রিলিজ খুঁজে পেতে, https://maven.apache.org/download.cgi লিঙ্কটি ব্যবহার করুন।
ডাউনলোড করা সংরক্ষণাগার থেকে Apache Maven বের করতে এই কমান্ডটি ব্যবহার করুন:
sudo tar -xvzf apache-maven-*.tar.gz
এই কমান্ডটি ব্যবহার করে রুট ফোল্ডারে যান।
cd ~
এই কমান্ড ব্যবহার করে .bash_profile ফাইল সম্পাদনা করুন।
vi .bash_profile
JAVA_HOME এবং M2_HOME ভেরিয়েবল যোগ করুন।
JAVA_HOME- এর জন্য JDK11-এর পাথ এবং M2_HOME ভেরিয়েবলের জন্য maven ডিরেক্টরির পাথ বরাদ্দ করুন।
JDK পাথ খুঁজে পেতে, এই কমান্ডটি ব্যবহার করুন।
sudo find / -name java
কিভাবে ভিআইএম ব্যবহার করবেন
পরিবর্তনগুলি সংরক্ষণ করুন।
তারপর, সিস্টেম ভেরিয়েবল রিফ্রেশ করতে এই কমান্ডটি চালান।
source .bash_profile
$PATH যাচাই করতে, এই কমান্ডটি ব্যবহার করুন।
echo $PATH
Apache Maven যাচাই করতে, এই কমান্ডটি ব্যবহার করুন।
mvn -v
আপনি যদি সবকিছু সঠিকভাবে করে থাকেন তবে আপনি Apache Maven এর সংস্করণটি দেখতে সক্ষম হবেন।
যেহেতু Apache Maven একটি EC2 উদাহরণে ব্যবহার করা যেতে পারে, আপনি পাইপলাইনের সাথে এটিকে একীভূত করতে Apache Maven প্লাগইন ইনস্টল করতে পারেন।
এটি অর্জন করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
ডাউনলোড প্রক্রিয়া শেষ হওয়ার জন্য অপেক্ষা করুন।
এবং তারপর "শীর্ষ পৃষ্ঠায় ফিরে যান" বোতামটি ক্লিক করুন।
Apache Maven Jenkins প্লাগইনটির সফল ইনস্টলেশনের সাথে, আপনি এখন এই প্লাগইনটিকে পাইপলাইনের মধ্যে ব্যবহার করতে পারবেন যা আপনি মডিউল 2 এবং 3 এ তৈরি এবং আপডেট করেছেন।
এটি করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
তারপর "Maven" বিভাগে যান। "Maven যোগ করুন" বোতামে ক্লিক করুন। "স্বয়ংক্রিয়ভাবে ইনস্টল করুন" আনচেক করুন।
তারপর নাম এবং MAVEN_HOME পাথ যোগ করুন।
"প্রয়োগ করুন" এবং "সংরক্ষণ করুন" বোতামে ক্লিক করুন।
এখানে, আপনি Apache Maven Jenkins প্লাগইন কনফিগার করা শেষ করেছেন।
এখন যেহেতু Apache Maven GitHub প্লাগইন ইনস্টল এবং কনফিগার করা হয়েছে, আপনি এখন আপনার পাইপলাইনের মধ্যে Apache Maven ব্যবহার করতে পারবেন। এটি আপনার পাইপলাইনকে অনুমতি দেবে যা আপনি "[মডিউল 2]: জেনকিন্স সার্ভার"-এ তৈরি করেছেন একটি জার আর্টিফ্যাক্ট তৈরি করতে আপনার প্রকল্প কোড তৈরি করতে।
পাইপলাইনে Apache Maven সংহত করতে আপনাকে এই পদক্ষেপগুলি অনুসরণ করতে হবে:
অবশেষে, পাইপলাইনের সাথে Apache Maven-এর ইন্টিগ্রেশন শেষ করতে আপনার “Apply” এবং “Save” বোতামে ক্লিক করা উচিত।
এখন আপনি আপনার Github প্রকল্প তৈরি করতে আপনার আপডেট করা পাইপলাইন ব্যবহার করতে পারেন। এটি করার জন্য আপনাকে **"এখনই তৈরি করুন"** বোতামে ক্লিক করতে হবে। ফলস্বরূপ, আপনি বিল্ড ইতিহাসে একটি সফল কাজের ফলাফল দেখতে পাবেন।
আপনি যদি আপনার AWS EC2 টার্মিনাল খোলেন। আপনি পরীক্ষা করতে পারেন যে পাইপলাইন ভাল কাজ করে।
শুধু এই কমান্ড ব্যবহার করুন.
cd /var/lib/jenkins/workspace/{your pipeline name}/target
এইভাবে আপনি JAR আর্টিফ্যাক্টটি দেখতে পারেন, যা GitHub থেকে আপনার প্রকল্পের সফল নির্মাণকে নির্দেশ করে।
এখন "Ansible Server" নামের একটি নতুন EC2 উদাহরণ তৈরি করা যাক যেখানে আপনি Docker এবং Ansible ইনস্টল করতে যাচ্ছেন।
এই ধাপটি শেষ করতে এই টিউটোরিয়ালের " AWS EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্স চালু করুন" বিভাগের নির্দেশাবলী ব্যবহার করুন। একটি নিরাপত্তা গ্রুপ সেটআপ যোগ করতে ভুলবেন না. এটি ডকার এবং এসএসএইচকে যথাক্রমে 8080 এবং 22 পোর্টে কাজ করার অনুমতি দেয়।
"সংযোগ" বোতামে ক্লিক করুন।
এখন আপনি EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্স অনলাইন টার্মিনাল দেখতে পারেন।
sudo chown ansible-admin:ansible-admin /opt/docker
এখন আপনাকে আপনার উত্তরযোগ্য EC2 উদাহরণে ডকার ইনস্টল করতে হবে। এটি করার জন্য আপনাকে একটি নতুন ডকার ফোল্ডার তৈরি করতে হবে।
sudo mkdir /opt/docker
তারপরে, পরবর্তী কমান্ডটি কার্যকর করে ডকার ইনস্টল করুন।
sudo yum install docker -y
ডকারকে অ্যাডমিন সুবিধা দেওয়ার জন্য আপনাকে "অ্যানসিবল সার্ভার" EC2 ভার্চুয়াল সার্ভারে ডকার গ্রুপে বর্তমান ব্যবহারকারী "অ্যান্সিবল-অ্যাডমিন" যোগ করতে হবে।
sudo usermod -a -G docker ansible-admin
এই পরিবর্তনগুলি কার্যকর করার জন্য আপনাকে লগআউট করতে হবে এবং আবার লগ ইন করতে হবে৷
তারপর আপনি পরবর্তী কমান্ড চালাতে পারেন
id ansible-admin
নতুন ডকার ব্যবহারকারী বিদ্যমান তা দেখতে।
এখন যেহেতু ডকার Ansible EC2 ইন্সট্যান্সে ইনস্টল করা আছে আপনি পরবর্তী কমান্ডটি কার্যকর করার মাধ্যমে এটি চালু করতে পারেন।
sudo systemctl start docker
ডকার শুরু হওয়ার সাথে সাথে আপনি পরবর্তী কমান্ডটি চালাতে পারেন
sudo systemctl status docker
দেখতে যে ডকার সক্রিয় এবং এখন চলছে।
পাইপলাইনের চূড়ান্ত সংস্করণে, প্রক্রিয়াটিতে আপনার গিটহাব প্রকল্প থেকে একটি নতুন ডকার চিত্র তৈরি করা এবং এটিকে ডকার হাবে ঠেলে দেওয়া জড়িত। এটি সম্পন্ন করতে, আপনার গিটহাব প্রকল্পে একটি ডকারফাইল থাকা উচিত।
আপনি যদি " [মডিউল 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" ]
আপনি যদি নিজের প্রজেক্ট রিপোজিটরি ব্যবহার করেন এবং এতে ডকারফাইল না থাকে, তাহলে আপনাকে একটি নতুন ডকারফাইল তৈরি করতে হবে।
একটি নতুন ডকারফাইল তৈরি করতে, নিম্নলিখিত কমান্ডটি চালান, যা নতুন ফাইল তৈরি করবে।
sudo touch Dockerfile
তারপরে আপনি এই ফাইলটিকে কমান্ডের একটি ক্রম দিয়ে পূরণ করতে পারেন যা বর্ণনা করে যে কীভাবে একটি কন্টেইনারাইজড অ্যাপ্লিকেশন পরিবেশ তৈরি করা যায়। এই কমান্ডগুলির মধ্যে ফাইলগুলিকে ছবিতে অনুলিপি করা, সফ্টওয়্যার ইনস্টল করা, পরিবেশের ভেরিয়েবল সেট করা এবং কন্টেইনার কনফিগার করার মতো কাজগুলি অন্তর্ভুক্ত রয়েছে।
এই কমান্ড দিয়ে ডকারফাইল পূরণ করতে, নিম্নলিখিত কমান্ডটি চালান।
vim Dockerfile
ডকারফাইল ব্যবহারের জন্য প্রস্তুত।
এখন আপনার ডকারফাইল ব্যবহারের জন্য প্রস্তুত করা হয়েছে, **"জেনকিন্স সার্ভার"**EC2 উদাহরণ থেকে আপনার প্রকল্পের JAR আর্টিফ্যাক্ট অনুলিপি করে এবং "AnsibleServer" EC2 উদাহরণে পেস্ট করে এগিয়ে যান। এটি লক্ষ্য করা গুরুত্বপূর্ণ যে এই স্থানান্তরটি আরও পাইপলাইনের মাধ্যমে স্বয়ংক্রিয় হবে।
এই ধাপটি সম্পূর্ণ করার মাধ্যমে, আপনি আপনার সেট আপ করা ডকার পরিবেশের সাথে আপনার ডকারফাইল পরীক্ষা করার জন্য প্রস্তুত হবেন।
আপনি পরীক্ষা শুরু করার আগে, ডকারহাবে নিজেকে প্রমাণীকরণ নিশ্চিত করুন। নিম্নলিখিত কমান্ডটি চালান।
docker login
এই কমান্ডটি আপনাকে আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ড সহ আপনার ডকারহাব লগইন শংসাপত্রগুলি সরবরাহ করতে অনুরোধ করবে।
এটির সাথে, আপনি ডকারে লগ ইন করার প্রক্রিয়াটি সম্পন্ন করেছেন এবং এখন পরীক্ষার সাথে এগিয়ে যাওয়ার জন্য প্রস্তুত।
Dockerhub-এ আপনার সফল লগইন সম্পন্ন হলে, আপনি এখন আপনার তৈরি করা Dockerfile পরীক্ষা শুরু করতে প্রস্তুত।
একটি ডকার ইমেজ তৈরি করতে এই কমান্ডটি চালান।
docker build -t hello:latest .
এর পরে, একটি ট্যাগ স্থাপন করতে পরবর্তী কমান্ডটি চালান যা ডকারহাবে ছবিটি আপলোড করতে সহায়তা করবে:
docker tag hello:latest zufarexplainedit/hello:latest
অবশেষে, এই কমান্ডটি কার্যকর করার মাধ্যমে ডকার ইমেজটিকে ডকারহাবে পুশ করতে এগিয়ে যান।
docker push zufarexplainedit/hello:latest
এই পদক্ষেপগুলি অনুসরণ করে, আপনি একটি নতুন ছবি দেখতে পাচ্ছেন কি না তা যাচাই করতে আপনার ডকারহাব অ্যাকাউন্টে নেভিগেট করুন।
আপনার এখন লক্ষ্য করা উচিত যে ছবিটি কার্যকরভাবে যুক্ত করা হয়েছে। এই ফলাফল ডকার পরিবেশের সফল ইনস্টলেশন নিশ্চিত করে এবং আপনার ডকারফাইলটি সঠিক।
এখন আসুন আমরা EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে উত্তরযোগ্য সার্ভার কনফিগার করি।
Ansible চালানোর জন্য আপনার একটি ভার্চুয়াল সার্ভার প্রয়োজন।
[মডিউল 1] থেকে নির্দেশাবলী অনুসরণ করুন: এই ধাপটি শেষ করতে এবং Ansible-এর জন্য একটি EC2 ভার্চুয়াল সার্ভার উদাহরণ তৈরি করতে এই টিউটোরিয়ালের AWS EC2 ভার্চুয়াল সার্ভার বিভাগ।
একটি নিরাপত্তা গ্রুপ সেটআপ যোগ করতে ভুলবেন না. এটি Ansible এবং SSH কে যথাক্রমে পোর্ট 8080 এবং 22 এ কাজ করার অনুমতি দেয়।
আপনার EC2 ভার্চুয়াল সার্ভারের উদাহরণকে আলাদা করতে "AnsibleServer" নামটি ব্যবহার করুন।
আপনি একটি নতুন "AnsibleServer" EC2 উদাহরণের জন্য "CI_CD_Pipeline" নিরাপত্তা গ্রুপ এবং "CI_CD_Pipeline_Key_Pair" পুনরায় ব্যবহার করতে পারেন।
AWS কনসোলের হোম পেজে যান → EC2 ম্যানেজমেন্ট কনসোল ড্যাশবোর্ড → ইনস্ট্যান্স → অ্যান্সিবল সার্ভার।
তারপর "সংযোগ" বোতামে ক্লিক করুন।
তারপর আপনি এই ওয়েব পেজ দেখতে পাবেন. আপনাকে আবার "সংযোগ" বোতামে ক্লিক করতে হবে।
এখন আপনি EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্স অনলাইন টার্মিনাল দেখতে পারেন।
এখন আসুন EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে Ansible সার্ভার কনফিগার করি।
আপনি যখন EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে AnsibleServer কনফিগার করতে চান তখন আপনাকে প্রথমে যা করতে হবে তা হল এর হোস্টনাম পরিবর্তন করা।
চল এটা করি. হোস্টনাম ফাইল খুলতে এই কমান্ডটি চালান:
sudo vi /etc/hostname
আপনি এই মত কিছু দেখতে হবে:
এই হোস্টনামটি "অ্যানসিবল-সার্ভার" দিয়ে প্রতিস্থাপন করুন। তারপর, এটি রিবুট করুন।
sudo init 6
এখন AWS EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে একটি নতুন উত্তরযোগ্য-প্রশাসক ব্যবহারকারী যোগ করা যাক।
এটি করতে এই কমান্ডটি ব্যবহার করুন:
sudo useradd 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
আপনি এই নিবন্ধে আরও দূরবর্তী সার্ভার যেমন K8s EC2 ভার্চুয়াল সার্ভার উদাহরণ পরিচালনা করার পরিকল্পনা করছেন। এজন্য আপনাকে SSH কী সেট আপ করতে হবে।
ssh-keygen
এই কমান্ডটি কার্যকর করার ফলস্বরূপ, আপনি দেখতে পাবেন:
এখন SSH কী তৈরি এবং ব্যবহারের জন্য প্রস্তুত।
এখন আপনি আপনার “AnsibleServer” EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে Ansible ইনস্টল করতে পারেন।
চল এটা করি.
Ansible ইনস্টল করতে এই কমান্ডটি চালান।
sudo amazon-linux-extras install ansible2
Ansible যাচাই করতে, এই কমান্ডটি ব্যবহার করুন:
ansible --version
এই কমান্ডটি কার্যকর করার ফলস্বরূপ, আপনি দেখতে পাবেন:
যেহেতু Ansible আপনার “AnsibleServer” EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে ইনস্টল করা আছে, আপনি এটিকে Ansible-এর সাথে সংহত করতে Jenkins কনফিগার করতে পারেন। EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্স যেখানে Ansible ইন্সটল করা আছে এবং যেখানে Kubernetes ইন্সটল করা আছে সেখানে অন্যান্য EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সের সাথে জেনকিন্সকে ইন্টিগ্রেট করতে আপনাকে “SSH এর উপর প্রকাশ করুন” প্লাগইন ইনস্টল করতে হবে।
"ড্যাশবোর্ড" → " জেনকিন্স পরিচালনা করুন" → "সিস্টেম কনফিগার করুন" → "উপলব্ধ প্লাগইনস" এ যান।
তারপরে অনুসন্ধান বাক্সে "SSH উপর প্রকাশ করুন" লিখুন।
"রিস্টার্ট ছাড়াই ইনস্টল করুন" বোতামে ক্লিক করুন। ডাউনলোড প্রক্রিয়া শেষ হওয়ার জন্য অপেক্ষা করুন।
এখন জেনকিন্স EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে "SSH ওভারে প্রকাশ করুন" প্লাগইন ইনস্টল করা আছে।
Apache Maven Jenkins প্লাগইনটির সফল ইনস্টলেশনের সাথে, আপনি এখন এই প্লাগইনটিকে পাইপলাইনের মধ্যে ব্যবহার করতে পারবেন যা আপনি মডিউল 2 এবং 3 এ তৈরি এবং আপডেট করেছেন।
এটি করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
"ড্যাশবোর্ড" → "জেনকিন্স পরিচালনা করুন" → "সিস্টেম কনফিগার করুন" → "এসএসএইচ-এ প্রকাশ করুন" এ যান।
হোস্টনাম, ইউজারনেম, এবং প্রাইভেট কী (বা প্রযোজ্য হলে পাসওয়ার্ড) সহ স্ক্রিনশটে থাকা সমস্ত প্রয়োজনীয় ডেটা লিখুন।
তারপরে "প্রয়োগ করুন" এবং "সংরক্ষণ করুন" বোতামে ক্লিক করুন।
এখানে আপনি “SSH এর উপর প্রকাশ করুন” জেনকিন্স প্লাগইন কনফিগার করা শেষ করেছেন।
এরপরে, প্লাগইনটি সঠিকভাবে কাজ করছে কিনা তা যাচাই করতে "পরীক্ষা কনফিগারেশন" এ ক্লিক করুন।
বাম দিকে আপনি দেখতে পাচ্ছেন যে টেস্ট প্লাগইন কনফিগারেশন স্ট্যাটাস "সফল"। এর মানে প্লাগইন কনফিগারেশন সঠিক।
আপনাকে AnsibleServer EC2 উদাহরণে একটি নতুন ফোল্ডার তৈরি করতে হবে যেখানে প্রকল্প JAR সংরক্ষণ করা হবে। এই জার পরে একটি ডকার ইমেজ তৈরি করতে ব্যবহার করা হবে।
চল শুরু করি.
AnsibleServer EC2 উদাহরণে "/ opt" ফোল্ডারে যান।
cd /opt
সেখানে একটি নতুন ফোল্ডার "ডকার" তৈরি করুন।
sudo mkdir docker
এই "ডকার" ফোল্ডারে বিশেষাধিকার দিন।
sudo chown ansible-admin:ansible-admin docker
এখন, এই কমান্ডটি কার্যকর করে "ডকার" ফোল্ডারের সুবিধাগুলি পরীক্ষা করুন।
ll
আপনি দেখতে পাচ্ছেন যে "ডকার" ফোল্ডারটি "অ্যানসিবল-অ্যাডমিন" ব্যবহারকারীর সাথে অ্যাক্সেসযোগ্য।
এখন যেহেতু "SSH এর উপর প্রকাশ করুন" Github প্লাগইন ইনস্টল এবং কনফিগার করা হয়েছে, আপনি এখন এটিকে "[মডিউল 2]: জেনকিন্স সার্ভার"-এ " জেনকিন্স সার্ভার" থেকে একটি প্রজেক্ট জার আর্টিফ্যাক্ট স্থানান্তর করতে পাইপলাইনে একীভূত করতে সক্ষম "Ansible সার্ভার" ।
ঠিক আছে, পাইপলাইনে "SSH এর উপর প্রকাশ করুন" Github প্লাগইনকে একীভূত করতে আপনাকে এই পদক্ষেপগুলি অনুসরণ করতে হবে:
অবশেষে, পাইপলাইনের সাথে "Publish over SSH" প্লাগইন ইন্টিগ্রেশন শেষ করতে আপনাকে "প্রয়োগ করুন" এবং "সংরক্ষণ করুন" বোতামে ক্লিক করতে হবে।
এখন আপনি " JenkinsServer" থেকে "AnsibleServer" এ একটি প্রজেক্ট জার আর্টিফ্যাক্ট স্থানান্তর করতে আপনার আপডেট করা পাইপলাইন ব্যবহার করতে পারেন। এটি করতে আপনাকে "এখনই তৈরি করুন" বোতামে ক্লিক করতে হবে। ফলস্বরূপ আপনি বিল্ড ইতিহাসে একটি সফল কাজের ফলাফল দেখতে পাবেন।
আপনি যদি আপনার "AnsibleServer" AWS EC2 টার্মিনাল খোলেন। আপনি পরীক্ষা করতে পারেন যে পাইপলাইন ভাল কাজ করে।
শুধু এই কমান্ড ব্যবহার করুন.
cd /opt/docker
এইভাবে আপনি JAR আর্টিফ্যাক্টটি দেখতে পারেন, যা GitHub থেকে আপনার প্রকল্পের সফল নির্মাণকে নির্দেশ করে।
আপনি যখন একটি উত্তরযোগ্য প্লেবুক চালান, তখন আপনি যে হোস্টগুলি চালান তা নির্দিষ্ট করুন৷ আপনি এটি দুটি উপায়ে করতে পারেন:
hosts
প্যারামিটার সেট করতে পারেন।/etc/ansible/hosts
।
/etc/ansible/hosts
সম্পাদনা করে, আপনি প্রতিবার প্লেবুক চালানোর সময় হোস্টদের আইপি ঠিকানা না লিখে সহজেই পরিচালনা করতে পারেন।
আসুন নিম্নলিখিত কমান্ডটি কার্যকর করার মাধ্যমে AnsibleServer EC2 ইনস্ট্যান্স হোস্টটি খুঁজে বের করি।
sudo ifconfig
আপনি AnsibleServer EC2 ইনস্ট্যান্স হোস্ট খুঁজে পাওয়ার পরে, আপনি নিম্নলিখিত কমান্ডটি কার্যকর করার মাধ্যমে এটিকে Ansible হোস্ট ফাইলে যুক্ত করতে পারেন।
sudo vi /etc/ansible/hosts
আপনি একটি রেফারেন্স হিসাবে "[উত্তরযোগ্য]" যোগ করতে পারেন
আপনি যদি একটি ক্লাস্টার সার্ভার পরিচালনা করেন এবং আপনি প্লেবুকে প্রতিটি সার্ভারের আইপি ঠিকানা নির্দিষ্ট করার পরিবর্তে তাদের সকলের জন্য একটি প্লেবুক প্রয়োগ করতে চান, আপনি কেবল ইনভেন্টরি ফাইলের একটি গ্রুপে সমস্ত সার্ভার যোগ করতে পারেন এবং তারপরে নির্দিষ্ট করতে পারেন প্লেবুকে গ্রুপ।
Ansible রিমোট সার্ভারে স্বয়ংক্রিয় কাজ করার জন্য ডিজাইন করা হয়েছে। পাসওয়ার্ডহীন এসএসএইচ প্রমাণীকরণ ম্যানুয়াল পাসওয়ার্ড এন্ট্রির প্রয়োজন ছাড়াই সেই সার্ভারগুলির সাথে সংযোগ করার ক্ষমতা দেয়।
আপনার কম্পিউটার থেকে অন্য কম্পিউটারে একটি সুরক্ষিত সংযোগ তৈরি করতে এই কমান্ডটি চালান (যেমন আইপি ঠিকানা 172.31.34.41 এ), দায়বদ্ধ-অ্যাডমিন ব্যবহারকারীর 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" দেখতে পারেন। এর অর্থ হল পাসওয়ার্ডহীন SSH প্রমাণীকরণ ইনস্টলেশন সফলভাবে সম্পন্ন হয়েছে।
এখন যেহেতু Ansible সব সেট আপ করা হয়েছে এবং যেতে ভালো, আপনি আপনার পাইপলাইনের জন্য একটি নতুন Ansible প্লেবুক তৈরি করতে পারেন। এই প্লেবুকটি Ansible কে 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 playbook, AnsibleServer, এবং JenkinsServer সবগুলো সঠিকভাবে কনফিগার করার সাথে সাথে, Ansible প্লেবুক পরীক্ষা করার সময় এসেছে।
আপনার উত্তরযোগ্য প্লেবুকের অবস্থানে নেভিগেট করুন।
cd /opt/docker
তারপরে, নিম্নলিখিত কমান্ডটি চালান।
sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml
সমাপ্তির পরে, আপনি আপনার উত্তরযোগ্য প্লেবুকের সফল সম্পাদনের ফলাফল দেখতে পাবেন।
তদ্ব্যতীত, আপনার ডকারহাব অ্যাকাউন্টটি দেখার জন্য কিছুক্ষণ সময় নিন এবং একটি নতুন চিত্র এখন দৃশ্যমান কিনা তা যাচাই করুন।
আপনি নতুন যোগ ইমেজ দেখতে হবে. এই ফলাফল নিশ্চিত করে যে আপনার উত্তরযোগ্য প্লেবুক সঠিক।
এখন "SSH এর উপর প্রকাশ করুন" Github প্লাগইন, Ansible এবং Docker ইনস্টল এবং কনফিগার করা হয়েছে, আপনি এখন একটি প্রকল্প জার আর্টিফ্যাক্ট স্থানান্তর করতে "[মডিউল 2]: জেনকিন্স সার্ভার"-এ তৈরি করা পাইপলাইনে সেগুলিকে একীভূত করতে সক্ষম। " জেনকিন্স সার্ভার" থেকে "অ্যান্সিবল সার্ভার" এবং তারপরে আপনার প্রকল্প থেকে একটি নতুন ডকার ইমেজ তৈরি করুন এবং তারপরে এই ডকার ইমেজটিকে ডকারহাবের দিকে ঠেলে দিন।
এটি অর্জন করতে আপনাকে এই পদক্ষেপগুলি অনুসরণ করতে হবে:
অবশেষে, পাইপলাইনের সাথে ইন্টিগ্রেশন অ্যান্সিবল ডকার কাজগুলি শেষ করতে "প্রয়োগ করুন" এবং "সংরক্ষণ করুন" বোতামে ক্লিক করুন।
এখন আপনি " জেনকিন্স সার্ভার" থেকে "অ্যান্সিবল সার্ভার" -এ একটি প্রজেক্ট জার আর্টিফ্যাক্টকে নির্বিঘ্নে স্থানান্তর করতে আপনার আপগ্রেড করা পাইপলাইন পরীক্ষা করতে পারেন তারপর আপনার প্রকল্প থেকে একটি নতুন ডকার ইমেজ তৈরি করুন এবং তারপরে এই ডকার ইমেজটিকে ডকারহাবে ঠেলে দিন। এটি করতে আপনাকে "এখনই তৈরি করুন" বোতামে ক্লিক করতে হবে। ফলস্বরূপ আপনি বিল্ড ইতিহাসে একটি সফল কাজের ফলাফল দেখতে পাবেন।
তদ্ব্যতীত, আপনার ডকারহাব অ্যাকাউন্টটি দেখার জন্য কিছুক্ষণ সময় নিন এবং একটি নতুন চিত্র এখন দৃশ্যমান কিনা তা যাচাই করুন।
আপনি নতুন যোগ ইমেজ দেখতে হবে. এই ফলাফল নিশ্চিত করে যে ডকার টাস্ক সহ আপনার উত্তরযোগ্য প্লেবুক সফলভাবে পাইপলাইনে একত্রিত হয়েছে।
এখন EC2 উদাহরণে K8s কনফিগার করা যাক। আপনি একটি নতুন EC2 ইন্সট্যান্স তৈরি করতে যাচ্ছেন এবং একটি Kubernetes ক্লাস্টারের সাথে আরও ইন্টারঅ্যাক্ট করার জন্য তাদের kubectl কমান্ড-লাইন টুল ইনস্টল করতে যাচ্ছেন।
এই ধাপটি শেষ করতে এই টিউটোরিয়ালের " AWS EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্স চালু করুন" বিভাগের নির্দেশাবলী ব্যবহার করুন।
একটি নিরাপত্তা গ্রুপ সেটআপ যোগ করতে ভুলবেন না. এটি সমস্ত সরঞ্জাম এবং SSH পোর্ট 8080 এবং 22 যথাক্রমে কাজ করার অনুমতি দেয়।
আপনার EC2 ভার্চুয়াল সার্ভারের উদাহরণকে আলাদা করতে "K8sServer" নামটি ব্যবহার করুন৷
আপনি একটি নতুন "K8sServer" EC2 উদাহরণের জন্য "CI_CD_Pipeline" নিরাপত্তা গ্রুপ এবং "CI_CD_Pipeline_Key_Pair" পুনরায় ব্যবহার করতে পারেন।
"সংযোগ" বোতামে ক্লিক করুন।
এখন আপনি EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্স অনলাইন টার্মিনাল দেখতে পারেন।
আপনি যখন EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে KuberenetesServer কনফিগার করতে চান তখন আপনাকে প্রথমে যা করতে হবে তা হল এর হোস্টনাম পরিবর্তন করা।
চল এটা করি. হোস্টনাম ফাইল খুলতে এই কমান্ডটি চালান:
sudo vi /etc/hostname
আপনি এই মত কিছু দেখতে হবে.
এই হোস্টনামটিকে "kubernetes-server" দিয়ে প্রতিস্থাপন করুন এবং তারপরে এটি পুনরায় বুট করুন।
sudo init 6
আপনি হবে হোস্টনাম পরিবর্তন করা হয়েছে.
AWS সংস্করণ চেক করতে এই কমান্ডটি ব্যবহার করুন।
aws --version
এইভাবে আপনি আপনার বর্তমান aws-cli সংস্করণ দেখতে পারেন।
আপনি যদি aws-cli/1.18 সংস্করণ দেখতে পান তবে আপনার সর্বশেষ সংস্করণটি ডাউনলোড করা উচিত।
এখন যেমন আপনি খুঁজে পেয়েছেন যে আপনার 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।
অন্তর্নিহিত অবকাঠামো নির্বিশেষে যেকোন কুবারনেটস ক্লাস্টারের সাথে ইন্টারঅ্যাক্ট করার জন্য Kubectl হল একটি মৌলিক কমান্ড-লাইন টুল। এটি আপনাকে সম্পদগুলি পরিচালনা করতে, অ্যাপ্লিকেশন স্থাপন করতে, নেটওয়ার্কিং কনফিগার করতে, লগগুলি অ্যাক্সেস করতে এবং কুবারনেটস ক্লাস্টারের মধ্যে অন্যান্য বিভিন্ন কাজ সম্পাদন করতে দেয়।
এখন আপনাকে কুবারনেটস ক্লাস্টারের সাথে আরও ইন্টারঅ্যাক্ট করার জন্য kubectl কমান্ড-লাইন টুল ইনস্টল করতে হবে। এর জন্য আপনাকে AWS → ডকুমেন্টেশন → Amazon EKS → User Guide → 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
/usr/local/bin ফোল্ডারে kubectl সরান।
sudo mv kubectl /usr/local/bin
kubectl এর সংস্করণ পরীক্ষা করুন।
kubectl version --output=yaml
Eksctl হল আরেকটি কমান্ড-লাইন টুল যা বিশেষভাবে Amazon EKS পরিষেবার জন্য তৈরি। Eksctl AWS EKS ক্লাস্টার তৈরি করতে, নোড গোষ্ঠীগুলি পরিচালনা করতে এবং EKS-এর জন্য নির্দিষ্ট কাজগুলি সম্পাদন করতে ব্যবহার করা যেতে পারে, যেমন AWS পরিকাঠামো সেটআপ এবং পরিচালনার বেশিরভাগ অংশকে বিমূর্ত করে IAM ভূমিকা এবং অন্যান্য AWS পরিষেবাগুলির সাথে একীভূত করা।
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
আপনি সংস্করণ দেখতে হবে
আপনাকে একটি IAM ভূমিকা তৈরি করতে হবে এবং এটিকে আপনার “KubernetesServer” EC2 উদাহরণে সংযুক্ত করতে হবে।
এটি করার জন্য আপনাকে অনুসন্ধান বাক্সে EC2 খুঁজে বের করতে হবে।
https://us-east-1.console.aws.amazon.com/ec2/ লিঙ্কে ক্লিক করে EC2 ভার্চুয়াল সার্ভার বেছে নিন।
IAM ড্যাশবোর্ড → ভূমিকাতে যান।
IAM ভূমিকা ওয়েব পৃষ্ঠায় "ভুমিকা তৈরি করুন" বোতামে ক্লিক করুন।
তারপর "AWS পরিষেবা", "EC2" বেছে নিন। এবং "পরবর্তী" বোতামে ক্লিক করুন।
তারপরে, অনুসন্ধান বাক্সে “AmazonEC2FullAccess” , “AmazonEC2FullAccess” , “IAMFullAccess” , “AWSCloudFormationFullAccess” খুঁজুন এবং তারপরে “অনুমতি যোগ করুন” বোতামে ক্লিক করুন।
এবং তারপর "পরবর্তী" বোতামে ক্লিক করুন।
তারপর "রোলের নাম" ইনপুটে "Eksctl_Role" টাইপ করুন।
এবং "ভূমিকা তৈরি করুন" বোতামে ক্লিক করুন।
ভূমিকা শেষ পর্যন্ত তৈরি হয়।
AWS EC2 ইনস্ট্যান্স ওয়েব পেজে যান। "KuberbetesServer" নির্বাচন করুন। তারপরে "ক্রিয়া" → "নিরাপত্তা" → "আইএএম ভূমিকা সংশোধন করুন" এ ক্লিক করুন।
"Eksctl_Role" নির্বাচন করুন এবং তারপর "আপডেট IAM ভূমিকা" বোতামে ক্লিক করুন।
এখন আপনার IAM ভূমিকা আপনার “EKS_Server” এবং eksctl টুলের সাথে সংযুক্ত।
একটি Amazon EKS (Elastic Kubernetes Service) ক্লাস্টার হল AWS-এ একটি পরিচালিত Kubernetes পরিবেশ, সেটআপ, স্কেলিং এবং রক্ষণাবেক্ষণের মতো জটিল পরিকাঠামোর কাজগুলিকে স্বয়ংক্রিয় করে। এটি অপরিহার্য কারণ এটি একটি দক্ষ, সুরক্ষিত, এবং AWS-অপ্টিমাইজ করা প্ল্যাটফর্ম প্রদান করে কনটেইনারাইজড অ্যাপ্লিকেশন স্থাপন, পরিচালনা এবং স্কেল করার জন্য, ক্রিয়াকলাপগুলিকে স্ট্রিমলাইন করা এবং বিকাশকারীদেরকে অন্তর্নিহিত অবকাঠামো পরিচালনার পরিবর্তে কোডিংয়ে ফোকাস করার জন্য মুক্ত করে৷
এখন, আপনার EKS ক্লাস্টার সেট আপ করার সময়।
এটি অর্জন করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
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
পরিবর্তিত কমান্ডটি চালান এবং ধৈর্য সহকারে ক্লাস্টার তৈরির প্রক্রিয়া সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন। আপনি লক্ষ্য করবেন যে EKS ক্লাস্টার স্থিতি AWS CloudFormation ওয়েব পৃষ্ঠায় "তৈরি করা" হিসাবে নির্দেশিত হয়েছে৷
ক্লাস্টার তৈরির পদ্ধতিটি সাধারণত প্রায় 20 মিনিট সময় নেয়। একবার সম্পন্ন হলে, টার্মিনাল প্রক্রিয়াটির ফলাফল প্রদর্শন করবে।
উপরন্তু, আপনি AWS CloudFormation ওয়েব পৃষ্ঠায় সফল EKS ক্লাস্টার তৈরির স্থিতি যাচাই করতে পারেন।
একটি Kubernetes Deployment YAML ফাইল হল YAML ফর্ম্যাটে লেখা একটি কনফিগারেশন স্ক্রিপ্ট যা একটি Kubernetes ক্লাস্টারের মধ্যে একটি নির্দিষ্ট অ্যাপ্লিকেশন বা পরিষেবা কীভাবে পরিচালনা এবং বজায় রাখতে হয় তা সংজ্ঞায়িত করে। এটি অ্যাপ্লিকেশান চলমান কন্টেইনারগুলির স্থাপনা, স্কেলিং, আপডেট এবং নিরীক্ষণের জন্য নির্দেশাবলী অন্তর্ভুক্ত করে। এই ফাইলটিতে কন্টেইনার ইমেজ, প্রতিলিপির কাঙ্খিত সংখ্যা, রিসোর্স লিমিট, এনভায়রনমেন্ট ভেরিয়েবল, নেটওয়ার্কিং সেটিংস এবং আরও অনেক কিছুর মতো বিবরণ রয়েছে। যখন একটি Kubernetes ক্লাস্টারে প্রয়োগ করা হয়, ডিপ্লয়মেন্ট YAML ফাইলটি অ্যাপ্লিকেশনটির পছন্দসই অবস্থা নিশ্চিত করে, স্বয়ংক্রিয়ভাবে উপলব্ধতা এবং নির্ভরযোগ্যতার পছন্দসই স্তর বজায় রাখার জন্য কন্টেইনার তৈরি, স্কেলিং এবং পুনরুদ্ধার পরিচালনা করে।
এখন, যেহেতু Kubernetes ক্লাস্টার, eksctl, kubectl ইনস্টল এবং কনফিগার করা হয়েছে, আপনি একটি Kubernetes Deployment 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 পরিষেবা YAML ফাইল হল YAML ফর্ম্যাটে লেখা একটি কনফিগারেশন স্ক্রিপ্ট যা পডগুলির একটি সেটের জন্য একটি নেটওয়ার্ক বিমূর্ততাকে সংজ্ঞায়িত করে, যা তাদের একটি Kubernetes ক্লাস্টারের মধ্যে ধারাবাহিকভাবে অ্যাক্সেস করার অনুমতি দেয়। অন্যান্য পরিষেবা বা বহিরাগত ক্লায়েন্টদের দ্বারা কীভাবে পরিষেবাটি আবিষ্কার করা, অ্যাক্সেস করা এবং লোড-ভারসাম্য করা উচিত এই ফাইলটি রূপরেখা দেয়৷ এতে পরিষেবার ধরন (ClusterIP, NodePort, LoadBalancer), পোর্ট নম্বর, পড শনাক্ত করার জন্য নির্বাচক এবং আরও অনেক কিছুর মতো স্পেসিফিকেশন রয়েছে। যখন একটি 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 তৈরি এবং ব্যবহারের জন্য প্রস্তুত।
আপনার Kubernetes EKS ক্লাস্টার সফলভাবে ইনস্টল করা এবং কনফিগার করা এবং আপনার Kubernetes পরিষেবা এবং স্থাপনার ফাইলগুলি প্রস্তুত, kubectl কমান্ড ব্যবহার করে জিনিসগুলি পরীক্ষা করার সময় এসেছে।
ডিপ্লয়মেন্ট প্রয়োগ করুন।
স্থাপনার কনফিগারেশন প্রয়োগ করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন।
kubectl apply -f hello-app-deployment.yaml
এটি আপনার অ্যাপ্লিকেশনের প্রাপ্যতা এবং পরিচালনাযোগ্যতা নিশ্চিত করে নির্দিষ্ট সংখ্যক প্রতিলিপি এবং একটি রোলিং আপডেট কৌশল সহ একটি স্থাপনা তৈরি করবে।
2. পরিষেবা প্রয়োগ করুন।
এর পরে, পরিষেবা কনফিগারেশন প্রয়োগ করুন।
kubectl apply -f hello-app-service.yaml
এটি একটি লোডব্যালেন্সার টাইপ পরিষেবা সেট আপ করবে, আপনার অ্যাপ্লিকেশনটি ইন্টারনেটে প্রকাশ করবে।
মনে রাখবেন যে লোডব্যালেন্সার প্রভিশন করা এবং একটি বাহ্যিক IP ঠিকানা অর্জন করতে অল্প সময় লাগতে পারে।
লোডব্যালেন্সার স্থিতি পরীক্ষা করুন।
ব্যবহার করে আপনার পরিষেবার অবস্থা নিরীক্ষণ করুন।
kubectl get service zufarexplainedit-hello-app-service
যখন একটি বাহ্যিক আইপি বরাদ্দ করা হয়, আপনি আপনার অ্যাপ্লিকেশন অ্যাক্সেস করার জন্য প্রায় প্রস্তুত।
আপনার আবেদন অ্যাক্সেস.
একটি ওয়েব ব্রাউজার ব্যবহার করে, বরাদ্দকৃত বাহ্যিক আইপি ঠিকানা লিখুন যার পরে :8080। একটি সংক্ষিপ্ত মুহূর্ত পরে, পৃষ্ঠাটি "হ্যালোওয়ার্ল্ড" বার্তা প্রদর্শন করে লোড হবে। মনে রাখবেন প্রাথমিক লোড হতে কয়েক সেকেন্ড সময় লাগতে পারে।
যখন আপনার Kubernetes পরিবেশের মধ্যে সম্পদ গুছিয়ে রাখার প্রয়োজন হয়, আপনি কার্যকরভাবে স্থাপনা, পড এবং পরিষেবাগুলি সরাতে নিম্নলিখিত kubectl কমান্ডগুলি ব্যবহার করতে পারেন।
1. সমস্ত স্থাপনা মুছুন ।
সমস্ত স্থাপনা মুছে ফেলতে, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন।
kubectl delete deployments --all
এই ক্রিয়াটি নিশ্চিত করে যে আপনার ক্লাস্টারে কোনো সক্রিয় স্থাপনার দৃষ্টান্ত অবশিষ্ট নেই।
2. সমস্ত পড মুছুন ।
আপনি যদি সমস্ত পড মুছে ফেলতে চান, সেগুলি একটি স্থাপনার দ্বারা পরিচালিত হোক বা না হোক, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন।
kubectl delete pods --all
ক্লিয়ারিং পড আপনার ক্লাস্টার স্টেট রিসেট করতে বা নতুন স্থাপনার জন্য প্রস্তুত করতে সাহায্য করতে পারে।
3. সমস্ত পরিষেবা মুছুন ৷
নেটওয়ার্কে আপনার অ্যাপ্লিকেশনগুলিকে প্রকাশ করে এমন পরিষেবাগুলি পরিষ্কার করতে, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন।
kubectl delete services --all
পরিষেবাগুলি সরানোর সময় ডাউনটাইম জড়িত হতে পারে, তাই এগিয়ে যাওয়ার আগে প্রভাবগুলি বিবেচনা করুন৷
ওয়ার্কার নোড, নেটওয়ার্কিং উপাদান এবং অন্যান্য সংস্থান সহ eksctl
এর সাথে তৈরি করা নির্দিষ্ট Amazon EKS ক্লাস্টারের সাথে সম্পর্কিত সমস্ত সংস্থানগুলি সরাতে, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন।
eksctl delete cluster --name {your cluster name} --region {your region name}
এটা আমার জন্য.
eksctl delete cluster --name zufarexplainedit --region eu-north-1
নিশ্চিত করুন যে আপনি ক্লাস্টার বন্ধ করার বিষয়ে নিশ্চিত, কারণ এই ক্রিয়াটি অপরিবর্তনীয় এবং এর ফলে ডেটা ক্ষতি হবে৷
এখন আসুন “KubernetesServer” AWS EC2 ভার্চুয়াল সার্ভার ইনস্ট্যান্সে একটি নতুন উত্তরযোগ্য-প্রশাসক ব্যবহারকারী যোগ করি।
এটি করতে এই কমান্ডটি ব্যবহার করুন।
sudo useradd 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
আপনি এই নিবন্ধে K8s EC2 ভার্চুয়াল সার্ভার উদাহরণের মতো দূরবর্তী সার্ভারগুলি পরিচালনা করার পরিকল্পনা করছেন। এজন্য আপনাকে SSH কী সেট আপ করতে হবে।
ssh-keygen
এই কমান্ডটি কার্যকর করার ফলস্বরূপ, আপনি দেখতে পাবেন:
এখন SSH কী তৈরি এবং ব্যবহারের জন্য প্রস্তুত।
Ansible রিমোট সার্ভারে স্বয়ংক্রিয় কাজ করার জন্য ডিজাইন করা হয়েছে। পাসওয়ার্ডহীন এসএসএইচ প্রমাণীকরণ ম্যানুয়াল পাসওয়ার্ড এন্ট্রির প্রয়োজন ছাড়াই সেই সার্ভারগুলির সাথে সংযোগ করার ক্ষমতা দেয়।
আপনার কম্পিউটার থেকে অন্য কম্পিউটারে একটি সুরক্ষিত সংযোগ তৈরি করতে এই কমান্ডটি চালান (যেমন আইপি ঠিকানা 172.31.34.41 এ), দায়বদ্ধ-অ্যাডমিন ব্যবহারকারীর 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" দেখতে পারেন। এর অর্থ হল পাসওয়ার্ডহীন SSH প্রমাণীকরণ ইনস্টলেশন সফলভাবে সম্পন্ন হয়েছে।
আপনি যখন একটি উত্তরযোগ্য প্লেবুক চালান, তখন আপনি যে হোস্টগুলি চালান তা নির্দিষ্ট করুন৷ এই ধাপে আপনাকে KubernetesServer EC2 ইনস্ট্যান্স হোস্ট নির্দিষ্ট করতে হবে। এটি করার জন্য আপনাকে " [মডিউল 6]: উত্তরযোগ্য"-এ পাস করা একই পদক্ষেপগুলি পুনরাবৃত্তি করতে হবে।
আসুন নিম্নলিখিত কমান্ডটি কার্যকর করার মাধ্যমে KubernetesServer EC2 ইনস্ট্যান্স হোস্ট খুঁজে বের করি।
sudo ifconfig
আপনি KubernetesServer EC2 ইনস্ট্যান্স হোস্ট খুঁজে পাওয়ার পরে, আপনি নিম্নলিখিত কমান্ডটি কার্যকর করার মাধ্যমে এটিকে উত্তরযোগ্য হোস্ট ফাইলে যুক্ত করতে পারেন।
sudo vi /etc/ansible/hosts
আপনি একটি রেফারেন্স হিসাবে "[kubernetes]" যোগ করতে পারেন
এখন যেহেতু Kubernetes সব সেটআপ এবং যেতে ভালো, আপনি আপনার পাইপলাইনের জন্য Kubernetes টাস্ক সহ একটি নতুন Ansible প্লেবুক তৈরি করতে পারেন। এই প্লেবুকটি অ্যান্সিবলকে আপনার অ্যাপটি কুবারনেটস ক্লাস্টারে 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 কার্যগুলির জন্য উত্তরযোগ্য প্লেবুক ব্যবহারের জন্য প্রস্তুত।
এখন যেহেতু Kubernetes কাজগুলির জন্য Kubernetes, Ansible এবং Ansible প্লেবুক সব সেট আপ করা হয়েছে এবং যেতে ভাল, আপনি এটি Jenkins-এর সাথে একীভূত করতে পারেন।
জেনকিন্স সার্ভার → জেনকিন্স ড্যাশবোর্ড → নতুন আইটেমে যান।
"সিডি-জব" নামে নতুন জেনকিন্স ফ্রিস্টাইল প্রকল্প তৈরি করুন।
"ঠিক আছে" বোতামে ক্লিক করুন।
"পোস্ট-বিল্ড অ্যাকশন" বিভাগে যান।
"বিল্ড-পরবর্তী অ্যাকশন যোগ করুন" বোতামে ক্লিক করুন।
"SSH ওভার বিল্ড আর্টিফ্যাক্ট পাঠান" বিকল্পটি বেছে নিন।
SSH সার্ভার হিসাবে "AnsibleServer" নির্বাচন করুন।
এই কমান্ডটি "exec কমান্ড" ইনপুটে যোগ করুন।
sudo -u ansible-admin ansible-playbook /opt/docker/kubernetes-hello-app.yml
"প্রয়োগ করুন" এবং "সংরক্ষণ করুন" বোতামে ক্লিক করুন।
জেনকিন্স ড্যাশবোর্ড → “CI_CD_Pipeline” → কনফিগার → “পোস্ট-বিল্ড অ্যাকশন” বিভাগে যান।
"বিল্ড-পরবর্তী অ্যাকশন যোগ করুন" বোতামে ক্লিক করুন।
"অন্যান্য প্রকল্প তৈরি করুন" বিকল্পটি নির্বাচন করুন।
"অন্যান্য প্রকল্প তৈরি করুন" বিভাগে যান।
"বিল্ড স্থিতিশীল হলেই ট্রিগার" বিকল্পটি বেছে নিন।
"প্রজেক্ট টু বিল্ড" ইনপুটে "সিডি-জব" যোগ করুন।
"প্রয়োগ করুন" এবং "সংরক্ষণ করুন" বোতামে ক্লিক করুন।
এখন আপনি বিবেচনা করতে পারেন যে পাইপলাইন সম্পূর্ণরূপে সমাপ্ত এবং ব্যবহারের জন্য প্রস্তুত।
এখন চূড়ান্ত পাইপলাইন সংস্করণ পরীক্ষা করার সময়.
জেনকিন্স → জেনকিন্স ড্যাশবোর্ড → "CI_CD_Pipeline"-এ নেভিগেট করুন।
"এখনই তৈরি করুন" বোতামে ক্লিক করুন।
ফলাফল দেখতে, বিল্ড কনসোল লগগুলি পর্যালোচনা করুন৷
আপনি লক্ষ্য করবেন যে বিল্ড কনসোল লগগুলিতে "সিডি-জব" ট্রিগার হয়েছে, এবং চূড়ান্ত অবস্থা সফল হিসাবে চিহ্নিত করা হয়েছে।
4
তাছাড়া, নতুন ডকার ইমেজ যোগ করার বিষয়টি নিশ্চিত করতে আপনি Dockerhub-এ যেতে পারেন।
এবং অবশেষে, আপনি একটি ওয়েব ব্রাউজার ব্যবহার করে আপনার অ্যাপ্লিকেশন অ্যাক্সেস করতে পারেন। ":8080" অনুসরণ করে নির্ধারিত বাহ্যিক আইপি ঠিকানা লিখুন। একটি সংক্ষিপ্ত মুহূর্ত পরে, পৃষ্ঠাটি লোড হবে, "হ্যালোওয়ার্ল্ড" বার্তাটি দেখাচ্ছে৷
এই আধুনিক CI/CD পাইপলাইন সেট আপ করার জন্য ভাল কাজ!
আপনি একটি দুর্দান্ত কাজ করেছেন এবং আপনি একজন সত্যিকারের নায়ক!
সব আপনার প্রচেষ্টার জন্য ধন্যবাদ!
জুফার সুনাগাতোভ একজন অভিজ্ঞ সিনিয়র সফ্টওয়্যার প্রকৌশলী যিনি আধুনিক সফ্টওয়্যার সিস্টেম ডিজাইন করতে আগ্রহী।