ডকার এবং কুবারনেটসের সাহায্যে মাইক্রোসার্ভিসেস কীভাবে বাস্তবায়ন করবেন

সর্বশেষ আপডেট: 23/01/2026
লেখক: ইসহাক
  • মাইক্রোসার্ভিসেসগুলি মডুলার এবং স্কেলেবল অ্যাপ্লিকেশনগুলির বিকাশের অনুমতি দেয়, যেখানে প্রতিটি পরিষেবা স্বায়ত্তশাসিত এবং স্বাধীনভাবে স্থাপনযোগ্য।
  • ডকার হালকা ওজনের, বহনযোগ্য কন্টেইনার তৈরি করা সহজ করে তোলে যা প্রতিটি মাইক্রোসার্ভিসকে তার সমস্ত নির্ভরতা সহ প্যাকেজ করে।
  • কুবারনেটেস কন্টেইনারগুলি পরিচালনা করে, ক্লাস্টারের মাইক্রোসার্ভিসেসের স্থাপনা, স্কেলিং, নেটওয়ার্কিং এবং স্বয়ংক্রিয় পুনরুদ্ধার পরিচালনা করে।
  • উৎপাদনে মাইক্রোসার্ভিসেস সফলভাবে পরিচালনার জন্য ভালো নিরাপত্তা, পর্যবেক্ষণ এবং অটোমেশন অনুশীলন প্রয়োগ করা গুরুত্বপূর্ণ।

ডকার এবং কুবারনেটসের সাথে মাইক্রোসার্ভিসেস

সাম্প্রতিক বছরগুলিতে, মাইক্রোসার্ভিসেস, ডকার এবং কুবারনেটসের সংমিশ্রণ এটি আধুনিক, স্কেলেবল এবং সহজে রক্ষণাবেক্ষণযোগ্য অ্যাপ্লিকেশন স্থাপনের জন্য কার্যত মানদণ্ডে পরিণত হয়েছে। ক্রমবর্ধমান সংখ্যক কোম্পানি একচেটিয়া অ্যাপ্লিকেশন থেকে সরে এসে পরিবর্তিত পরিবেশ এবং DevOps কৌশলগুলির জন্য আরও উপযুক্ত বিতরণযোগ্য আর্কিটেকচারের পক্ষে কাজ করছে।

ভাবলে তো হয়ই ডকার এবং কুবারনেটসের মাধ্যমে মাইক্রোসার্ভিসেস কীভাবে বাস্তবে প্রয়োগ করা যায়এই কন্টেন্টটি আপনার জন্য উপযুক্ত হবে: আমরা মূল ধারণা, সুবিধা এবং চ্যালেঞ্জগুলি পর্যালোচনা করব, কীভাবে কন্টেইনার তৈরি করতে হয়, কীভাবে সেগুলিকে একটি ক্লাস্টারে সাজানো যায় এবং সেগুলি ইনস্টল করার জন্য কী কী পদক্ষেপ অনুসরণ করতে হবে। উইন্ডোজ y লিনাক্সপাশাপাশি বাস্তব-বিশ্বের পরিবেশে বুদ্ধিমানের সাথে ব্যবহারের জন্য টিপসের একটি সিরিজ।

মাইক্রোসার্ভিসেস আর্কিটেকচার কী এবং এটি মনোলিথ থেকে কীভাবে আলাদা?

একটি মাইক্রোসার্ভিসেস আর্কিটেকচার ভিত্তিক একটি অ্যাপ্লিকেশনকে একাধিক ছোট, স্বায়ত্তশাসিত এবং স্বাধীনভাবে স্থাপনযোগ্য পরিষেবায় ভাগ করুনপ্রতিটি একটি নির্দিষ্ট কার্যকারিতার (ব্যবহারকারী, অর্থপ্রদান, ক্যাটালগ, অর্ডার, ইত্যাদি) উপর দৃষ্টি নিবদ্ধ করে, যা মূলত হালকা API (HTTP/REST, gRPC, মেসেজিং, ইত্যাদি) এর মাধ্যমে যোগাযোগ করে।

অন্যদিকে, একচেটিয়া প্রয়োগে, সমস্ত ব্যবসায়িক যুক্তি, উপস্থাপনা স্তর এবং ডেটা অ্যাক্সেস একটি একক স্থাপনা ব্লকে প্যাকেজ করা হয়েছে।যেকোনো পরিবর্তনের জন্য সমগ্র সিস্টেমের পুনঃসংকলন, পরীক্ষা এবং স্থাপনের প্রয়োজন হয়, যা বিবর্তনকে জটিল করে তোলে এবং উৎপাদনে ত্রুটি প্রবর্তনের ঝুঁকি বাড়ায়।

মাইক্রোসার্ভিসেসের ক্ষেত্রে, প্রতিটি পরিষেবার নিজস্ব জীবনচক্র থাকে: এটি স্বাধীনভাবে তৈরি, পরীক্ষা, স্থাপন, স্কেল এবং সংস্করণ করা যেতে পারে।এটি একাধিক দলকে সমান্তরালভাবে কাজ করার সুযোগ দেয়, নতুন প্রযুক্তি গ্রহণকে সহজ করে এবং CI/CD অনুশীলনের সাথে একীকরণকে সহজতর করে।

তদুপরি, এই স্থাপত্যটি ধারণাটি প্রবর্তন করে উপাদান-স্বাধীন স্কেলেবিলিটিএকটি নির্দিষ্ট মডিউলের উপর আরও বেশি লোড সমর্থন করার জন্য একটি সম্পূর্ণ একশিলা অ্যাপ্লিকেশনকে স্কেল করার পরিবর্তে, কেবলমাত্র সেই মাইক্রোসার্ভিসেসগুলিকে স্কেল করা হয় যাদের সত্যিই এটির প্রয়োজন, যা অবকাঠামোগত সংস্থানগুলিকে আরও ভালভাবে অপ্টিমাইজ করে।

