কোডল্যাব - কুবেক্টল-এআই এর সাথে কুবারনেটস পরিচালনা করা, একটি এআই চালিত কুবারনেটস সহকারী

১. ভূমিকা

kubectl-ai হলো একটি এআই-চালিত বুদ্ধিমান ইন্টারফেস যা ব্যবহারকারীর অভিপ্রায়কে সুনির্দিষ্ট Kubernetes অপারেশনে রূপান্তরিত করে, ফলে Kubernetes ব্যবস্থাপনা আরও সহজলভ্য ও কার্যকর হয়ে ওঠে।

d62a763b2dba5ba7.png

আপনি যা করবেন

  • আপনি একটি GKE ক্লাস্টার পরিচালনা করার জন্য kubectl-ai ব্যবহার করবেন, যা একটি AI চালিত Kubernetes Assistant টুল।

আপনি যা শিখবেন

  • আপনি একটি GKE ক্লাস্টার তৈরি করবেন এবং kubectl-ai.
  • আপনি কুবারনেটিস-এর বিভিন্ন কাজ যেমন রিসোর্স পরিচালনা, তৈরি, প্যাচিং এবং ক্লাস্টার ও রিসোর্সের সমস্যা সমাধান করবেন।

আপনার যা যা লাগবে

  • ক্রোম ওয়েব ব্রাউজার
  • একটি জিমেইল অ্যাকাউন্ট
  • বিলিং সক্ষম একটি ক্লাউড প্রজেক্ট
  • একটি জেমিনি এপিআই কী

এই কোডল্যাবটি ব্যবহারের জন্য ধরে নেওয়া হচ্ছে যে, ব্যবহারকারীর কুবারনেটিস (Kubernetes) সম্পর্কে প্রাথমিক জ্ঞান রয়েছে।

২. শুরু করার আগে

একটি প্রকল্প তৈরি করুন

  1. গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
  2. আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।
  3. আপনি ক্লাউড শেল ব্যবহার করবেন, যা গুগল ক্লাউডে চলমান একটি কমান্ড-লাইন পরিবেশ এবং এটি bq-এর সাথে আগে থেকেই লোড করা থাকে। গুগল ক্লাউড কনসোলের শীর্ষে থাকা ‘Activate Cloud Shell’-এ ক্লিক করুন।

ক্লাউড শেল সক্রিয় করুন বোতামের ছবি

  1. ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে যাচাই করে নিন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে:
gcloud auth list
  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে অবগত আছে কিনা, তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
  1. আপনার প্রজেক্টটি সেট করা না থাকলে, এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
gcloud config set project <YOUR_PROJECT_ID>
  1. নিচে দেখানো কমান্ডের মাধ্যমে প্রয়োজনীয় API-গুলো সক্রিয় করুন। এতে কয়েক মিনিট সময় লাগতে পারে, তাই অনুগ্রহ করে ধৈর্য ধরুন।
gcloud services enable cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       compute.googleapis.com \
                       container.googleapis.com

কমান্ডটি সফলভাবে কার্যকর হলে, আপনি নিচে দেখানো বার্তার মতো একটি বার্তা দেখতে পাবেন:

Operation "operations/..." finished successfully.

যদি কোনো API বাদ পড়ে যায়, তাহলে আপনি বাস্তবায়ন চলাকালীন সময়েই তা সক্রিয় করে নিতে পারেন।

gcloud কমান্ড এবং এর ব্যবহার সম্পর্কে জানতে ডকুমেন্টেশন দেখুন।

৩. GKE ক্লাস্টার সেট আপ করুন

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

GKE ক্লাস্টার তৈরি করুন

ক্লাউড শেলে প্রদত্ত নিম্নলিখিত কমান্ডটি চালান। আপনি যদি অন্য কোনো জোনে ক্লাস্টারটি তৈরি করতে চান, তাহলে --zone ভ্যালুটি পরিবর্তন করে সেই অনুযায়ী করতে পারেন।

