kubectl যা করে, Python দিয়েও করা যায় — আর তার পর লুপ, শর্ত, retry আর রিপোর্ট যোগ করা যায়। kubeconfig, দুই ধরনের connect, CoreV1 বনাম AppsV1, pod দেখা, deployment বানানো, scale করা, মুছে ফেলা, আর YAML-এর সাথে তুলনা।
প্রশ্নটা ন্যায্য, আর সাক্ষাৎকারেও আসে। kubectl দিয়ে সব হয়, তাহলে Python কেন?
উত্তরটা এক বাক্যে: kubectl একটা কমান্ড চালায়, Python একটা সিদ্ধান্ত নেয়।
একটু খুলে বলি। ধরো তোমার ৪০টা namespace, আর তুমি চাও যেসব pod পনেরো মিনিটের বেশি CrashLoopBackOff-এ আছে সেগুলো মুছে দিতে আর কোন কোনটা ছিল সেটা Slack-এ জানাতে।
kubectl দিয়ে এটা করতে হবে shell-এ — kubectl get pods --all-namespaces -o json | jq ... দিয়ে, তারপর loop, তারপর তারিখের হিসাব shell-এ। লেখা যায়, কিন্তু ছয় মাস পরে ওই লাইনটা কেউ পড়তে পারবে না।
Python-এ এটা পঁচিশ লাইনের একটা ফাইল যার প্রতিটা অংশের নাম আছে।
তাহলে সীমারেখাটা কোথায়? এভাবে ভাবো:
শেষ দুটো গুরুত্বপূর্ণ। shell থেকে একটা HTTP POST করা যায় ঠিকই, কিন্তু উত্তরের JSON পড়া, ব্যর্থ হলে আবার চেষ্টা করা, আর ভুলটা মানুষের ভাষায় জানানো — এসব shell-এ কষ্টকর, Python-এ স্বাভাবিক।
আর একটা কথা যেটা কেউ বলে না: Python-এর কোড পরীক্ষা করা যায়। একটা ফাংশন আলাদা করে ডেকে দেখা যায় সে ঠিক তালিকা ফেরত দেয় কি না। shell-এর একটা লম্বা pipe দিয়ে সেটা করা যায় না।
একটা ভুল ধারণা আগে সরিয়ে নিই: Python client kubectl-কে ডাকে না। সে নিজেই Kubernetes API server-এর সাথে কথা বলে — যেভাবে kubectl বলে, ঠিক সেভাবে।
তাহলে সে server-এর ঠিকানা কোথায় পায়? kubeconfig থেকে।
~/.kube/config ফাইলটায় তিনটে জিনিস থাকে:
• cluster — API server-এর ঠিকানা আর তার certificate
• user — তুমি কে, সেটা প্রমাণ করার certificate বা token
• context — কোন cluster + কোন user + কোন namespace, একসাথে বাঁধা
current-context ঠিক করে দেয় কোনটা এখন ব্যবহার হচ্ছে। এজন্যই kubectl config current-context একটা জরুরি কমান্ড: তুমি কোন ক্লাস্টারে আছো সেটা জানার একমাত্র উপায়।
আর এটাই সেই জায়গা যেখানে সবচেয়ে ভয়ংকর ভুলটা হয়। একটা স্ক্রিপ্ট যা development-এ ঠিক কাজ করে, context না বদলে production-এ চালালে সেই একই কাজ production-এ করবে। স্ক্রিপ্ট জানে না সে কোথায় আছে — kubeconfig যেখানে দেখায়, সে সেখানেই কাজ করে।
তাই একটা অভ্যাস: যেকোনো ক্লাস্টার-বদলানো স্ক্রিপ্ট চালানোর আগে kubectl config current-context দেখে নাও। এক সেকেন্ডের কাজ, আর একদিন এটা তোমাকে বাঁচাবে।
হাত দেওয়ার আগে চারটে জিনিস দেখে নেওয়া দরকার, আর প্রতিটার কারণ আছে।
এক, Python আছে কি। python3 --version। তুচ্ছ শোনায়, কিন্তু অনেক server-এ python বলতে এখনো পুরনো একটা জিনিস বোঝায়।
১১৬টি অংশের ২৪টি দেখানো হয়েছে, ৯২টি বাকি