মাইক্রোসার্ভিসেসের প্রকৃত সুবিধা এবং চ্যালেঞ্জ

মাইক্রোসার্ভিসেসে স্থানান্তর কেবল একটি ফ্যাড নয়: এটি স্কেলেবিলিটি, স্থিতিস্থাপকতা এবং স্থাপনার গতিতে বাস্তব সুবিধা প্রদান করে।কিন্তু এটি একটি কার্যকরী জটিলতারও পরিচয় দেয় যা অবশ্যই পরিচালনা করতে হবে।

সবচেয়ে উল্লেখযোগ্য সুবিধার মধ্যে রয়েছে প্রতিটি পরিষেবার স্বাধীন স্কেলেবিলিটিউদাহরণস্বরূপ, যদি পেমেন্ট মডিউলটি প্রশাসন মডিউলের চেয়ে বেশি ট্র্যাফিক পায়, তাহলে আপনি কেবলমাত্র পেমেন্ট মাইক্রোসার্ভিসের প্রতিলিপিগুলি বাড়াতে পারেন, বাকি অ্যাপ্লিকেশনটি স্পর্শ না করে বা সম্পদ নষ্ট না করে।

তুমি এতেও অনেক লাভ করো ক্রমাগত স্থাপনা এবং ঘন ঘন ডেলিভারিপ্রতিটি পরিষেবা আলাদা করে, সম্পূর্ণ অ্যাপ্লিকেশন বন্ধ বা পুনরায় স্থাপন না করে, রক্ষণাবেক্ষণের সময়সীমা কমিয়ে এবং সময়-টু-মার্কেট উন্নত না করেই ক্রমবর্ধমানভাবে নতুন সংস্করণ প্রকাশ করা সম্ভব।

আরেকটি মূল বিষয় হল স্থিতিস্থাপকতা এবং দোষ সহনশীলতাসঠিকভাবে ডিজাইন করা হলে, একটি মাইক্রোসার্ভিসের ব্যর্থতা পুরো সিস্টেমকে ভেঙে ফেলা উচিত নয়। টাইমআউট, রিট্রাই এবং সার্কিট ব্রেকারের মতো প্যাটার্নের সাহায্যে, অন্যান্য পরিষেবাগুলি ব্যর্থতার প্রভাব সীমিত করে সাড়া দিতে পারে।

অধিকন্তু, মাইক্রোসার্ভিসেসগুলি অনুমতি দেয় প্রযুক্তিগত নমনীয়তাপ্রতিটি দল তাদের পরিষেবার জন্য সবচেয়ে উপযুক্ত ভাষা, কাঠামো বা ডাটাবেস বেছে নিতে পারে, যতক্ষণ না তারা যোগাযোগ চুক্তি এবং প্ল্যাটফর্মের বিশ্বব্যাপী নীতিগুলিকে সম্মান করে।

মুদ্রার অন্য পিঠে আমরা দেখতে পাই যে পরিচালনাগত এবং পর্যবেক্ষণযোগ্যতা জটিলতাকয়েক ডজন বা শত শত পরিষেবা পরিচালনার জন্য বিতরণকৃত নেটওয়ার্ক, আন্তঃ-পরিষেবা ট্রেস, কেন্দ্রীভূত লগিং, সুরক্ষা, API সংস্করণ এবং ডেটা সামঞ্জস্যতা মোকাবেলা করা জড়িত, যার জন্য উন্নত সরঞ্জাম এবং পরিপক্ক প্রক্রিয়া প্রয়োজন।

এটাও জটিল হয়ে ওঠে পরিষেবাগুলির মধ্যে যোগাযোগ ব্যবস্থাপনাকীভাবে ডেটা আদান-প্রদান করা হয়, কীভাবে ত্রুটিগুলি পরিচালনা করা হয়, কীভাবে ল্যাটেন্সি পরিচালনা করা হয় এবং কীভাবে ধীর নির্ভরতা সিস্টেমের বাকি অংশকে টেনে আনা থেকে বিরত রাখা যায় সেগুলি সাবধানতার সাথে ডিজাইন করা অপরিহার্য। পরীক্ষা এবং ডিবাগিং এখন আর তুচ্ছ বিষয় নয়, কারণ এটি কোনও একক ব্লক নয় যা পরীক্ষিত, বরং আন্তঃসংযুক্ত পরিষেবার একটি সেট।.

কন্টেইনার সহ মাইক্রোসার্ভিসেস আর্কিটেকচার

কন্টেইনার: বিচ্ছিন্নভাবে মাইক্রোসার্ভিসেস চালানোর ভিত্তি

কন্টেইনার প্রযুক্তি মাইক্রোসার্ভিসেসের জন্য আদর্শ সহায়তা হয়ে উঠেছে কারণ এটি আপনাকে একটি অ্যাপ্লিকেশন এবং এর সমস্ত নির্ভরতাগুলিকে একটি মানসম্মত এবং পোর্টেবল ইউনিটে প্যাকেজ করার অনুমতি দেয়।প্রতিটি সার্ভারে লাইব্রেরি, রানটাইম এবং টুল ইনস্টল করার পরিবর্তে, সবকিছুই কন্টেইনারের মধ্যেই ভ্রমণ করে।

একটি ধারক মূলত, অপারেটিং সিস্টেম-স্তরের ভার্চুয়ালাইজেশনের একটি হালকা রূপ: হোস্ট কার্নেল শেয়ার করে কিন্তু বিচ্ছিন্ন নেমস্পেসে এবং cgroups দ্বারা সীমিত রিসোর্স সহ প্রক্রিয়া চালায়, যার ফলে এটি দ্রুত বুট হয় এবং ভার্চুয়াল মেশিনের চেয়ে কম খরচ করে।

এর প্রধান বৈশিষ্ট্যগুলির মধ্যে রয়েছে অন্তরণ, বহনযোগ্যতা, হালকাতা এবং মডুলারিটিপ্রতিটি মাইক্রোসার্ভিস তার নিজস্ব কন্টেইনারে চলমান থাকলে, বিতরণকৃত আর্কিটেকচারের নীতির সাথে পুরোপুরি মানানসই হয়ে, স্থাপন, থামানো, আপডেট করা বা প্রতিলিপি করা সহজ হয়ে যায়।

