১. ভূমিকা
ত্রুটিপূর্ণ কুবারনেটিস ডেপ্লয়মেন্টের সমস্যা সমাধান করা একজন প্ল্যাটফর্ম ইঞ্জিনিয়ারের দৈনন্দিন জীবনের একটি সাধারণ এবং প্রায়শই হতাশাজনক অংশ। এর জন্য সাধারণত প্রচুর ম্যানুয়াল অনুসন্ধানের প্রয়োজন হয়: লগ ঘেঁটে দেখা, kubectl describe কমান্ড চালানো এবং একটিমাত্র অমিল বা ভুল কনফিগারেশন খুঁজে বের করার জন্য YAML ফাইলগুলো মিলিয়ে দেখা।
যদিও সাধারণ এআই চ্যাটবটগুলো ধারণা ব্যাখ্যা করতে বা সাধারণ কোড লিখতে সাহায্য করতে পারে, কিন্তু এগুলো বিচ্ছিন্নভাবে কাজ করে। আপনার নির্দিষ্ট কোডবেস বা ক্লাস্টারের লাইভ অবস্থা সম্পর্কে তারা কিছুই জানে না, যার ফলে প্রচুর পরিমাণে ম্যানুয়াল কপি-পেস্ট এবং কনটেক্সট সুইচিংয়ের প্রয়োজন হয়।
এই ল্যাবে, আপনি ক্রমবর্ধমান প্রেক্ষাপট-ভিত্তিক এআই টুল ব্যবহার করে কীভাবে এই ব্যবধান পূরণ করতে হয়, তা অভিজ্ঞতা লাভ করবেন। আপনি GKE-তে একটি ত্রুটিপূর্ণ অ্যাপ্লিকেশনের সমস্যা সমাধানের জন্য Gemini CLI এবং Model Context Protocol (MCP) ব্যবহার করবেন। এই ল্যাবের শেষে, আপনি বুঝতে পারবেন কীভাবে আপনার ফাইল ও পরিকাঠামো সম্পর্কে সচেতন এআই ব্যবহার করে জটিল সমস্যা দ্রুত সমাধান করা যায়, এবং কীভাবে এই ওয়ার্কফ্লোগুলোকে আপনার দলের জন্য পুনঃব্যবহারযোগ্য 'স্কিল'-এ রূপান্তরিত করা যায়।
মূল ধারণা
- প্ল্যাটফর্ম ইঞ্জিনিয়ারিং হলো এমন একটি পদ্ধতি যার মাধ্যমে অভ্যন্তরীণ টুলিং এবং ওয়ার্কফ্লো তৈরি ও রক্ষণাবেক্ষণ করা হয়, যা সফটওয়্যার ডেভেলপারদের প্রতিটি অন্তর্নিহিত ক্লাউড সার্ভিসে বিশেষজ্ঞ না হয়েও তাদের নিজস্ব পরিকাঠামো পরিচালনা করতে সক্ষম করে। এর লক্ষ্য হলো সামঞ্জস্য এবং নিরাপত্তা বজায় রেখে প্রযুক্তিগত জটিলতা কমানো। একটি প্রমিত আদর্শ পথ তৈরি করার মাধ্যমে, প্ল্যাটফর্ম টিম নিশ্চিত করে যে অ্যাপ্লিকেশন ডেভেলপাররা নিরাপদে এবং দ্রুত ডেপ্লয় করতে পারে, এবং একই সাথে প্ল্যাটফর্ম টিম পরিচালনা ও খরচের উপর নিয়ন্ত্রণ বজায় রাখে।
- জেমিনি সিএলআই : জেমিনি সিএলআই হলো একটি কমান্ড-লাইন ইন্টারফেস যা আপনাকে সরাসরি আপনার টার্মিনাল থেকে জেমিনি মডেলগুলোর সাথে ইন্টারঅ্যাক্ট করতে দেয়। একটি সাধারণ ওয়েব-ভিত্তিক চ্যাটবটের মতো নয়, এই সিএলআই-টি আপনার ডেভেলপমেন্ট এনভায়রনমেন্টের মধ্যেই থাকার জন্য ডিজাইন করা হয়েছে, যা বিদ্যমান শেল-ভিত্তিক ওয়ার্কফ্লোতে এআই (AI) ইন্টিগ্রেট করাকে আরও সহজ করে তোলে। এটি আপনাকে অন্যান্য কমান্ডের আউটপুট সরাসরি মডেলে পাঠাতে এবং আপনার টার্মিনাল না ছেড়েই নির্দেশাবলী কার্যকর করতে দেয়।
- মডেল কনটেক্সট প্রোটোকল (MCP) : MCP একটি ওপেন স্ট্যান্ডার্ড যা একটি AI মডেলকে নির্দিষ্ট টুল বা ডেটা সোর্সের সাথে সংযোগ স্থাপন করতে সক্ষম করে। MCP ছাড়া, একটি AI মডেল শুধু জানে যে তাকে কিসের উপর প্রশিক্ষণ দেওয়া হয়েছে এবং আপনার নির্দিষ্ট রিসোর্সগুলো দেখতে পারে না। GKE MCP সার্ভারের মাধ্যমে, Gemini CLI সক্রিয়ভাবে আপনার Google Cloud প্রোজেক্টের API-কে কোয়েরি করতে পারে, আপনার ক্লাস্টারগুলোর অবস্থা পরীক্ষা করতে পারে এবং আপনার হয়ে কমান্ড কার্যকর করতে পারে। এটি মডেলের রিজনিং ইঞ্জিন এবং প্রকৃত GKE API-এর মধ্যে একটি সেতু হিসেবে কাজ করে।
- এজেন্ট স্কিলস : স্কিলস হলো নির্দেশাবলী, স্ক্রিপ্ট এবং রিসোর্সের প্যাকেজ, যা বিশেষায়িত কাজের জন্য একটি এআই এজেন্টের সক্ষমতা বাড়িয়ে তোলে। এগুলি আপনাকে প্রাতিষ্ঠানিক মানদণ্ডকে সংহিতাবদ্ধ করতে এবং জটিল ওয়ার্কফ্লো স্বয়ংক্রিয় করতে সাহায্য করে।
ল্যাবের উদ্দেশ্য
এই ল্যাবে, আপনি:
- প্রসঙ্গের অগ্রগতি অনুভব করুন: দেখুন কীভাবে ক্রমবর্ধমান প্রসঙ্গ এআই-এর সমস্যা সমাধানের ক্ষমতাকে উন্নত করে।
- ম্যানুয়াল বনাম এআই ট্রাবলশুটিং: ম্যানুয়াল ডিবাগিংয়ের অসুবিধার সাথে এআই-সহায়তাযুক্ত ওয়ার্কফ্লোর তুলনা করুন।
- পূর্ণ প্রেক্ষাপট ডিবাগিং: সম্পূর্ণ পরিকাঠামো সচেতনতার সাথে অ্যাপ্লিকেশন ডিবাগ করতে GKE MCP সার্ভারের সাথে Gemini CLI ব্যবহার করুন।
- সক্ষমতা বাড়ান: ওয়ার্কফ্লো স্বয়ংক্রিয় করতে কাস্টম স্কিল লিখতে শিখুন।
এলএলএম আউটপুট সম্পর্কিত নোট
এই ল্যাবের প্রকৃতি এবং এলএলএম (LLM) যেভাবে কাজ করে, তার কারণে আপনার প্রাপ্ত আউটপুটগুলো সম্ভবত দেখানো উদাহরণ আউটপুটগুলো থেকে ভিন্ন হবে। জেনারেটিভ এআই-এর ক্ষেত্রে এটি একটি প্রত্যাশিত আচরণ। উদাহরণগুলোর হুবহু টেক্সট বা ফরম্যাটিং নকল করার চেষ্টা না করে, মডেলের দেওয়া ধাপগুলো এবং যুক্তি বোঝার উপর মনোযোগ দিন।
২. প্রকল্প স্থাপন
ল্যাব শুরু করার আগে আপনার পরিবেশ প্রস্তুত করুন। ক্লাউড শেল খুলুন, আপনার প্রজেক্ট নির্বাচন করুন এবং সেটআপ স্ক্রিপ্টগুলো চালান। চলুন শুরু করা যাক!
ওপেন ক্লাউড শেল
এই ল্যাবের জন্য, গুগল ক্লাউড কর্তৃক প্রদত্ত একটি ব্রাউজার-ভিত্তিক টার্মিনাল পরিবেশ, ক্লাউড শেল (Cloud Shell) ব্যবহার করুন। এটি আপনার প্রয়োজনীয় সমস্ত টুলস—যার মধ্যে গুগল ক্লাউড সিএলআই ( gcloud ) , kubectl , এবং Gemini CLI অন্তর্ভুক্ত—সহ পূর্ব-কনফিগার করা অবস্থায় আসে, ফলে আপনার লোকাল মেশিনে এগুলি ইনস্টল করার সময় বেঁচে যায়।
- গুগল ক্লাউড কনসোলে যান।
- Look at the top right header of the console and click the Activate Cloud Shell button (it looks like a terminal prompt
>_). - আপনার ব্রাউজার উইন্ডোর নীচে একটি টার্মিনাল সেশন খুলবে। অনুরোধ করা হলে, ' চালিয়ে যান' (Continue ) এ ক্লিক করুন।
একটি প্রকল্প নির্বাচন করুন
ক্লাউড শেল টার্মিনালে, নিশ্চিত করুন যে আপনি সঠিক প্রজেক্টের অধীনে কাজ করছেন।
- কনসোলে একটি বিদ্যমান প্রজেক্ট নির্বাচন করুন অথবা বিশেষভাবে এই ল্যাবের জন্য একটি নতুন প্রজেক্ট তৈরি করুন।
- আপনার প্রজেক্ট আইডিটি লিখে রাখুন। আপনার বর্তমান শেল-এ প্রজেক্টটি সেট করতে নিম্নলিখিত কমান্ডটি চালান:
gcloud config set project [YOUR_PROJECT_ID]
ল্যাব সেটআপ
এখন, ল্যাবের জন্য পরিবেশ প্রস্তুত করতে এবং বাগগুলো প্রবেশ করাতে সেটআপ স্ক্রিপ্টগুলো চালান।
- রিপোজিটরিটি ক্লোন করুন:
👉💻 শুধুমাত্র ল্যাব ডিরেক্টরিটি ক্লোন করতে নিচের কমান্ডগুলো চালান:git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos ~/devrel-demos cd ~/devrel-demos git sparse-checkout set codelabs/ai-toolkit-lab-1 - ল্যাব ডিরেক্টরিতে যান:
👉💻 দৌড়:cd ~/devrel-demos/codelabs/ai-toolkit-lab-1/ - পরিবেশ ভেরিয়েবল সেট করুন:
👉💻 আপনার প্রজেক্ট ও অঞ্চল সেট করতে নিচের কমান্ডগুলো চালান:export PROJECT_ID=$(gcloud config get-value project) export REGION=us-central1 - সেটআপ স্ক্রিপ্টটি চালান:
এই স্ক্রিপ্টটি নিচে তালিকাভুক্ত API-গুলো সক্রিয় করে, একটি GKE Autopilot ক্লাস্টার তৈরি করে এবং প্রয়োজনীয় টুলগুলো ইনস্টল করা নিশ্চিত করে।
👉💻 রুট ডিরেক্টরি থেকে স্ক্রিপ্টটি চালান: দ্রষ্টব্য: ক্লাস্টার তৈরি হতে ৫-১০ মিনিট সময় লাগতে পারে।./setup.sh - ভাঙা অবস্থাটি প্রারম্ভিক করুন:
আপনার সহকর্মীরা একটি ত্রুটিপূর্ণ পরিবেশ রেখে চলে যাওয়ার পরিস্থিতিটি অনুকরণ করতে,break.shস্ক্রিপ্টটি চালান। এটি ত্রুটিপূর্ণ ম্যানিফেস্টগুলোকে সক্রিয় কোডবেস ডিরেক্টরিতে কপি করে।
👉💻 স্ক্রিপ্টটি চালান:./break.sh - ল্যাব অনুশীলনের জন্য প্রস্তুতি নিন:
এআই যাতে প্রতারণা করতে না পারে (সমাধানগুলো দেখে ফেলতে না পারে), সেজন্য ল্যাবের বাকি অংশের জন্যcymbal-bankডিরেক্টরিতে চলে যান।
👉💻 দৌড়:cd ~/devrel-demos/codelabs/ai-toolkit-lab-1/cymbal-bank
সক্রিয় এপিআই
সেটআপ স্ক্রিপ্টটি বেশ কয়েকটি গুগল ক্লাউড এপিআই সক্রিয় করে। এগুলোর কাজ নিচে দেওয়া হলো:
- container.googleapis.com: গুগল কুবারনেটিস ইঞ্জিন এপিআই। যেকোনো ক্লাস্টার-স্তরের অপারেশনের জন্য এটি প্রয়োজন।
- generativelanguage.googleapis.com: এই এপিআই-এর মাধ্যমে জেমিনি সিএলআই, জেমিনি মডেলগুলোর সাথে যোগাযোগ করতে পারে।
- cloudresourcemanager.googleapis.com: প্রজেক্ট-স্তরের মেটাডেটা পরিদর্শন এবং অনুমতি ব্যবস্থাপনার জন্য এটি প্রয়োজন।
- logging.googleapis.com: সমস্যা সমাধানের জন্য অপরিহার্য, কারণ এটি আপনার কন্টেইনারগুলো থেকে লগ সংগ্রহ ও বিশ্লেষণ করতে দেয়।
৩. পর্যায় ০: ম্যানুয়াল ট্রাবলশুটিং (এআই ছাড়া)
এখন যেহেতু আপনি cymbal-bank ডিরেক্টরিতে আছেন, চলুন ম্যানুয়ালি ত্রুটিগুলো খুঁজে বের করার চেষ্টা করি। এটাই হলো "কঠিন উপায়"। AI-কে কঠিন কাজটি করতে দেওয়ার আগে বেসলাইনটি পরখ করে নিন। ম্যানুয়াল ট্রাবলশুটিং মানে হলো ক্লাস্টারের অবস্থা পরীক্ষা করতে, লগ সংগ্রহ করতে এবং অসঙ্গতি খুঁজে বের করার জন্য YAML ফাইলগুলো পড়তে kubectl মতো সাধারণ টুল ব্যবহার করা। এটি প্রায়শই ধীরগতির, ক্লান্তিকর এবং বিভিন্ন সূত্র মেলাতে দক্ষতার প্রয়োজন হয়। এটি পরবর্তীতে আপনার ব্যবহৃত AI টুলগুলোর জন্য একটি নিখুঁত রেফারেন্স পয়েন্ট হিসেবে কাজ করে।
- ডিপ্লয় করার চেষ্টা করুন: দেখা যাক এই ম্যানিফেস্টগুলো সম্পর্কে Kubernetes কী মনে করে।
👉💻 ম্যানিফেস্টগুলো প্রয়োগ করতে নিম্নলিখিত কমান্ডটি চালান: পডগুলো চালু হতে কয়েক সেকেন্ড সময় লাগতে পারে। 'watch kubectl get pods' কমান্ডটি ব্যবহার করে আপনি সেগুলোর চালু হওয়া পর্যবেক্ষণ করতে পারেন। পডগুলো চালু হয়ে গেলে, ওয়াচ থেকে বের হওয়ার জন্য ctrl+c চাপুন। আপনি তালিকায় দুটি ব্যর্থ পড দেখতে পাবেন:kubectl apply -f kubernetes-manifests/- ফ্রন্টএন্ড পডটিতে একটি "CreateContainerConfigError" দেখাচ্ছে। এই ধরনের ত্রুটি সাধারণত ইঙ্গিত দেয় যে কন্টেইনারটি তার প্রয়োজনীয় কনফিগারেশন লোড করতে সমস্যায় পড়ছে। ভেবে দেখুন একটি কন্টেইনার চালু হওয়ার জন্য কী কী বাহ্যিক রিসোর্সের প্রয়োজন হতে পারে—এমন কোনো এনভায়রনমেন্ট ভেরিয়েবল, সিক্রেট বা কনফিগম্যাপ আছে কি যা ভুলভাবে কনফিগার করা বা অনুপস্থিত? নির্দিষ্ট কারণটি খুঁজে বের করার জন্য আপনাকে পডটির কনফিগারেশন খতিয়ে দেখতে হবে।
- userservice পডটি "ImagePullBackOff" অবস্থায় আছে। যখন আপনি এটি দেখতে পান, এর মানে সাধারণত এই যে, ক্লাস্টারটি যে কন্টেইনার ইমেজটি ব্যবহার করতে বলা হয়েছিল, সেটি পুনরুদ্ধার করতে পারছে না। ইমেজ অনুরোধের বিবরণগুলো বিবেচনা করুন: ইমেজের নাম এবং ট্যাগ কি একদম সঠিক? রেজিস্ট্রিতে কি কোনো সম্ভাব্য অনুমতির সমস্যা আছে? অনুরোধটি কেন ব্যর্থ হচ্ছে তা খুঁজে বের করার জন্য ইমেজটি কোথা থেকে পুল করা হচ্ছে তা খতিয়ে দেখুন।
- ক্ষয়ক্ষতি পরীক্ষা করুন: কী ব্যর্থ হচ্ছে তা দেখতে সাধারণ Kubernetes কমান্ড ব্যবহার করুন।
- 👉💻 পডগুলোর নামসহ তাদের অবস্থা যাচাই করুন:
kubectl get pods- পর্যবেক্ষণ: আপনি
ImagePullBackOff,CrashLoopBackOff,Pending, বাCreateContainerConfigErrorঅবস্থায় পড দেখতে পাবেন। - দ্রষ্টব্য: একটি পড '
Runningঅবস্থায় থাকলেই যে সেটি সঠিকভাবে কাজ করছে, এমনটা জরুরি নয়। উদাহরণস্বরূপ, এতে পর্যাপ্ত হেলথ প্রোব (লাইভনেস/রেডিনেস) নাও থাকতে পারে, যার ফলে ভেতরের অ্যাপ্লিকেশনটি ফেইল করলেও এটিকে 'running' হিসেবে চিহ্নিত করা হয়। আপাতদৃষ্টিতে পডটি চলমান মনে হলেও লগ আমাদের বিভিন্ন ত্রুটি দেখাতে পারে। সব মিলিয়ে সমাধান করার জন্য ১১টি ভিন্ন ধরনের ত্রুটি রয়েছে।
- পর্যবেক্ষণ: আপনি
- 👉💻 ইভেন্টগুলো দেখতে ব্যর্থ হওয়া পডটির বর্ণনা দিন (
[POD_NAME]এর জায়গায় আসল পডের নামটি বসান):kubectl describe pod [POD_NAME] - 👉💻 অ্যাপ্লিকেশন ত্রুটি দেখতে ব্যর্থ হওয়া পডের লগগুলি পরীক্ষা করুন:
kubectl logs [POD_NAME]
- 👉💻 পডগুলোর নামসহ তাদের অবস্থা যাচাই করুন:

