DevOps সফ্টওয়্যার ইঞ্জিনিয়ার এবং ডেভেলপাররা অ্যাপ্লিকেশন ডেভেলপ এবং ডিপ্লয় করার পদ্ধতি বদলিয়ে দিয়েছে। এই বিপ্লবের হৃদয়ে প্রযুক্তিগুলোর একটি হলো Kubernetes।
আসুন এক্সপ্লোর করি কীভাবে আপনি MicroK8s (MicroKates) ব্যবহার করে উবুন্টুতে Kubernetes-এর একটি লোকাল ইনস্ট্যান্স ইনস্টল করতে পারেন। এই সেটআপ থাকলে, আপনি সহজে কন্টেইনারাইজড অ্যাপ্লিকেশন হোস্ট করতে পারেন একটি সিকিউয়ার, নির্ভরযোগ্য, এবং হাইলি স্কেলেবল (highly scalable) манере।
কেন MicroK8s ব্যবহার করবেন?
Kubernetes একটি ওপেন-সোর্স প্ল্যাটফর্ম যা DevOps অপারেশন স্ট্রিমলাইন করে কন্টেইনারাইজড অ্যাপ্লিকেশনের ডিপ্লয়মেন্ট, স্কেলিং, এবং ম্যানেজমেন্ট অটোমেট করে। Kubernetesকে পপুলারলি K8s 이름으로ও জানা হয়, নামটি Kubernetes-এ k এবং s-এর মাঝপথে আট অক্ষর থাকা থেকে এসেছে। MicroK8s কে একটি মাইক্রো Kubernetes ইনস্ট্যান্স হিসেবে ভাবুন।
প্রায় সকল পাবলিক এবং প্রাইভেট প্রোডাকশন-গ্রেড ক্লাউড এনভায়রনমেন্ট যারা উবুন্টু চালায়, তারা Charmed Kubernetes ব্যবহার করে কন্টেইনারাইজড অ্যাপ ম্যানেজ করার জন্য। Charmed Kubernetes-এর চ্যালেঞ্জ হলো এটি রিসোর্স-হাঙ্গরি (resource hungry) এবং সঠিকভাবে কনফিগার করার জন্য ভালো লেভেলের জ্ঞান দরকার।
এখানেই MicroK8s কাজে আসে। MicroK8s একটি ছোট এবং হালকা আপস্ট্রিম (upstream) Kubernetes যা একটি ডেভেলপারের PC-তে, একটি IoT ডিভাইসে, বা এজ ডিভাইসে (edge devices) নেটিভলি চালানো যায় ভার্চুয়াল মেশিনের প্রয়োজন ছাড়া। MicroK8s ক্রস-প্ল্যাটফর্ম এবং Intel এবং ARM আর্কিটেকচার উভয়েই চলতে পারে।
MicroK8s আপনাকে Kubernetes-এর সাথে পরিচিত হওয়ার সেরা উপায়ের একটি দেয়, ন্যূনতম ঘর্ষণ (friction) সহ। এটি Cloud Native Computing Foundation (CNCF) দ্বারা সার্টিফাইড Kubernetes আপস্ট্রিম, যা নিশ্চিত করে Kubernetes-এর ইমপ্লিমেন্টেশন কনফর্ম্যান্ট (conformant) এবং ইন্টারঅপারেবল (interoperable) নির্দিষ্ট ইন্ডাস্ট্রি স্ট্যান্ডার্ড অনুযায়ী।
স্টেপ ১: উবুন্টুতে MicroK8s ইনস্টল করা
আপনি সহজে উবুন্টুতে MicroK8s ইনস্টল করতে পারেন snap কমান্ড দিয়ে।
sudo snap install microk8s --classic
বিকল্পভাবে, আপনি Ubuntu Software Center ব্যবহার করে GUI থেকে MicroK8s ইনস্টল করতে পারেন। শুধু microk8s সার্চ করুন এবং তারপর Install বাটনে ক্লিক করুন।
স্টেপ ২: MicroK8s-এর জন্য আপনার ফায়ারওয়াল কনফিগার করা
পড (pod) এবং ইন্টারনেটের সাথে सहজ যোগাযোগ নিশ্চিত করতে, আপনার ফায়ারওয়ালের কন্টেইনার নেটওয়ার্ক ইন্টারফেসে ইনকামিং এবং আউটগোइং কমিউনিকেশন এনেবল করা উচিত।
একটি পড (pod) Kubernetes-এ সবচেয়ে ছোট ডিপ্লয়েবল কম্পিউটিং ইউনিট; এটি একটি একক বা কন্টেইনার গ্রুপ হতে পারে শেয়ার্ড স্টোরেজ এবং নেটওয়ার্ক রিসোর্স সহ।
sudo ufw allow in on cni0 && sudo ufw allow out on cni0
তারপর, নিচের কমান্ড চালান:
sudo ufw default allow routed
আরো জানুন: UFW দিয়ে উবুন্টু ফায়ারওয়াল কনফিগার করার পদ্ধতি
স্টেপ ৩: আপনার ইউজারকে MicroK8s গ্রুপে যোগ করা
এই মুহূর্তে, আপনাকে অধিকাংশ MicroK8s কমান্ড চালাতে sudo কমান্ড ব্যবহার করতে হবে। প্রোডাকশন সার্ভারে এটি একটি ভালো সিকিউরিটি মেজার হলেও, ডেভেলপমেন্ট মেশিনে এটি প্রয়োজন নাও হতে পারে।
sudo ব্যবহার না করতে আপনার ইউজারকে MicroK8s গ্রুপে যোগ করুন।
sudo usermod -aG microk8s $USER
এছাড়া, বর্তমান ইউজারকে ~/.kube ডিরেক্টরির মালিক করুন।
sudo chown -f -R $USER ~/.kube
পরিবর্তনগুলো ইফেক্টিভ করতে, ইউজার গ্রুপ রিলোড করুন নিচের কমান্ড চালিয়ে:
newgrp microk8s
আরো জানুন: লিনাক্সে ইউজার গ্রুপ ম্যানেজ করার পদ্ধতি
স্টেপ ৪: গুরুত্বপূর্ণ অ্যাড-অন (addons) এনেবল করা
ডিফল্টভাবে, MicroK8s শুধু ন্যূনতম জিনিসগুলো ধারণ করে এজ এবং IoT ডিভাইসে মিনিমাল ফুটপ্রিন্ট (minimal footprint) পাওয়ার জন্য। যাইহোক, আপনি MicroK8s সার্ভিস ম্যানেজ করার জন্য কিছু গুরুত্বপূর্ণ অ্যাড-অন ইনস্টল করতে পারেন। microk8s কমান্ড দিয়ে DNS, ড্যাশবোর্ড, এবং স্টোরেজ অ্যাড-অন এনেবল করুন।
microk8s enable dns dashboard storage
DNS অ্যাড-অন অন্য সার্ভিসের জন্য প্রয়োজন হলে পারে, তাই এটি সবসময় এনেবল রাখা রিকমেন্ডেড।
ড্যাশবোর্ড অ্যাড-অন আপনাকে MicroK8s-এ সার্ভিসের একটি গ্রাফিক্যাল ওভারভিউ দেয়; আপনি এটি সার্ভিস ম্যানেজ করার জন্যও ব্যবহার করতে পারেন।
উপলব্ধ MicroK8s অ্যাড-অনগুলো লিস্ট দেখতে কমান্ড চালান:
microk8s status
স্টেপ ৫: MicroK8s ড্যাশবোর্ড দেখা
এখন যেহেতু আপনি ড্যাশবোর্ড অ্যাড-অন এনেবল করেছেন, আপনি সহজে আপনার ওয়েব ব্রাউজার থেকে MicroK8s ড্যাশবোর্ড এক্সেস করতে পারেন।
প্রথমে, আপনাকে ড্যাশবোর্ড পড (pod)-এর IP অ্যাড্রেস দরকার। আপনি এটি পেতে পারেন কমান্ড চালিয়ে:
microk8s kubectl get all --all-namespaces
উপরের কমান্ডের আউটপুট থেকে, আপনি লক্ষ্য করবেন kubernetes-dashboard সার্ভিস IP অ্যাড্রেস ১০.১৫২.১৮৩.৩৫-এ চলছে এবং TCP পোর্ট ৪৪৩-এ লিসেন (listen) করছে। নোট করুন যে এই IP অ্যাড্রেস আপনার ড্যাশবোর্ড সার্ভিস দ্বারা ব্যবহৃত IP থেকে ভিন্ন হতে পারে কারণ এটি র্যান্ডমলি জেনারেটেড।
আপনার ব্রাউজারে, লিস্ট করা IP অ্যাড্রেসে যান। এই কেসে, এটি হবে https://10.152.183.35:443। নিশ্চিত করুন আপনি সঠিক URL-এ পয়েন্ট করছেন।
সিকিউরিটির জন্য, Kubernetes ড্যাশবোর্ড আপনাকে সাইন-ইন করার জন্য অথেনটিকেশন ডিটেইলস চাইবে। আপনি ডিফল্ট ড্যাশবোর্ড টোকেন অ্যাক্সেস করতে পারেন নিচের কমান্ড চালিয়ে। তারপর প্রস্তুত kubernetes.io/service-account-token কপি করে টোকেন ইনপুটে পেস্ট করুন।
token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s kubectl -n kube-system describe secret $token
ড্যাশবোর্ড আপনাকে MicroK8s ওয়ার্কলোড, সার্ভিস, কনফিগারেশন, ক্লাস্টার, ইত্যাদির ওভারভিউ প্রেজেন্ট করবে।
স্টেপ ৬: MicroK8s দিয়ে একটি সার্ভিস তৈরি করা
MicroK8s একশনে দেখতে, আসুন একটি মাইক্রোবট (microbot) সার্ভিস ডিপ্লয়মেন্ট তৈরি করি যাতে দুটি পড থাকে। kubectl কমান্ড দিয়ে পড তৈরি করুন:
microk8s kubectl create deployment microbot --image=dontrebootme/microbot:v1
নিচের কমান্ড দিয়ে মাইক্রোবট পড স্কেল করুন।
microk8s kubectl scale deployment microbot --replicas=2
মাইক্রোবট ডিপ্লয়মেন্ট এক্সপোজ (expose) করার জন্য একটি সার্ভিস তৈরি করুন।
microk8s kubectl expose deployment microbot --type=NodePort --port=80 --name=microbot-service
আমরা এখন service/microbot-service নামের অধীনে দুটি মাইক্রোবট পড ডিপ্লয় করেছি। আপনি মাইক্রোবট সার্ভিস এবং অন্যান্য সার্ভিসের ডিটেইলস দেখতে পারেন নিচের কমান্ড চালিয়ে:
microk8s kubectl get all --all-namespaces
আপনি লক্ষ্য করবেন মাইক্রোবট সার্ভিস একটি NodePort-এ চলছে, তাই আপনি আপনার পিসির ব্রাউজার থেকে এটি অ্যাক্সেস করতে পারেন। এই কেসে, সার্ভিস র্যান্ডমলি জেনারেটেড পোর্ট ৩০৩৫৩-এ চলছে।
আপনার ব্রাউজারে, URL https://localhost:30353-এ যান, যেখানে 30353 উপরের আউটপুটে লিস্ট করা পোর্ট নম্বর। নিশ্চিত করুন আপনি সঠিক পোর্ট নম্বর ব্যবহার করছেন।
Kubernetes বনাম Docker: আপনি কোনটি বেছে নেবেন?
এই গাইডে দেখা গিয়েছে কীভাবে আপনার PC বা এজ ডিভাইসে লোকালি Kubernetes-এর একটি মিনিমাল ফুটপ্রিন্ট ইনস্টল করবেন। Kubernetes অনেক ডেভেলপারের ওয়ার্কফ্লোর অংশ এবং প্রোডাকশনে হাই-স্কেল কন্টেইনারাইজড অ্যাপ্লিকেশন ডিপ্লয় করার জন্য ব্যাপকভাবে ব্যবহৃত হয়।
Kubernetes কন্টেইনার গ্রুপ (যেমন docker কন্টেইনার) ম্যানেজ বা অর্কেস্ট্রেট (orchestrate) করতে ব্যবহৃত হয় সহজে। স্ট্যান্ডঅ্যালোন Docker, অন্যদিকে, মূলত সিঙ্গেল কন্টেইনার ম্যানেজ করার জন্য ব্যবহৃত হয়। Docker বা Kubernetes ব্যবহার করার পছন্দ আপনার টিমের কম্পিটেন্সি (competencies) এবং প্রোডাকশনে ডিপ্লয় করার সফ্টওয়্যারের আকারের ওপর নির্ভর করবে।