তুলনায় উৎপাদনের জন্য ভার্চুয়াল মেশিনপাত্রগুলো তাদের প্রতিটি উদাহরণের জন্য একটি সম্পূর্ণ অপারেটিং সিস্টেমের প্রয়োজন নেই।বরং হোস্টের ছবিগুলো শেয়ার করুন। এটি ছবির আকার ব্যাপকভাবে হ্রাস করে এবং এল সামাজিক নেটওয়ার্কিং de বুটআপনাকে কয়েক সেকেন্ডের মধ্যে পাত্র তুলতে বা ধ্বংস করতে দেয়।

  3টি সহজ ধাপে Google Chrome নেটওয়ার্ক ত্রুটি ঠিক করুন

ডকার: মাইক্রোসার্ভিসেস কন্টেইনারাইজ করার জন্য রেফারেন্স প্ল্যাটফর্ম

কন্টেইনার নিয়ে কাজ করার জন্য ডকার সবচেয়ে জনপ্রিয় টুল, কারণ এটি কন্টেইনারাইজড অ্যাপ্লিকেশন তৈরি, প্যাকেজিং, বিতরণ এবং সম্পাদনকে সহজতর করে উন্নয়ন পরিবেশে এবং পরীক্ষা ও উৎপাদন উভয় ক্ষেত্রেই।

তাদের মূল ধারণা হল সফ্টওয়্যারটিকে প্যাকেজ করা ডকারের ছবিএগুলি অপরিবর্তনীয় শিল্পকর্ম যার মধ্যে রয়েছে অ্যাপ্লিকেশন কোড, এর প্রয়োজনীয় লাইব্রেরি, সিস্টেম টুলস এবং মৌলিক কনফিগারেশন। এই ছবিগুলি থেকে অ্যাপ্লিকেশন তৈরি করা হয়। চালু থাকা পাত্রগুলি, যেগুলো সেই ছবির উপর ভিত্তি করে বিচ্ছিন্ন উদাহরণ।

চিত্রের গঠন সংজ্ঞায়িত করা হয়েছে a Dockerfile, একটি টেক্সট ফাইল যা নির্দেশাবলী নির্দিষ্ট করে যেমন বেস ইমেজ, ওয়ার্কিং ডিরেক্টরি, কোন ফাইল কপি করতে হবে, কোন নির্ভরতা ইনস্টল করতে হবে, কোন পোর্টগুলি এক্সপোজ করতে হবে এবং কন্টেইনার শুরু করার সময় কোন কমান্ড চালানো হবে।

কল্পনা করুন আপনার Node.js-এ একটি API লেখা আছে। আপনি নিম্নলিখিতগুলির মতো একটি Dockerfile তৈরি করতে পারেন, যেখানে একটি অফিসিয়াল নোড ইমেজ দিয়ে শুরু করে, ফাইলগুলি অনুলিপি করা হয়, নির্ভরতা ইনস্টল করা হয় এবং বুট কমান্ড সংজ্ঞায়িত করা হয়।:

FROM node:14
WORKDIR /app
COPY . .
RUN npm install
EXPOSE 3000
CMD

এই ফাইলটি নির্দেশ করে যে অ্যাপ্লিকেশনটি ডিরেক্টরিতে চলবে /কন্টেইনারের ভিতরে অ্যাপ, যে নির্ভরতাগুলি npm দিয়ে ইনস্টল করা হবে, সেই পোর্ট 3000 উন্মুক্ত হবে, এবং যে, কন্টেইনারটি শুরু করার পরে, এটি কার্যকর হবে এনপিএম শুরু.

সেই কন্টেইনারটি তৈরি এবং চালু করতে, কেবল প্রজেক্ট ফোল্ডার থেকে কমান্ডটি চালান। ডকার বিল্ড এবং পরে ডকার রানহোস্ট থেকে অ্যাক্সেসের অনুমতি দেওয়ার জন্য পোর্টগুলি ম্যাপ করা, অথবা মাল্টি-কন্টেইনার অ্যাপ্লিকেশন ব্যবহারের জন্য Docker-রচনা:

docker build -t mi-app .
docker run -p 3000:3000 mi-app

এই মডেলের জন্য ধন্যবাদ, ক্লাসিক "এটি আমার মেশিনে কাজ করে" সমস্যাটি ন্যূনতম হ্রাস পেয়েছে।কারণ রানটাইম পরিবেশ অ্যাপ্লিকেশনের সাথে ভ্রমণ করে। তদুপরি, ডকার CI/CD সিস্টেম, ব্যক্তিগত রেজিস্ট্রি এবং কুবারনেটসের মতো অর্কেস্ট্রেশন সরঞ্জামগুলির সাথে নির্বিঘ্নে সংহত করে।

ডকারের মূল উপাদান এবং মাইক্রোসার্ভিসে তাদের ভূমিকা

একটি সাধারণ স্থাপনার ক্ষেত্রে, আমরা একটি সম্পর্কে কথা বলছি ডকার হোস্টকোনটি সেই সিস্টেম (ভৌত বা ভার্চুয়াল) যেখানে ডকার ইনস্টল করা আছে; এটি এর উপরে চলে। ডকার ইঞ্জিন, ডেমন যা ছবি, নেটওয়ার্ক, ভলিউম এবং কন্টেইনার জীবনচক্র পরিচালনা করে।

পাত্রগুলিতে রয়েছে একটি ছবিতে প্যাকেজ করা অ্যাপ্লিকেশন এবং এর নির্ভরতাএটি ডকার সহ যেকোনো সার্ভারকে ধারাবাহিকভাবে সেই ছবিটি চালানোর অনুমতি দেয়। বিভিন্ন পরিবেশে (উন্নয়ন, QA, উৎপাদন, ইত্যাদি) অনেক মাইক্রোসার্ভিস স্থাপন করা হলে এই ধারাবাহিকতা অত্যন্ত গুরুত্বপূর্ণ।