- অনুসন্ধানমূলক কাজ: ক্লাউড শেল এডিটর ব্যবহার করে অথবা টার্মিনালে
catদিয়েkubernetes-manifests/থাকা ম্যানিফেস্টগুলো খুলুন। লগ এবং ইভেন্টগুলোতে দেখা ত্রুটিগুলোর সাথে YAML ফাইলগুলোর কনফিগারেশনের মিল খুঁজে বের করার চেষ্টা করুন। চ্যালেঞ্জ: ম্যানুয়ালি শুধুমাত্র একটি ত্রুটি ঠিক করার চেষ্টা করুন। লক্ষ্য করুন, ব্যর্থতার বাকি ধারাটি বোঝার জন্য আপনাকে কীভাবে বিভিন্ন ফাইলের মধ্যে আসা-যাওয়া করতে হচ্ছে।
৪. পর্যায় ১: ওয়েবকে জিজ্ঞাসা করা (জেমিনি ওয়েব ইউআই)
যেহেতু ম্যানুয়াল ট্রাবলশুটিং ধীরগতির, তাই চলুন একটি এআই অ্যাসিস্ট্যান্ট ব্যবহার করে দেখি। জেমিনি ওয়েব অ্যাপ্লিকেশনটি একটি শক্তিশালী সাধারণ চ্যাট ইন্টারফেস। এটি ধারণা ব্যাখ্যা করতে এবং কোড স্নিপেট তৈরি করতে পারদর্শী। তবে, এটি আপনার নির্দিষ্ট পরিবেশের কোনো প্রেক্ষাপট ছাড়াই কাজ করে। এটি আপনার ফাইল দেখতে, আপনার ক্লাস্টার পরিদর্শন করতে বা কমান্ড চালাতে পারে না। আপনাকে অবশ্যই ম্যানুয়ালি এরর মেসেজ এবং ফাইলের বিষয়বস্তু কপি ও পেস্ট করতে হবে।