gcloud container clusters create my-gke-cluster \
       --num-nodes 2 \
       --machine-type e2-standard-4 \
       --zone us-central1-a

এটি সম্পন্ন হতে কিছুটা সময় লাগতে পারে, তাই অনুগ্রহ করে ধৈর্য ধরুন। সম্পন্ন হলে, আপনি নীচে দেখানো ছবির মতো একটি আউটপুট দেখতে পাবেন:

Note: Your Pod address range (`--cluster-ipv4-cidr`) can accommodate at most 1008 node(s).
Creating cluster my-gke-cluster in us-central1-a... Cluster is being health-checked (Kubernetes Control Plane is healthy)...done.                                                                                                             
Created [https://container.googleapis.com/v1/projects/YOUR_PROJECT_ID/zones/us-central1-a/clusters/my-gke-cluster].
To inspect the contents of your cluster, go to: https://console.cloud.google.com/kubernetes/workload_/gcloud/us-central1-a/my-gke-cluster?project=YOUR_PROJECT_ID
kubeconfig entry generated for my-gke-cluster.
NAME: my-gke-cluster
LOCATION: us-central1-a
MASTER_VERSION: 1.33.4-gke.1350000
MASTER_IP: 34.59.221.183
MACHINE_TYPE: e2-standard-4
NODE_VERSION: 1.33.4-gke.1350000
NUM_NODES: 2
STATUS: RUNNING
STACK_TYPE: IPV4

GKE ক্লাস্টারের বিবরণ যাচাই করুন

প্রথমে, চলুন ক্লাস্টার ক্রেডেনশিয়ালগুলো সংগ্রহ করি:

gcloud container clusters get-credentials my-gke-cluster \
                 --zone us-central1-a

আপনি নিচে দেখানো আউটপুটটি দেখতে পাবেন:

Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-gke-cluster.

এরপর, চলুন ক্লাস্টারের বিবরণ যাচাই করা যাক:

kubectl get nodes

আপনি এইরকম দেখতে একটি আউটপুট দেখতে পাবেন:

NAME                                            STATUS   ROLES    AGE     VERSION
gke-my-gke-cluster-default-pool-c63d5936-2f1z   Ready    <none>   2m58s   v1.33.4-gke.1350000
gke-my-gke-cluster-default-pool-c63d5936-fqtl   Ready    <none>   3m2s    v1.33.4-gke.1350000

অবশেষে, চলুন ক্লাস্টার নেমস্পেসটি যাচাই করা যাক:

kubectl get namespaces

আপনি এইরকম দেখতে একটি আউটপুট দেখতে পাবেন:

NAME                          STATUS   AGE
default                       Active   6m16s
gke-managed-cim               Active   4m21s
gke-managed-system            Active   4m6s
gke-managed-volumepopulator   Active   4m
gmp-public                    Active   3m40s
gmp-system                    Active   3m41s
kube-node-lease               Active   6m16s
kube-public                   Active   6m16s
kube-system                   Active   6m16s

৪. kubectl-ai CLI ইনস্টল করুন

আমরা kubectl-ai CLI ইনস্টল করার জন্য কুইক ইনস্টল (প্রস্তাবিত) পদ্ধতিটি ব্যবহার করব।

ক্লাউড শেলে নিম্নলিখিত কমান্ডটি প্রদান করুন:

curl -sSL https://raw.githubusercontent.com/GoogleCloudPlatform/kubectl-ai/main/install.sh | bash

এটি kubectl-ai CLI ডাউনলোড ও ইনস্টল করবে এবং শেষে আপনি একটি বার্তা দেখতে পাবেন, যেখানে লেখা থাকবে:

✅ kubectl-ai installed successfully! Run 'kubectl-ai --help' to get started.

নিম্নলিখিত কমান্ডটি চালিয়ে আমরা যাচাই করতে পারি যে kubectl-ai কমান্ডটি কাজ করছে কি না:

kubectl-ai

দ্রষ্টব্য: উপরের কমান্ডটি এই ত্রুটিটি ফেরত দেবে যে

creating llm client: GEMINI_API_KEY environment variable not set

উল্লেখ্য যে, kubectl-ai, gemini , vertexai , azopenai , openai , grok , bedrock এবং স্থানীয় LLM প্রোভাইডার যেমন ollamallama.cpp এর AI মডেলগুলোকে সাপোর্ট করে। আমাদের ক্ষেত্রে, আমরা Gemini (Google) ব্যবহার করতে যাচ্ছি এবং এর জন্য আমাদের Google AI Studio-এর মাধ্যমে একটি API Key সংগ্রহ করতে হবে। একবার আপনি কী-টি জেনারেট করে ফেললে এবং এর ভ্যালুটি প্রস্তুত হয়ে গেলে, আপনার কী-টিকে নির্দেশ করে এমন GEMINI_API_KEY এনভায়রনমেন্ট ভ্যারিয়েবলটি সেট করার জন্য Cloud Shell-এ নিম্নলিখিত কমান্ডটি ব্যবহার করুন।

export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"

দ্রষ্টব্য: 'GEMINI_API_KEY' শুধুমাত্র কী ভ্যালু হিসেবে ব্যবহার করুন।

kubectl-ai আরও একবার চালু করুন এবং এবার আপনি দেখতে পাবেন যে এটি চালু হয়ে এর ইন্টারেক্টিভ টার্মিনালে আপনার কমান্ডের জন্য অপেক্ষা করছে।

$ kubectl-ai

  Hey there, what can I help you with today?                                  

>>>  

প্রম্পটে kubectl কমান্ড সম্পর্কিত কয়েকটি কোয়েরি চেষ্টা করে দেখুন। নিচে কয়েকটি নমুনা দেওয়া হলো:

  • What is the command to get the nodes in a cluster?
  • list pods

আপনি quit টাইপ করে kubectl-ai টার্মিনাল থেকে বের হতে পারেন।

৫. kubectl-ai ব্যবহার করে

এখন যেহেতু আপনি সফলভাবে kubectl-ai কনফিগার করেছেন, এখানে উল্লেখ করার মূল বিষয় হলো, আপনি এখন স্বাভাবিক ভাষার কোয়েরি ব্যবহার করে ক্লাস্টারের সাথে যোগাযোগ করতে পারবেন। চলুন আরও কয়েকটি কমান্ড চেষ্টা করে দেখি:

চলুন নিম্নলিখিত কমান্ডটি চালানো যাক:

kubectl-ai --model gemini-2.5-flash "list pods in default namespace"

এর ফলে নিম্নলিখিত আউটপুট তৈরি হবে:

Running: kubectl get pods -n default

There are no resources found in the default namespace.      

>>>

লক্ষ্য করুন, এটি কীভাবে পডগুলির তালিকা করার জন্য আমাদের স্বাভাবিক ভাষার কোয়েরিটিকে সমতুল্য kubectl কমান্ডে অনুবাদ করেছে।

এছাড়াও, লক্ষ্য করুন যে আমরা এখন kubectl-ai ইন্টারেক্টিভ টার্মিনালের ( >>> ) ভিতরে আছি, যেখানে আমরা এটির সাথে মিথস্ক্রিয়া চালিয়ে যেতে পারি।

নিম্নলিখিত কমান্ডটি দিন:

how many pods are there in kube-system namespace

আউটপুটটি নিচে দেখানো হলো:

>>> how many pods are there in kube-system namespace

Running: kubectl get pods -n kube-system --output=jsonpath='{.items[*].metadata.name}'

There are 18 pods in the kube-system namespace.

একক শট কমান্ড

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

--quiet প্যারামিটারটি ব্যবহার করে সিঙ্গেল শট কমান্ড মেথডটি চালু করুন।

ডিপ্লয়মেন্ট তৈরি করার জন্য এখানে একটি নমুনা কমান্ড দেওয়া হলো।

kubectl-ai --quiet "create a deployment named nginx with 2 replicas" --skip-permissions

এর ফলে নিচে দেখানো অনুযায়ী create deployment কমান্ডটি কার্যকর হবে:

Running: kubectl create deployment nginx --image=nginx --replicas=2

I have created a deployment named nginx with 2 replicas. You can verify this by running kubectl get deployments .

এইভাবে আমরা আমাদের বর্তমান GKE ক্লাস্টারের সাথে যোগাযোগ করার জন্য kubectl-ai সেট আপ করতে সক্ষম হয়েছি।

আমরা এইমাত্র কয়েকটি কমান্ড চালিয়েছি এবং kubectl-ai দিয়ে কাজ করার একটি পদ্ধতি প্রদর্শন করেছি। আপনি এর আউটপুট অন্যান্য টুলে পাইপ করতে, ত্রুটি বুঝতে, kubectl-ai এর বিভিন্ন সেশন রানের মধ্যে ডেটা সংরক্ষণ করতে এবং আরও অনেক কিছু করতে পারবেন। টুলটির ডকুমেন্টেশনের Usage অংশটি অবশ্যই দেখুন।

৬. (ঐচ্ছিক) kubectl-ai চ্যাট ইন্টারফেস

কিছু পরিস্থিতিতে, আপনি একটি সাধারণ চ্যাট ইন্টারফেসের মাধ্যমে kubectl-ai ব্যবহার করতে পছন্দ করতে পারেন। Kubectl-ai এর নিজস্ব UI ইন্টারফেস রয়েছে, যা আপনি ক্লাউড শেলে (Cloud Shell) নিচে দেখানো কমান্ডের মাধ্যমে চালু করতে পারেন:

kubectl-ai --llm-provider=gemini \ --ui-type=web \ --ui-listen-address=0.0.0.0:8080

এটি একটি চ্যাট ইন্টারফেসে ইউটিলিটিটি চালু করবে এবং আপনি নিম্নলিখিতের মতো একটি আউটপুট দেখতে পাবেন:

listening on http://[::]:8080

নিচে দেখানো অনুযায়ী ক্লাউড শেল-এ ওয়েব প্রিভিউ-তে ক্লিক করুন:

f990712162e8e924.png

এরপর পোর্ট ৮০৮০-তে প্রিভিউ- তে ক্লিক করুন। এতে একটি ব্রাউজার চালু হবে এবং নিচে দেখানো ছবির মতো ওয়েব চ্যাট ইন্টারফেসটি উপলব্ধ হবে:

90fce57ad7f16842.png

এখানে একটি নমুনা কোয়েরি দেওয়া হলো যা আমরা চ্যাট ইন্টারফেসে চালিয়েছিলাম:

6a304d227d3fa5a6.png

এই ইন্টারফেসে অন্যান্য কোয়েরিগুলো চেষ্টা করে দেখুন। এটি আপনাকে অন্যান্য কোন স্বাভাবিক ভাষার কোয়েরি চালানো যেতে পারে, সে সম্পর্কেও ইঙ্গিত দেয়।

৭. পরিষ্কার করুন

আপনার গুগল ক্লাউড অ্যাকাউন্টে চলমান চার্জ এড়ানোর জন্য, এই কর্মশালার সময় আমাদের তৈরি করা রিসোর্সগুলো মুছে ফেলা জরুরি।

এই ল্যাবের পূর্ববর্তী অংশে আমরা যে GKE ক্লাস্টারটি তৈরি করেছিলাম, সেটির প্রয়োজন না হলে আপনি নিম্নলিখিত কমান্ডের মাধ্যমে এটি মুছে ফেলতে পারেন:

gcloud container clusters delete my-gke-cluster --zone=us-central1-a

৮. অভিনন্দন

অভিনন্দন, আপনি সফলভাবে kubectl-ai ব্যবহার করেছেন, যা একটি AI চালিত Kubernetes অ্যাসিস্ট্যান্ট এবং এটি স্বাভাবিক ভাষার কোয়েরির মাধ্যমে আপনার Kubernetes ক্লাস্টার পরিচালনা করে। আরও তথ্যের জন্য, পরবর্তী বিভাগে তালিকাভুক্ত রিসোর্সগুলো দেখুন।

৯. সম্পদ