ডকারের সবচেয়ে আকর্ষণীয় সুবিধাগুলির মধ্যে রয়েছে পরিবেশের মধ্যে বহনযোগ্যতা, স্থাপনা অটোমেশন, প্রক্রিয়া মডুলারিটি, এবং ছবিতে লেয়ারিং এবং সংস্করণ নিয়ন্ত্রণের জন্য সমর্থনযা পরিবর্তনগুলিকে বিপরীত করা এবং অপ্টিমাইজ করা সহজ করে তোলে স্টোরেজ.

কুবেরনেটেস: শত শত পাত্র পরিচালনার জন্য অর্কেস্ট্রেটর

যখন তুমি কয়েকটি পাত্র থেকে কয়েক ডজন বা শতাধিক পাত্রে যাবে, এগুলো ম্যানুয়ালি পরিচালনা করা পাগলামি হয়ে ওঠেএখানেই আসে কুবেরনেটস, একটি ওপেন সোর্স প্ল্যাটফর্ম যা কন্টেইনারগুলিকে স্কেলে সাজানোর জন্য ডিজাইন করা হয়েছে।

কুবারনেটস গুরুত্বপূর্ণ কাজগুলিকে স্বয়ংক্রিয় করে তোলে যেমন স্থাপনা, স্কেলিং, ফল্ট পুনরুদ্ধার, নেটওয়ার্ক কনফিগারেশন এবং স্টোরেজ কন্টেইনারাইজড অ্যাপ্লিকেশনের সংখ্যা। এটি পাবলিক ক্লাউড, প্রাইভেট ক্লাউড, হাইব্রিড পরিবেশ এবং এমনকি অন-প্রাঙ্গনে কাজ করার জন্য ডিজাইন করা হয়েছে।

এর লক্ষ্য হল কন্টেইনারগুলি যেখানে চলে সেখানে বেশ কয়েকটি নোড (মেশিন) দিয়ে গঠিত ক্লাস্টার পরিচালনা করা। লক্ষ্য হল নিশ্চিত করা যে অ্যাপ্লিকেশনগুলি সর্বদা পছন্দসই অবস্থায় থাকে: প্রতিলিপির সংখ্যা, মোতায়েন করা সংস্করণ, বরাদ্দকৃত সম্পদ এবং পরিষেবাগুলির মধ্যে সংযোগ।

কুবারনেটের মৌলিক উপাদান

কুবারনেটসের ক্ষুদ্রতম একক হল শুঁটিএকটি পড এক বা একাধিক কন্টেইনার ইনস্ট্যান্সকে প্রতিনিধিত্ব করে যা একসাথে চলতে হবে (উদাহরণস্বরূপ, একটি অ্যাপ্লিকেশন কন্টেইনার এবং লগিংয়ের জন্য একটি সাইডকার কন্টেইনার)। পডগুলি ক্ষণস্থায়ী। ক্লাস্টারের চাহিদা অনুসারে এগুলি তৈরি, ধ্বংস এবং প্রতিস্থাপন করা হয়।.

আপনার পডগুলি প্রকাশ করার জন্য, কুবারনেটস রিসোর্সটি অফার করে সেবাযা একটি নেটওয়ার্ক বিমূর্তকরণ স্তর হিসেবে কাজ করে। একটি পরিষেবা পডের একটি সেটকে গোষ্ঠীভুক্ত করে এবং এটি একটি স্থিতিশীল আইপি ঠিকানা, একটি ডিএনএস নাম এবং অভ্যন্তরীণ লোড ব্যালেন্সিং প্রদান করে।যাতে গ্রাহকদের প্রতিটি পডের বিস্তারিত জানার প্রয়োজন না হয়।

সম্পদ বিস্তৃতি এটি পডগুলি কীভাবে স্থাপন এবং আপডেট করা উচিত তা নির্ধারণ করতে ব্যবহৃত হয়: কতগুলি প্রতিলিপি, কোন চিত্র ব্যবহার করতে হবে, কোন ট্যাগ প্রয়োগ করতে হবে এবং কোন আপডেট কৌশল অনুসরণ করতে হবে। কুবারনেটস এটি পরিচালনা করে। সর্বদা কাঙ্ক্ষিত সংখ্যক পড চলমান রাখুন এবং কনফিগারেশন পরিবর্তন করার সময় রোলিং আপডেট বা রোলব্যাক সম্পাদন করতে।

এছাড়াও সম্পদ রয়েছে যেমন কনফিগম্যাপ এবং গোপনীয়তাএই বৈশিষ্ট্যগুলি আপনাকে কনফিগারেশনকে বহির্মুখী করতে এবং সংবেদনশীল ডেটা (পাসওয়ার্ড, টোকেন, API কী) ছবির মধ্যে প্যাকেজ না করেই সংরক্ষণ করতে দেয়। এটি বিভিন্ন পরিবেশে নিরাপদ কনফিগারেশন ব্যবস্থাপনাকে ব্যাপকভাবে সহজ করে তোলে।

কিভাবে একটি Kubernetes ক্লাস্টার সংগঠিত করবেন

গুচ্ছের "প্রধান" হল কুবেরনেটস নিয়ন্ত্রণ পরিকল্পনাযা সমগ্র সিস্টেমকে সুসংগঠিত করার জন্য দায়ী বেশ কয়েকটি উপাদানকে একত্রিত করে। তাদের মধ্যে রয়েছে API সার্ভারযা ক্লাস্টার পরিচালনার প্রবেশদ্বার; যেকোনো কাজ (একটি স্থাপনা তৈরি করা, পড তালিকাভুক্ত করা, একটি পরিষেবা পরিবর্তন করা) এই API এর মাধ্যমে যায়।