- জেমিনিতে যান: একটি নতুন ট্যাবে gemini.google.com খুলুন। আপনাকে আপনার নিজের গুগল অ্যাকাউন্ট দিয়ে সাইন ইন করতে হবে।
- একটি নির্দিষ্ট ত্রুটির জন্য সাহায্য চান: ধরুন, আপনি
userserviceপড-এImagePullBackOffত্রুটিটি দেখতে পাচ্ছেন।
👉💬 জেমিনি ওয়েব UI-তে এই প্রম্পটটি প্রবেশ করান:
My Kubernetes deployment for 'userservice' is failing with ImagePullBackOff. Here is the image name: us-central1-docker.pkg.dev/bank-of-anthos-ci/bank-of-anthos/user-service:v0.6.9. What is wrong? - এআই-এর প্রতিক্রিয়া: জেমিনি আপনাকে সাধারণ কারণগুলোর একটি তালিকা দেয়:
- ছবিটি বিদ্যমান নেই।
- এটি টানার অনুমতি আপনার নেই।
- মুদ্রণপ্রমাদে একটি ভুল আছে।
userservice(হাইফেন ছাড়া)।
এখানে মূল সমস্যাটি হলো, জেমিনির আপনার স্থানীয় পরিবেশ সম্পর্কে কোনো ধারণা নেই। এর প্রয়োজনীয় তথ্য পেতে, আপনাকে ম্যানুয়ালি তা সরবরাহ করতে হবে (প্রম্পট করে এবং টেক্সট কপি-পেস্ট করে), যা সময়সাপেক্ষ এবং ভুলের সম্ভাবনা বেশি।
৫. পর্যায় ২: টার্মিনাল পাওয়ার (জেমিনি সিএলআই)
এখন Gemini CLI ব্যবহার করে টার্মিনালে যান। Gemini CLI, Gemini মডেলের ক্ষমতা সরাসরি আপনার টার্মিনালে নিয়ে আসে। CLI সেখানেই থাকে যেখানে আপনি কাজ করেন। এটি লোকাল ফাইল পড়তে পারে, পাইপড ইনপুট গ্রহণ করতে পারে এবং এমনকি আপনার হয়ে (আপনার অনুমোদন সাপেক্ষে) শেল কমান্ডও চালাতে পারে। এটি কনটেক্সট সুইচিং ছাড়াই আপনার ওয়ার্কফ্লোতে AI যুক্ত করার জন্য এটিকে অত্যন্ত উপযোগী করে তোলে। আরও বিস্তারিত তথ্য এবং উন্নত ব্যবহারের জন্য, অফিসিয়াল Gemini CLI ডকুমেন্টেশন দেখুন।
দ্রষ্টব্য: বর্তমানে, Antigravity CLI আনুষ্ঠানিকভাবে প্রকাশিত হয়েছে এবং এটি Gemini CLI-এর উত্তরসূরি। এই ল্যাবটি Gemini CLI ব্যবহার করে চলেছে। Antigravity CLI সম্পর্কে আরও বিস্তারিত জানতে, এর অফিসিয়াল ডকুমেন্টেশন দেখুন।
প্রেক্ষাপট এবং দৃশ্যমানতা
নির্দেশাবলীতে যাওয়ার আগে, মনে রাখবেন যে Gemini CLI আপনার প্রোজেক্টের কতটা অংশ দেখতে পাবে তা নির্ভর করে আপনি এটি কোথা থেকে চালু করছেন তার উপর। মডেলটি আপনার বর্তমান ওয়ার্কিং ডিরেক্টরির সাপেক্ষে ফাইল এবং ফোল্ডার দেখতে পারে। আপনি যদি এটি আপনার প্রোজেক্টের রুট থেকে চালান, তবে এটি সেই প্রোজেক্টের সমস্ত ফাইল অ্যাক্সেস করতে পারবে। আপনি যদি এটি কোনো সাবডিরেক্টরি থেকে চালান, তবে এর দেখার সুযোগ শুধুমাত্র সেই সাবডিরেক্টরি এবং তার অধীনস্থ ডিরেক্টরিগুলোর মধ্যেই সীমাবদ্ধ থাকবে। মডেলকে ফাইল বিশ্লেষণ বা পরিবর্তন করতে বলার আগে সর্বদা নিশ্চিত করুন যে আপনি সঠিক ডিরেক্টরিতে আছেন!
জেমিনি সিএলআই শুরু হচ্ছে
ক্লাউড শেলে ডিফল্টভাবে জেমিনি সিএলআই অন্তর্ভুক্ত থাকে। আপনার লোকাল ফাইলগুলোর সাথে এটি ব্যবহার শুরু করতে কেবল এটি চালু করুন।
- সিম্বাল ব্যাংক ডিরেক্টরিতে যান:
👉💻 আপনি সঠিক ডিরেক্টরিতে আছেন কিনা তা নিশ্চিত করতে নিম্নলিখিত কমান্ডটি চালান:cd ~/devrel-demos/codelabs/ai-toolkit-lab-1/cymbal-bank - জেমিনি সিএলআই শুরু করুন:
👉💻 Gemini CLI চালু করতে নিচের কমান্ডটি চালান:gemini