El নির্ধারণকারী প্রতিটি পড কোন নোডটি চালায় তা নির্ধারণ করার জন্য এটি দায়ী, উপলব্ধ সম্পদ, সখ্যতা এবং সীমাবদ্ধতা বিবেচনা করে; যখন কন্ট্রোলার ম্যানেজার ক্লাস্টারের অবস্থা পর্যবেক্ষণ করুন এবং ম্যানিফেস্টে আপনি যা বলেছেন তার সাথে বাস্তবতা মিলে যায় তা নিশ্চিত করার জন্য পদক্ষেপ নিন (উদাহরণস্বরূপ, আপনার অনুরোধের চেয়ে কম পড থাকলে নতুন পড তৈরি করুন)।

  ঠিক করুন: "উইন্ডোজ রিকভারি মিডিয়া বা ইনস্টলেশন মিডিয়া সন্নিবেশ করুন" ত্রুটি৷

রাজ্য সঞ্চয়স্থানের দায়িত্ব দেওয়া হয়েছে ইত্যাদিএকটি বিতরণকৃত ডাটাবেস ক্লাস্টারের সমস্ত রিসোর্সের কনফিগারেশন এবং তথ্য সংরক্ষণ করে। এছাড়াও, প্রতিটি কর্মী নোডে নিম্নলিখিত প্রক্রিয়াগুলি চলে: কুবলেট (এজেন্ট যা নোডকে API সার্ভারের সাথে যোগাযোগ করে), কুবে-প্রক্সি (যা নেটওয়ার্ক ট্র্যাফিক এবং লোড ব্যালেন্সিং পরিচালনা করে) এবং কন্টেইনার রানটাইম (ডকার, কন্টেইনারড, সিআরআই-ও, ইত্যাদি)।

YAML ফাইল ব্যবহার করে Kubernetes-এ মাইক্রোসার্ভিসেস স্থাপন করা হচ্ছে

Kubernetes-এ একটি মাইক্রোসার্ভিস স্থাপন করার জন্য, এটিকে a দিয়ে বর্ণনা করা সাধারণ YAML ইশতেহার, যেখানে আপনি ডিপ্লয়মেন্ট (পড টেমপ্লেট, ছবি, পোর্ট, প্রতিলিপির সংখ্যা, লেবেল) এবং ক্লাস্টারের ভিতরে বা বাইরে এটি প্রকাশ করার জন্য সংশ্লিষ্ট পরিষেবা সংজ্ঞায়িত করেন।

"my-app" নামক একটি অ্যাপ্লিকেশনের জন্য স্থাপনার একটি মৌলিক উদাহরণ এইরকম দেখতে হতে পারে, যেখানে তিনটি প্রতিলিপি এবং পোর্ট 3000 সংজ্ঞায়িত করা হয়েছে কন্টেইনার পোর্ট হিসেবে:

apiVersion: apps/v1
kind: Deployment
metadata:
name: mi-app
spec:
replicas: 3
selector:
matchLabels:
app: mi-app
template:
metadata:
labels:
app: mi-app
spec:
containers:
- name: mi-app
image: mi-app:latest
ports:
- containerPort: 3000

এই ইশতেহারটি ইঙ্গিত দেয় যে ক্লাস্টারকে অবশ্যই বজায় রাখতে হবে তিনটি পড চালু আছে "my-app:latest" ছবিটি দিয়ে, সবগুলোই app=my-app দিয়ে ট্যাগ করা হয়, যাতে কোনও পরিষেবা তাদের সনাক্ত করতে পারে এবং তাদের মধ্যে ট্র্যাফিক বিতরণ করতে পারে। ব্যর্থতার ক্ষেত্রে Kubernetes স্বয়ংক্রিয়ভাবে স্কেলিং, আপডেট এবং পড প্রতিস্থাপনের জন্য যুক্তি পরিচালনা করে।

স্থাপনার পাশাপাশি, পরিষেবার ধরণ নির্ধারণ করাও সাধারণ। ক্লাস্টারআইপি, নোডপোর্ট বা লোডব্যালেন্সারমাইক্রোসার্ভিসটি কেবল ক্লাস্টারের মধ্যেই, নোড থেকে, নাকি ইন্টারনেট থেকে অ্যাক্সেসযোগ্য হবে তার উপর নির্ভর করে, এই সমস্ত কনফিগারেশনটি রিপোজিটরিতে সংস্করণ করা হয়েছে, CI/CD পাইপলাইনের সাথে নির্বিঘ্নে সংহত করা হয়েছে।

কুবারনেটসে স্কেলিং, আপগ্রেড এবং স্ব-নিরাময়

কুবারনেটস ব্যবহারের একটি বড় কারণ হল এর ক্ষমতা অ্যাপ্লিকেশন বন্ধ না করেই মাইক্রোসার্ভিসেস স্কেল এবং আপডেট করুনআপনি ম্যানিফেস্টে (অথবা kubectl কমান্ডের সাহায্যে) প্রতিলিপির সংখ্যা পরিবর্তন করতে পারেন এবং পছন্দসই মান না পৌঁছানো পর্যন্ত ক্লাস্টার পড তৈরি বা অপসারণের দায়িত্ব নেবে।

এই স্কেলিং ম্যানুয়াল বা স্বয়ংক্রিয় হতে পারে, যেমন সম্পদ ব্যবহার করে অনুভূমিক পড অটোস্কেলার (HPA)এই বৈশিষ্ট্যটি CPU বা মেমোরির মতো মেট্রিক্সের উপর ভিত্তি করে গতিশীলভাবে প্রতিলিপিগুলিকে সামঞ্জস্য করে। এইভাবে, উচ্চ চাহিদার সময় ক্ষমতা বৃদ্ধি পায় এবং লোড কমে গেলে সম্পদ খালি হয়।

আপডেটের ক্ষেত্রে, কুবারনেটস ইমপ্লিমেন্টগুলি রোলিং আপডেট ডিফল্টরূপে: এটি নতুন সংস্করণের সাথে পড তৈরি করে এবং হঠাৎ করে কোনও কাট না করেই ধীরে ধীরে পূর্ববর্তী সংস্করণ থেকে পডগুলি মুছে ফেলে। যদি কিছু ভুল হয়ে যায়, তাহলে একটি রোলব্যাক এটি আপনাকে পূর্ববর্তী সংস্করণটি দ্রুত পুনরুদ্ধার করতে দেয়।

আরেকটি গুরুত্বপূর্ণ কার্যকারিতা হল স্ব-মেরামতযদি কোনও কন্টেইনার বা পড মারা যায়, তাহলে কুবারনেটস স্বয়ংক্রিয়ভাবে এটি পুনরায় তৈরি করে; যদি কোনও নোড সাড়া দেওয়া বন্ধ করে দেয়, তাহলে প্রভাবিত পডগুলি অন্যান্য উপলব্ধ নোডগুলিতে পুনঃনির্ধারিত হয়, অ্যাপ্লিকেশনটি কার্যকর রাখে।

কুবারনেটেসে মাইক্রোসার্ভিসের পর্যবেক্ষণ এবং পর্যবেক্ষণযোগ্যতা

একটি মাইক্রোসার্ভিসেস পরিবেশ সঠিকভাবে পরিচালনা করার জন্য, কেবল স্থাপন এবং স্কেল করা যথেষ্ট নয়: পরিষেবার কর্মক্ষমতা এবং স্থিতি সম্পর্কে আপনার রিয়েল-টাইম দৃশ্যমানতা প্রয়োজন।কুবারনেটসে, মেট্রিক্স সংগ্রহের জন্য প্রমিথিউস এবং সেগুলি কল্পনা করার জন্য গ্রাফানার মতো সরঞ্জামগুলিকে একীভূত করা খুবই সাধারণ।

প্রমিথিউস পড, নোড এবং ক্লাস্টার উপাদানগুলি থেকে "স্ক্র্যাপিং" মেট্রিক্স পরিচালনা করে, সেগুলি সংরক্ষণ করে এবং আপনাকে সেগুলি সম্পর্কে সতর্কতা সংজ্ঞায়িত করার অনুমতি দেয়; গ্রাফানার সাথে মিলিত হয়ে, আপনি ড্যাশবোর্ড তৈরি করতে পারেন যেখানে CPU ব্যবহার, মেমরি, HTTP ত্রুটি, লেটেন্সি, প্রতিলিপির সংখ্যা, অথবা নোডের অবস্থা পর্যবেক্ষণ করুন খুব স্পষ্টভাবে।

এছাড়াও, kubectl অফার করে comandos স্থাপনা, পরিষেবা, পড এবং অন্যান্য সংস্থানগুলির অবস্থা পরিদর্শন করতে, দেখুন লগএর মধ্যে রয়েছে ইভেন্ট বর্ণনা করা বা ডিবাগিংয়ের জন্য কন্টেইনার অ্যাক্সেস করা। এই সবকিছুই একটি পর্যবেক্ষণযোগ্যতা কৌশলের অংশ যা, মাইক্রোসার্ভিসে, যদি তুমি শান্তিতে ঘুমাতে চাও, তাহলে এটা ঐচ্ছিক নয়।.

মাইক্রোসার্ভিসেস, ডকার এবং কুবারনেটসের মধ্যে সম্পর্ক

মাইক্রোসার্ভিসেস, ডকার এবং কুবারনেটস একই ধাঁধার টুকরোর মতো একসাথে ফিট করে: মাইক্রোসার্ভিসেস আর্কিটেকচার নির্ধারণ করে যে আপনি কীভাবে অ্যাপ্লিকেশন ডিজাইন করবেন, ডকার প্রতিটি পরিষেবা প্যাকেজিং এবং পরিচালনা পরিচালনা করে এবং কুবারনেটস সেই সমস্ত কন্টেইনারগুলিকে সাজিয়ে তোলে। একটি গুচ্ছের মধ্যে।

প্রতিটি মাইক্রোসার্ভিস ক্যাপসুলেটেড থাকে একটি ডকার চিত্র যার কোড এবং নির্ভরতা অন্তর্ভুক্ত থাকেএটি নিশ্চিত করে যে এটি ডেভেলপারের ল্যাপটপে, পরীক্ষার পরিবেশে বা ক্লাউড প্রোডাকশনে একইভাবে আচরণ করে। এই ধারাবাহিক প্যাকেজিং DevOps দর্শনের জন্য অত্যাবশ্যক।

তার পক্ষ থেকে, কুবারনেটস হিসাবে কাজ করে ধারক অর্কেস্ট্রেটরএটি নির্ধারণ করে যে প্রতিটি মাইক্রোসার্ভিসের কতগুলি উদাহরণ চালু থাকা উচিত, সেগুলি কোথায় অবস্থিত, কীভাবে ট্র্যাফিক তাদের সাথে ভারসাম্যপূর্ণ, কীভাবে তারা ব্যর্থতা থেকে পুনরুদ্ধার করে এবং চাহিদা বৃদ্ধি বা হ্রাস পেলে কীভাবে তারা স্কেল করে।

উদাহরণস্বরূপ, একটি ই-কমার্স অ্যাপ্লিকেশনে, আপনার কাছে প্রমাণীকরণ, ক্যাটালগ, শপিং কার্ট এবং অর্থপ্রদানের জন্য মাইক্রোসার্ভিসেস থাকতে পারে, প্রতিটির নিজস্ব ডকার ইমেজ এবং কুবারনেটস স্থাপনার সুবিধা থাকবে। এইভাবে, আপনি গুরুত্বপূর্ণ সময়ে বিশাল প্রচারণা বা অর্থপ্রদানের মাধ্যমে ক্যাটালগটি স্কেল করতে পারেন, বাকিদের প্রভাবিত না করেইএবং CI/CD পাইপলাইন থেকে শুরু করে উৎপাদন-পরবর্তী পর্যবেক্ষণ পর্যন্ত এর সমগ্র জীবনচক্রকে সুসংগঠিত করে।