জেমিনি সিএলআই ব্যবহার করে
এই অ্যাপ্লিকেশনটি সম্পর্কে আপনি শুধু এটুকুই জানেন যে এর কোড কোথায় পাওয়া যাবে এবং এটি কাজ করছে না। চলুন আরও বিস্তারিত জেনে নিই এবং দেখি জেমিনি কীভাবে আপনাকে অ্যাপ্লিকেশনটি ঠিক করতে সাহায্য করতে পারে। প্রথমে, অ্যাপ্লিকেশন ফাইলগুলো সম্পর্কে একটি প্রশ্ন করে এর কনটেক্সট অন্বেষণ করার ক্ষমতা পরীক্ষা করে দেখুন।
- কোডবেসটি অন্বেষণ করুন: এই অ্যাপ্লিকেশনটি কী এবং এটি কী কাজ করে, তা ব্যাখ্যা করতে জেমিনিকে জিজ্ঞাসা করুন।
👉💬 Gemini CLI-তে এই প্রম্পটটি প্রবেশ করান:
What is this application and what does it do?
Gemini CLI বর্তমান ডিরেক্টরিতে থাকা ফাইলগুলো পড়ে এবং প্রজেক্টটির একটি সার্বিক চিত্র প্রদান করে। - কোডবেসে কোনো সমস্যা খুঁজে বের করার চেষ্টা করুন: যেহেতু Gemini CLI আপনার ফাইলগুলো দেখতে পায়, তাই এটিকে কোনো অমিল খুঁজে বের করতে বলুন।
👉💬 Gemini CLI-তে এই প্রম্পটটি প্রবেশ করান:
The contacts service pod is running, but I can't reach the service. Review kubernetes-manifests/contacts.yaml and check for common issues
Gemini CLI ফাইলগুলো পড়েapp: contacts-backendএবংapp: contactsমধ্যেকার অমিলটি খুঁজে বের করে। পূর্ববর্তী পর্যায়গুলোর তুলনায় এটি একটি বিরাট সাফল্য। - এটাকে ঠিক করতে বলুন:
👉💬 Gemini CLI-তে এই প্রম্পটটি প্রবেশ করান:
Fix the label mismatch in contacts.yaml so the service matches the deployment.
Gemini CLI আপনাকে সংশোধিত YAML দেখায়, অথবা আপনি কমান্ডটি অনুমোদন করলে পরিবর্তনটি প্রয়োগও করে দেয়। - সীমাবদ্ধতা হলো: এটি ফাইলগুলো দেখতে পেলেও, আপনার ক্লাস্টারে আসলে কী চলছে তা এটি জানে না। যদি স্ট্যাটিক YAML-এ স্পষ্ট নয় এমন কোনো রানটাইম ত্রুটির কারণে একটি পড ব্যর্থ হয়, তবে লগ বা ক্লাস্টারের অবস্থা ছাড়া এটি সাহায্য করতে পারে না।
দ্রষ্টব্য: কমান্ড চালানোর সময় বা ফাইল পরিবর্তন করার সময় Gemini CLI আপনার অনুমতি চাইবে। এটি নিশ্চিত করে যে আপনি আপনার পরিবেশের উপর নিয়ন্ত্রণ বজায় রাখতে পারেন। যখন আপনি নীচের মতো একটি প্রম্পট দেখতে পাবেন, তখন প্রতিটি কাজের অনুরোধের জন্য "১. একবারের জন্য অনুমতি দিন" (1. Allow once) উত্তর দিতে আপনি "এন্টার" (enter) চাপতে পারেন। এছাড়াও আপনি ডাউন অ্যারো কী (down arrow key) চেপে এন্টার (enter) চাপলে "২. এই সেশনের জন্য অনুমতি দিন" (2. Allow for this session) নির্বাচন করতে পারেন, যার ফলে এই কথোপকথন চলাকালীন Gemini CLI আপনার অনুমতি না চেয়েই সর্বদা স্বাধীনভাবে সেই কাজটি করবে। তবে, আপনি যদি Gemini CLI বন্ধ করে আবার খোলেন, তাহলে এটির আর সেই অনুমতি থাকবে না এবং যেকোনো কাজ করার আগে এটি আবার আপনার অনুমতি চাইবে।