উইন্ডোজে ডকার এবং কুবারনেটস ইনস্টল করা

আপনি যদি উইন্ডোজ দিয়ে কাজ করেন, তাহলে শুরু করার সবচেয়ে সহজ উপায় হল ইনস্টল করা ডকার ডেস্কটপযার মধ্যে ডকার ইঞ্জিন এবং অতিরিক্ত সরঞ্জাম রয়েছে, এমনকি আপনার মেশিনে কুবারনেটসকে একীভূত করার বিকল্পগুলিও রয়েছে।

  উইন্ডোজ ১১-এ কীভাবে অভিভাবকীয় নিয়ন্ত্রণ সক্ষম এবং কনফিগার করবেন

সাধারণ প্রক্রিয়াটিতে জড়িত অফিসিয়াল ওয়েবসাইট থেকে ডকার ডেস্কটপ ডাউনলোড করুনইনস্টলারটি (Docker Desktop Installer.exe) চালান এবং উইজার্ডটি অনুসরণ করুন। ইনস্টলেশনের সময়, আপনি Hyper-V ব্যবহার করার মধ্যে একটি বেছে নিতে পারেন অথবা WSL 2 ভার্চুয়ালাইজেশন প্রযুক্তি হিসেবে; যদি শুধুমাত্র একটিই উপলব্ধ থাকে, তাহলে সেটিই ব্যবহার করা হবে।

সিস্টেমটি পুনরায় চালু হওয়ার পরে, ডকার ডেস্কটপ খোলার ফলে কন্টেইনার পরিবেশ শুরু হয়; যদি ভার্চুয়ালাইজেশন সক্ষম না থাকে, তাহলে ইনস্টলার নিজেই সাধারণত অফার করে এটি স্বয়ংক্রিয়ভাবে সক্ষম করুনসেখান থেকে আপনি কন্টেইনার চালু করতে পারেন, উদাহরণস্বরূপ, Nginx অথবা আপনার নিজস্ব অ্যাপ্লিকেশন।

উইন্ডোজে Kubernetes ব্যবহার করার জন্য, আপনাকে প্রথমে Docker এবং ভার্চুয়ালাইজেশন ক্ষমতা সক্ষম করতে হবে। তারপর, আপনি Docker Desktop থেকে Kubernetes সক্ষম করতে পারেন অথবা kubectl ইনস্টল এবং কনফিগার করুন বহিরাগত ক্লাস্টার পরিচালনা করতে এবং, যদি উপযুক্ত হয়, একটি দূরবর্তী ম্যানিফেস্টের মাধ্যমে Kubernetes ড্যাশবোর্ড স্থাপন করতে।

একবার কনফিগার হয়ে গেলে, আপনি kubectl দিয়ে তৈরি একটি প্রমাণীকরণ টোকেন ব্যবহার করে এবং উদাহরণস্বরূপ, কনফিগারেশন ফাইলের দিকে নির্দেশ করে স্থানীয় প্রক্সির মাধ্যমে ড্যাশবোর্ড অ্যাক্সেস করতে সক্ষম হবেন। .কিউব/কনফিগ ব্রাউজার থেকে ক্লাস্টারে অ্যাক্সেস পরিচালনা করতে।

লিনাক্সে ডকার এবং কুবারনেটস ইনস্টল করা

উবুন্টুর মতো লিনাক্স সিস্টেমে, ডকার ইনস্টল করা সাধারণত বেশ সহজ: প্যাকেজগুলি আপডেট করা হয়, ডকার ইঞ্জিন ইনস্টল করা হয় এবং পরিবেশটি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করার জন্য পরীক্ষা করা হয়। একটি পরীক্ষামূলক কন্টেইনার চালানো।

সাধারণ পদক্ষেপগুলির মধ্যে রয়েছে সিস্টেম আপডেট করা যার সাথে apt-get আপডেট এবং apt-get আপগ্রেডডকার ডেস্কটপের পূর্ববর্তী যেকোনো সংস্করণ, যদি থাকে, সরিয়ে ফেলুন এবং তারপর অফিসিয়াল রিপোজিটরি থেকে অথবা পছন্দসই সংস্করণ নির্দিষ্ট করে docker-ce, docker-ce-cli, containerd.io এবং docker-compose প্লাগইন ইনস্টল করুন।

সবকিছু ঠিকঠাক আছে কিনা তা যাচাই করার জন্য, সাধারণত একটি "হ্যালো-ওয়ার্ল্ড" কন্টেইনার চালু করা হয়। এটি একটি ন্যূনতম ছবি ডাউনলোড করে এবং চালায়।যদি বার্তাটি সঠিকভাবে প্রদর্শিত হয়, তাহলে আপনার ডকার চালু আছে এবং আপনার মাইক্রোসার্ভিসেসগুলিকে কন্টেইনারাইজ করা শুরু করার জন্য প্রস্তুত।

কুবারনেটসের ক্ষেত্রে, লিনাক্সে এটি এমন সরঞ্জাম ব্যবহার করে ইনস্টল করা যেতে পারে যেমন kubeadmসাধারণ কর্মপ্রবাহের মধ্যে রয়েছে Kubernetes রিপোজিটরি কী যোগ করা, প্যাকেজ তালিকা ফাইল কনফিগার করা, kubeadm ইনস্টল করা এবং এর সংস্করণ পরীক্ষা করা।

এরপর ক্লাস্টারটি মাস্টার নোডে ইনিশিয়ালাইজ করা হয় কুবেডম ইনিট (পডের জন্য নেটওয়ার্ক পরিসর নির্দিষ্ট করে), "join" কমান্ডটি পুনরুদ্ধার করা হয় যাতে কর্মী নোডগুলি ক্লাস্টারে যোগদান করে এবং ডিরেক্টরি তৈরি করে স্থানীয় অ্যাক্সেস কনফিগার করা হয়। $HOME/.kubeadmin.conf ফাইলটি অনুলিপি করে এবং অনুমতিগুলি সামঞ্জস্য করে।

এর মাধ্যমে, আপনার জন্য একটি মৌলিক ক্লাস্টার প্রস্তুত থাকবে কন্টেইনারাইজড মাইক্রোসার্ভিসেস স্থাপন করুন, পডের একটি নেটওয়ার্ক (ফ্ল্যানেল, ক্যালিকো, ইত্যাদি) ইনস্টল করুন এবং ডিপ্লয়মেন্ট, সার্ভিসেস এবং বাকি কুবারনেটস রিসোর্সগুলির সাথে কাজ শুরু করুন।

ডকার এবং কুবারনেটস ব্যবহারের জন্য সর্বোত্তম অনুশীলন এবং সুপারিশ

এই পরিবেশগুলি থেকে সর্বাধিক সুবিধা পেতে, ডকারের সাথে শুরু করে কয়েকটি সেরা অনুশীলন অনুসরণ করা যুক্তিযুক্ত, অফিসিয়াল বা বিশ্বস্ত ছবি ব্যবহার করুন, হয় ডকার হাব থেকে অথবা যাচাইকৃত ব্যক্তিগত সংগ্রহস্থল থেকে, নিরাপত্তা ঝুঁকি কমাতে।

এটা অত্যন্ত সুপারিশ করা হয় ছবির আকার অপ্টিমাইজ করুন হালকা বেস ইমেজ ব্যবহার করে, মাল্টি-স্টেজ বিল্ড এবং অপসারণ অস্থায়ী ফাইল অথবা অপ্রয়োজনীয় শিল্পকর্ম। ছোট ছবি দ্রুত ডাউনলোড হয় এবং Kubernetes-এ স্থাপনার গতি বাড়ায়।

আরেকটি গুরুত্বপূর্ণ বিষয় হল ব্যবহার করা ডেটা স্থায়িত্বের জন্য পরিমাণকন্টেইনারের মধ্যে তথ্য সংরক্ষণের পরিবর্তে, একটি কন্টেইনার হারানো বা পুনঃনির্মাণ করা গুরুত্বপূর্ণ তথ্য হারানোর সাথে জড়িত নয়।

প্রতিটি কন্টেইনারে বরাদ্দকৃত সম্পদের পরিমাণ সীমিত করা (CPU, মেমরি, I/O) সাহায্য করে একটি একক পরিষেবা হোস্টের একচেটিয়া আধিপত্য বিস্তার করা থেকে বিরত রাখুন এবং বাকিগুলোও নষ্ট করে। তদুপরি, উৎপাদন নিয়ন্ত্রণ বজায় রাখার জন্য ডকার স্ট্যাটস বা আরও উন্নত সমাধানের মতো সরঞ্জাম দিয়ে কন্টেইনারগুলি পর্যবেক্ষণ করতে হবে।

Kubernetes-এর ক্ষেত্রে, উৎপাদন শুরু করার আগে ক্লাস্টার আর্কিটেকচার এবং এর উপাদানগুলি বোঝা অপরিহার্য। এটি অনেক মাথাব্যথা কমায়।

এটাও একটা ভালো ধারণা যতটা সম্ভব স্বয়ংক্রিয় করুনব্যাচ আপলোডের জন্য রেপ্লিকেশন কন্ট্রোলার, অটোস্কেলার এবং জবস ব্যবহার করুন; রোলিং আপডেট এবং রোলব্যাকের সুবিধা নিন; এবং গিট রিপোজিটরিতে ভার্সনযুক্ত ডিক্লেরেটেটিভ ম্যানিফেস্ট সংজ্ঞায়িত করুন।

নিরাপত্তা সর্বদা সর্বোচ্চ অগ্রাধিকার হওয়া উচিত: API সার্ভারে অ্যাক্সেস সীমাবদ্ধ করুন, সিক্রেটস ব্যবহার করে শংসাপত্র পরিচালনা করুন, ট্রানজিট এবং বিশ্রামের সময় ডেটা এনক্রিপ্ট করুননিয়মিত প্যাচ প্রয়োগ করুন এবং নেটওয়ার্ক নীতিগুলি সংজ্ঞায়িত করুন যা সর্বনিম্ন সুবিধার নীতি অনুসারে পরিষেবাগুলির মধ্যে যোগাযোগ সীমিত করে।

পরিশেষে, এটা থাকা অপরিহার্য যে ভালো কেন্দ্রীভূত পর্যবেক্ষণ এবং লগিং সিস্টেমএবং প্রাক-উৎপাদন পরিবেশের ক্ষেত্রেও যেখানে পরিবর্তনগুলি উৎপাদন ক্লাস্টারে আনার আগে পুঙ্খানুপুঙ্খভাবে পরীক্ষা করা যেতে পারে, ঝুঁকি এবং অপ্রীতিকর বিস্ময় হ্রাস করে।

মাইক্রোসার্ভিসেস, ডকার কন্টেইনার এবং কুবারনেটস অর্কেস্ট্রেশনের এই সম্পূর্ণ ইকোসিস্টেম আপনাকে এমন সিস্টেম তৈরি করতে দেয় যা ঐতিহ্যবাহী মনোলিথের তুলনায় অনেক বেশি নমনীয়, স্কেলেবল এবং স্থিতিস্থাপক। একটি সুচিন্তিত আর্কিটেকচার, উপযুক্ত সরঞ্জাম এবং DevOps সেরা অনুশীলনগুলিকে একত্রিত করে, আপনি এমন অ্যাপ্লিকেশন স্থাপন করতে পারেন যা কাজের চাপের পরিবর্তনের সাথে নির্বিঘ্নে খাপ খাইয়ে নেয়, ব্যর্থতা থেকে দ্রুত পুনরুদ্ধার করে এবং সময়ের সাথে সাথে বিকশিত হওয়া সহজ।

ডকার কম্পোজ টিউটোরিয়াল
সম্পর্কিত নিবন্ধ:
কন্টেইনার সাজানোর জন্য সম্পূর্ণ ডকার কম্পোজ টিউটোরিয়াল