দ্রষ্টব্য: যদি আপনি আটকে যান, বা প্রথম থেকে আবার চেষ্টা করতে চান, তাহলে cymbal-bank ডিরেক্টরি থেকে ../break.sh চালিয়ে যেকোনো সময় Kubernetes ম্যানিফেস্টগুলিকে তাদের প্রাথমিক ত্রুটিপূর্ণ অবস্থায় রিসেট করতে পারেন।
দ্রষ্টব্য: যদি ব্যবহারের সীমায় পৌঁছে যান, তাহলে "Stop" নির্বাচন করুন এবং তারপর /model কমান্ডটি চালান। এর মাধ্যমে আপনি দেখতে পারবেন কোন মডেলগুলোর সীমা শেষ হয়ে গেছে এবং gemini-2.5-flash-lite-এর মতো অন্য কোনো মডেলে পরিবর্তন করতে পারবেন। এরপর নতুন মডেলটি ব্যবহার করে ল্যাবের কাজ চালিয়ে যাওয়ার জন্য মডেলটিকে "continue" কমান্ডটি দিন।
৬. পর্যায় ৩: পূর্ণাঙ্গ কনটেক্সট ডিবাগিং (Gemini CLI + GKE MCP)
যদিও ফেজ ২ দেখিয়েছিল যে আপনার ফাইলগুলো দেখতে পেলে এআই কতটা শক্তিশালী হতে পারে, তবে এটি বেশ গোলমেলে ছিল। আপনাকে প্রতিটি ফাইল পড়া এবং টুলের প্রতিটি কাজ ম্যানুয়ালি অনুমোদন করতে হতো, যা একটি জটিল ডিবাগ সেশনের সময় উল্লেখযোগ্য প্রতিবন্ধকতা তৈরি করত। এই সমস্যা সমাধানের জন্য ফেজ ৩-এ GKE MCP সার্ভার চালু করা হয়েছে, যা এআই-কে সরাসরি 'ইনফ্রাস্ট্রাকচার অ্যাওয়ারনেস' বা পরিকাঠামোগত সচেতনতা প্রদান করে। এর ফলে জেমিনি কম ম্যানুয়াল হস্তক্ষেপের মাধ্যমে লগ, ইভেন্ট এবং মেটাডেটা ট্রাবলশুট করতে পারে, যা একটি আরও স্বয়ংক্রিয় এবং সুসংহত ট্রাবলশুটিং প্রক্রিয়া তৈরি করে।
এমসিপি কী?
এমসিপি (MCP) বোঝার জন্য, প্রথমে এআই (AI) জগতের টুলস -এর ধারণাটি বোঝা সহায়ক। একটি টুল মূলত একটি বাহ্যিক ফাংশন বা অ্যাপ্লিকেশন যা একটি এলএলএম (LLM) এমন সব কাজ সম্পাদন করতে বা ডেটা সংগ্রহ করতে ব্যবহার করতে পারে, যা অন্যথায় তার পক্ষে অ্যাক্সেস করা সম্ভব হতো না—যেমন আবহাওয়া পরীক্ষা করা, একটি নির্দিষ্ট স্ক্রিপ্ট চালানো, বা একটি ডাটাবেস থেকে তথ্য সংগ্রহ করা। যদিও স্বতন্ত্র টুলগুলো শক্তিশালী, বিভিন্ন এআই এজেন্ট এবং পরিবেশের মধ্যে সেগুলোকে নিরাপদে ও সামঞ্জস্যপূর্ণভাবে শেয়ার করা সবসময়ই একটি চ্যালেঞ্জ ছিল। এমসিপি একটি প্রমিত প্ল্যাটফর্ম হিসেবে কাজ করে এই সমস্যার সমাধান করে, যা এই টুলগুলোকে হোস্ট করতে এবং যেকোনো সামঞ্জস্যপূর্ণ এআই ক্লায়েন্টের কাছে উন্মুক্ত করতে পারে।
মডেল কনটেক্সট প্রোটোকল (MCP) একটি ওপেন-সোর্স প্রোটোকল যা এআই মডেলগুলোকে নিরাপদে বাহ্যিক ডেটা উৎস এবং টুল অ্যাক্সেস করতে সক্ষম করে। প্রতিটি নির্দিষ্ট টুল বা ডেটাবেসের জন্য ইন্টিগ্রেশন হার্ডকোড করার পরিবর্তে, MCP মডেলগুলোকে তাদের পরিবেশের সাথে মিথস্ক্রিয়া করার জন্য একটি প্রমিত উপায় প্রদান করে।
Gemini CLI-এর ভিতরে /mcp রান করে আপনি সেখানে উপলব্ধ টুলগুলো দেখতে পারেন।
এই ল্যাবে, GKE MCP সার্ভার Gemini CLI-কে আপনার GKE ক্লাস্টারের সাথে সরাসরি যোগাযোগ করার সুযোগ দেয়, যার ফলে এটি ক্লাস্টারের লাইভ অবস্থা সম্পর্কে সম্পূর্ণ অবগত থেকে রিসোর্স পরিদর্শন করতে, লগ পড়তে এবং সমস্যা ডিবাগ করতে সাহায্য করে। এটি AI-কে একটি স্ট্যাটিক কোড অ্যানালাইজার থেকে এমন একটি সক্রিয় ট্রাবলশুটিং অ্যাসিস্ট্যান্টে রূপান্তরিত করে, যা আপনার ইনফ্রাস্ট্রাকচারের লাইভ অবস্থা বুঝতে পারে।
GKE MCP এক্সটেনশন কনফিগার করুন
ডিফল্টরূপে, Gemini CLI একটি সাধারণ-উদ্দেশ্যমূলক টুল। একটি কনফিগারেশন ফাইল তৈরি করে GKE MCP সার্ভারটি কনফিগার করুন।
- 👉💻 প্রথমে, আপনি যদি এখনও Gemini CLI-তে থাকেন, তাহলে
/quitটাইপ করে সেখান থেকে বেরিয়ে আসুন। - 👉💻 এক্সটেনশন ডিরেক্টরি তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:
mkdir -p ~/.gemini/extensions/gke - 👉💻 কনফিগারেশন ফাইল তৈরি করতে নিচের কমান্ডটি চালান। এই কমান্ডটি স্বয়ংক্রিয়ভাবে আপনার
PROJECT_IDফাইলটিতে যুক্ত করে দেবে:cat << EOF > ~/.gemini/extensions/gke/gemini-extension.json { "name": "gke", "version": "1.0.0", "mcpServers": { "container": { "httpUrl": "https://container.googleapis.com/mcp", "authProviderType": "google_credentials", "oauth": { "scopes": ["https://www.googleapis.com/auth/container"] }, "timeout": 30000, "headers": { "x-goog-user-project": "$PROJECT_ID" } } } } EOF - 👉💻 Gemini CLI চালু করুন:
gemini - Gemini CLI-এর ভিতরে
/mcpটাইপ করে MCP সার্ভারটি সক্রিয় আছে কিনা তা যাচাই করুন।
ক্লাস্টার স্টেট ব্যবহার করে ডিবাগ করতে জেমিনিকে বলুন
- ব্যর্থ হওয়া ডেপ্লয়মেন্ট ডিবাগ করুন: এবার, জেমিনিকে ক্লাস্টারটি পরিদর্শন করতে এবং তার প্রাপ্ত তথ্যের ভিত্তিতে ম্যানিফেস্টগুলো সংশোধন করতে বলুন।
👉💬 Gemini CLI-তে এই প্রম্পটটি প্রবেশ করান:
The frontend deployment is failing. Can you use your tools to check the logs and events of the pods, and then fix it?
জেমিনি নেপথ্যেkubectlকমান্ড কল করার জন্য MCP টুল ব্যবহার করে। এটিImagePullBackOffত্রুটিটি শনাক্ত করে, এর কারণ ব্যাখ্যা করে এবং সঠিক সমাধানের পরামর্শ দেয়। - জটিল সমস্যা সমাধান করুন: অ্যাপ্লিকেশন-স্তরের ত্রুটির জন্য লগ পরীক্ষা করতে বলুন।
👉💬 Gemini CLI-তে এই প্রম্পটটি প্রবেশ করান:
Check the logs for the 'contacts' pod. Why is it failing to connect to the database?
এটি 'কানেকশন রিফিউজড' ত্রুটিটি দেখতে পায় এবং এর কারণ হিসেবেconfig.yamlএ থাকা পোর্ট বা সার্ভিসের নামের অমিলকে চিহ্নিত করে! - পুনরাবৃত্তি করুন: ফেজ ০-তে খুঁজে পাওয়া অন্যান্য সমস্যাগুলো সমাধান করার জন্য জেমিনিকে বলতে থাকুন।
👉💬 Gemini CLI-তে এই প্রম্পটটি প্রবেশ করান:
Check if the service 'contacts' is correctly routing traffic to its pods
👉💬 Gemini CLI-তে এই প্রম্পটটি প্রবেশ করান:
Are there any pods failing due to resource limits?
দ্রষ্টব্য: যদি আপনি আটকে যান, বা প্রথম থেকে আবার চেষ্টা করতে চান, তাহলে cymbal-bank ডিরেক্টরি থেকে ../break.sh চালিয়ে যেকোনো সময় Kubernetes ম্যানিফেস্টগুলিকে তাদের প্রাথমিক ত্রুটিপূর্ণ অবস্থায় রিসেট করতে পারেন।
৭. পর্যায় ৪: দলকে শক্তিশালীকরণ (এজেন্ট দক্ষতা)
অবশেষে, কাস্টম এজেন্ট স্কিল তৈরি করে আপনার নির্দিষ্ট প্রয়োজন অনুসারে এআই-এর সক্ষমতা বাড়িয়ে নিন।
এজেন্ট দক্ষতা বলতে কী বোঝায়?
এজেন্ট স্কিল হলো নির্দেশাবলী, স্ক্রিপ্ট এবং রিসোর্সের প্যাকেজ, যা একটি এআই এজেন্টকে বিশেষায়িত কাজের জন্য আরও উন্নত করে তোলে। এগুলি আপনাকে প্রাতিষ্ঠানিক মানদণ্ডকে বিধিবদ্ধ করতে এবং জটিল কর্মপ্রবাহকে স্বয়ংক্রিয় করতে সাহায্য করে। একটি স্কিল একটি নির্দিষ্ট ডিরেক্টরিতে থাকে এবং এতে একটি SKILL.md ফাইল থাকে যা এর আচরণ নির্ধারণ করে। স্কিল তৈরি করার মাধ্যমে, আপনি নিশ্চিত করেন যে এআই কোনো তাৎক্ষণিক সিদ্ধান্ত না নিয়ে একটি সামঞ্জস্যপূর্ণ ও পুনরাবৃত্তিযোগ্য প্রক্রিয়া অনুসরণ করে।
একটি সাধারণ স্কিল ডিরেক্টরি দেখতে এইরকম হয়:
my-skill/
├── SKILL.md # Main instruction file (Required)
├── scripts/ # Helper scripts (Optional)
└── resources/ # Templates or data files (Optional)
কুবারনেটিস ট্রাবলশুটিং দক্ষতা তৈরি করা
এই ফাইলগুলি ম্যানুয়ালি তৈরি করার পরিবর্তে, জেমিনি সিএলআই স্বাভাবিক ভাষা ব্যবহার করে দক্ষতা বিকাশের একটি শক্তিশালী উপায় প্রদান করে।
ধরুন, আপনি এইমাত্র সম্পন্ন করা ধাপগুলো স্বয়ংক্রিয় করতে k8s-troubleshooter নামে একটি স্কিল তৈরি করতে চান।
- নির্দেশনার মাধ্যমে দক্ষতাটি তৈরি করুন: আপনি আজ যা শিখেছেন তার উপর ভিত্তি করে, আপনার জন্য দক্ষতাটি তৈরি করতে Gemini CLI-কে বলতে পারেন।
👉💬 Gemini CLI-তে এই প্রম্পটটি প্রবেশ করান:
Create a new skill called 'k8s-troubleshooter' that helps diagnose issues with Kubernetes manifests and cluster state. It should be able to analyze pod logs, events, and resource descriptions to identify common deployment problems and configuration errors.
কোনো টুল কল করা বা কোনো অ্যাকশন সম্পাদন করার মতোই, Gemini CLI আপনাকে জানিয়ে দেবে যে আপনার প্রম্পট তার "skill-creator" স্কিলটি সক্রিয় করেছে। এটি Gemini CLI-তে আগে থেকে কনফিগার করা একটি স্কিল, যা Gemini-কে এজেন্ট স্কিল তৈরি করতে সক্ষম করে।
স্কিলস ডিরেক্টরি তৈরি করার জন্য জেমিনি আপনার অনুমতি চাইবে। " ১. একবার অনুমতি দিন " নির্বাচন করে অনুমোদন করুন।
মিথুন রাশি স্বয়ংক্রিয়ভাবে:-
~/.gemini/skills/k8s-troubleshooter/একটি ডিরেক্টরি তৈরি করে। - আপনার দেওয়া নির্দেশনার উপর ভিত্তি করে নির্দেশনাসহ একটি
SKILL.mdফাইল তৈরি করে। - স্ট্যান্ডার্ড রিসোর্স ডিরেক্টরি তৈরি করে।
-
- জেমিনি সিএলআই পুনরায় চালু করুন:
👉💻 Gemini CLI বন্ধ করুন (/quit), তারপর এটি পুনরায় চালু করুন:gemini - দক্ষতাটি লোড হয়েছে কিনা যাচাই করুন:
👉💻 Gemini CLI-এর ভিতরে/skillsটাইপ করে স্কিলটি সক্রিয় আছে কিনা তা যাচাই করুন। তালিকায় আপনিk8s-troubleshooterদেখতে পাবেন। - বাস্তবে এটি যেভাবে কাজ করে: এখন, দক্ষতাটি প্রয়োগ করুন:
👉💬 Gemini CLI-তে এই প্রম্পটটি প্রবেশ করান:
Use the k8s-troubleshooter skill to find out why the contacts service is failing.
এআই তাৎক্ষণিক কোনো সিদ্ধান্ত না নিয়েSKILL.mdএ থাকা কাঠামোগত পরিকল্পনা অনুসরণ করে, যার ফলে আরও ধারাবাহিক ফলাফল পাওয়া যায়।
অনুশীলন: আপনার নিজের দক্ষতা সম্পর্কে ধারণা তৈরি করুন।
আপনার দৈনন্দিন কাজের ধারা নিয়ে ভাবুন। কোন পুনরাবৃত্তিমূলক কাজটি আপনি একটি স্কিলের মাধ্যমে স্বয়ংক্রিয় করতে পারেন?
- ধারণা: ডেপ্লয়মেন্টের আগে নিরাপত্তা সংক্রান্ত সর্বোত্তম অনুশীলন নিশ্চিত করতে ম্যানিফেস্ট নিরীক্ষা করার একটি দক্ষতা।
- ধারণা: ওয়ার্কলোড টাইপের উপর ভিত্তি করে জটিল GKE ক্লাস্টার কনফিগারেশন তৈরি করার একটি দক্ষতা।
৮. উপসংহার
এই ল্যাবটি এআই কনটেক্সটের বিভিন্ন স্তরের মধ্য দিয়ে অগ্রসর হওয়ার মাধ্যমে ক্লাউড ইনফ্রাস্ট্রাকচারের সাথে ইন্টারঅ্যাক্ট করার একটি নতুন পদ্ধতি প্রদর্শন করে। জিরো কনটেক্সট থেকে সম্পূর্ণ ইনফ্রাস্ট্রাকচার কনটেক্সটে (Gemini CLI + GKE MCP) যাওয়ার মাধ্যমে আপনি দেখতে পাবেন, আপনার ফাইল এবং ক্লাস্টারের অবস্থা দেখতে পেলে একটি এআই অ্যাসিস্ট্যান্ট কতটা বেশি কার্যকর হয়ে ওঠে।
ল্যাব সারাংশ
- প্রসঙ্গ গুরুত্বপূর্ণ: আপনি দেখতেই পাচ্ছেন, কোনো প্রসঙ্গ ছাড়া এআই টুলগুলো কীভাবে কোডবেসের নির্দিষ্ট সমস্যা সমাধানে সাহায্য করতে পারে না।
- টার্মিনাল প্রসঙ্গ: আপনি সরাসরি আপনার ওয়ার্কস্পেস থেকে স্থানীয় ফাইল বিশ্লেষণ করতে এবং কনফিগারেশন ত্রুটি শনাক্ত করতে Gemini CLI ব্যবহার করেন।
- সম্পূর্ণ প্রেক্ষাপট ডিবাগিং: আপনি MCP-এর সাথে Gemini CLI ব্যবহার করে AI-কে কোডবেস ফাইলগুলিকে লাইভ ক্লাস্টার অবস্থার সাথে সম্পর্কযুক্ত করার মাধ্যমে জটিল সমস্যা নির্ণয় ও সমাধান করতে দেন।
- সম্প্রসারণযোগ্যতা: আপনি দক্ষতা সম্পর্কে এবং প্রাতিষ্ঠানিক জ্ঞানকে সংহিতাবদ্ধ করতে কীভাবে সেগুলি ব্যবহার করতে হয় সে সম্পর্কে শিখবেন।
পরিষ্কার-পরিচ্ছন্নতা
চলমান চার্জ এড়াতে, টিয়ারডাউন স্ক্রিপ্টটি চালান। উল্লেখ্য যে, আপনি যদি কুইকল্যাবস-এ ল্যাবটি চালান, তবে এই ধাপটি প্রয়োজনীয় নয়।
👉💻 ওয়ার্কশপের ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডটি চালান:
cd ~/devrel-demos/codelabs/ai-toolkit-lab-1/
./teardown.sh
পরবর্তী পদক্ষেপ
আরও পড়ার জন্য এখানে কিছু সুপারিশ দেওয়া হলো:
- জেমিনি সিএলআই ডকুমেন্টেশন : জেমিনি সিএলআই-এর আনুষ্ঠানিক ডকুমেন্টেশন।
- GKE ডকুমেন্টেশন : সকল GKE ডকুমেন্টেশনের ল্যান্ডিং পেজ।
- গুগল ক্লাউডে প্ল্যাটফর্ম ইঞ্জিনিয়ারিং : গুগল ক্লাউডে প্ল্যাটফর্ম ইঞ্জিনিয়ারিং করার পদ্ধতি বিষয়ক নির্দেশিকা।
- GKE-তে AI ও মেশিন লার্নিং : GKE-তে AI/ML ওয়ার্কলোড চালানোর ডকুমেন্টেশন।
- গুগল ক্লাউড আর্কিটেকচার সেন্টার : গুগল ক্লাউডে ওয়ার্কলোড তৈরির জন্য নির্দেশিকা এবং সর্বোত্তম অনুশীলন।
৯. পরিশিষ্ট: ম্যানিফেস্টের ত্রুটির সমাধান
যদি আপনি আটকে যান বা ত্রুটিগুলি যাচাই করতে চান, তাহলে এখানে manifests-broken/ ডিরেক্টরিতে সৃষ্ট সমস্যাগুলির তালিকা এবং সেগুলি সমাধানের উপায় দেওয়া হলো:
-
config.yamlএ ত্রুটিপূর্ণ URL :- ত্রুটি:
TRANSACTIONS_API_ADDR: "ledgerwriter::8080"(ডাবল কোলন)। - কারণ: অ্যাপ্লিকেশনটি ঠিকানাটি পার্স করতে ব্যর্থ হয়, যার ফলে সংযোগে ত্রুটি দেখা দেয়।
- সমাধান: এটিকে আবার
"ledgerwriter:8080"এ পরিবর্তন করুন।
- ত্রুটি:
-
contacts.yamlএ লেবেলের অমিল :- ত্রুটি: সার্ভিস সিলেক্টর `
contactsএর পরিবর্তেapp: contacts-backendএ সেট করা হয়েছে। - কারণ: সার্ভিসটি পডগুলো খুঁজে পাচ্ছে না (যেগুলোতে এখনও
app: contactsরয়েছে), তাই ট্র্যাফিক রাউট করা হবে না। - সমাধান: সিলেক্টরটি পরিবর্তন করে
app: contacts।
- ত্রুটি: সার্ভিস সিলেক্টর `
-
userservice.yamlএ পোর্ট অমিল :- ত্রুটি: সার্ভিসের
targetPort8080এর পরিবর্তে8081এ সেট করা হয়েছে। - কারণ: সার্ভিসে পাঠানো ট্র্যাফিক ভুল কন্টেইনার পোর্টে ফরোয়ার্ড করা হবে, যার ফলে সংযোগ প্রত্যাখ্যান হবে।
- সমাধান:
targetPortপুনরায়8080তে পরিবর্তন করুন।
- ত্রুটি: সার্ভিসের
-
config.yamlএ পরিষেবার নাম অমিল :- ত্রুটি:
BALANCES_API_ADDR: "balance-reader:8080"(balancereaderএর পরিবর্তে)। - কারণ: সার্ভিসটির নাম
balancereaderহওয়ায় হোস্টনেমটি DNS-এ রিজলভ হচ্ছে না। - সমাধান: এটিকে আবার
"balancereader:8080"এ পরিবর্তন করুন।
- ত্রুটি:
-
contacts.yamlএ ইমেজ পুল পলিসি :- ত্রুটি:
imagePullPolicy: Never. - কারণ: K8s রেজিস্ট্রি থেকে ইমেজটি পুল করবে না, কারণ এটি লোকাল বলে ধরে নেয়। এটি
ErrImagePullসাথে ব্যর্থ হবে। - সমাধান: লাইনটি মুছে ফেলুন অথবা এটিকে
IfNotPresentএ সেট করুন।
- ত্রুটি:
-
userservice.yamlএ প্রস্তুতি যাচাই ব্যর্থতা :- ত্রুটি: পাথ
/readyএর পরিবর্তে/healthzএ পরিবর্তিত হয়েছে। - কারণ: কন্টেইনারটি
/healthzসরবরাহ করে না, তাই প্রোবটি ব্যর্থ হয় এবং পডটিকে কখনও প্রস্তুত হিসাবে চিহ্নিত করা হয় না। - সমাধান: পাথটি আবার
/readyতে পরিবর্তন করুন।
- ত্রুটি: পাথ
-
contacts.yamlএ সম্পদের সীমাবদ্ধতা :- ত্রুটি: মেমরি সীমা
128Miএর পরিবর্তে10Miতে সেট করা হয়েছে। - কারণ: অ্যাপটি চালু হওয়ার জন্য আরও মেমরির প্রয়োজন হওয়ায় এটি OOMKilled হচ্ছে।
- সমাধান: মেমরি সীমা পুনরুদ্ধার করুন।
- ত্রুটি: মেমরি সীমা
-
frontend.yamlএ পরিবেশ ভেরিয়েবল অনুপস্থিত :- ত্রুটি:
REGISTERED_OAUTH_CLIENT_IDএনভায়রনমেন্ট ভেরিয়েবলটি মুছে ফেলা হয়েছে। - কারণ: প্রত্যাশিত এনভায়রনমেন্ট ভেরিয়েবল অনুপস্থিত থাকলে অ্যাপটি ব্যর্থ হতে পারে বা এর ফিচারগুলো নিষ্ক্রিয় হয়ে যেতে পারে।
- সমাধান: এনভায়রনমেন্ট ভেরিয়েবলের সংজ্ঞা পুনরুদ্ধার করুন।
- ত্রুটি:
-
frontend.yamlএ ConfigMap কী-এর অমিল :- ত্রুটি:
key: DEMO_USERDEMO_LOGIN_USERNAMEএর পরিবর্তে DEMO_USER। - কারণ: K8s কনফিগম্যাপে কী-টি খুঁজে পাচ্ছে না, যার ফলে কন্টেইনারটি চালু হতে ব্যর্থ হচ্ছে।
- সমাধান: কী-টি আবার
DEMO_LOGIN_USERNAMEএ পরিবর্তন করুন।
- ত্রুটি:
-
userservice.yamlএ ছবির নামে টাইপো :- ত্রুটি:
userserviceএর পরিবর্তেuser-serviceকরা হয়েছে। - কারণ: ইমেজটি রেজিস্ট্রি-তে বিদ্যমান না থাকায়
ImagePullBackOffঘটছে। - সংশোধন: ছবির নামটি ঠিক করুন।
- ত্রুটি:
-
contacts.yamlএ পরিষেবা অ্যাকাউন্ট সংক্রান্ত সমস্যা :- ত্রুটি:
bank-of-anthos-saএর পরিবর্তেbank-of-anthos. - কারণ: সার্ভিস অ্যাকাউন্টটি বিদ্যমান নেই অথবা এর প্রয়োজনীয় অনুমতি নেই।
- সমাধান: সঠিক সার্ভিস অ্যাকাউন্ট নামটি ব্যবহার করুন।
- ত্রুটি: