১. সংক্ষিপ্ত বিবরণ
জেনকিন্স হলো বর্তমানে উপলব্ধ সবচেয়ে জনপ্রিয় কন্টিনিউয়াস ইন্টিগ্রেশন সলিউশনগুলোর মধ্যে একটি। এটি সফটওয়্যার ডেভেলপমেন্ট প্রক্রিয়ার অপরিহার্য, অ-মানবিক অংশগুলোকে স্বয়ংক্রিয় করতে ব্যবহৃত হয়। গুগল ক্লাউডে কুবেনেটিসে জেনকিন্স ডেপ্লয় করে এবং GKE প্লাগইন ব্যবহার করার মাধ্যমে, আমরা প্রয়োজন অনুযায়ী দ্রুত এবং স্বয়ংক্রিয়ভাবে বিল্ড এক্সিকিউটরগুলোকে স্কেল করতে পারি। ক্লাউড স্টোরেজের সাথে মিলিত হয়ে, আমরা ন্যূনতম প্রচেষ্টায় একটি অ্যাপ্লিকেশন বিল্ড এবং টেস্ট করতে সক্ষম হই।
আপনি যা করবেন
- কুবারনেটিস ক্লাস্টারে জেনকিন্স স্থাপন করুন
- জেনকিন্সকে এক্সিকিউটর নোড হিসেবে পড তৈরি ও ধ্বংস করার সুযোগ দিতে, জেনকিন্স GKE প্লাগইনটি ডেপ্লয় ও কনফিগার করুন।
- একটি নমুনা SpringBoot অ্যাপ্লিকেশন তৈরি এবং পরীক্ষা করুন
- গুগল কন্টেইনার রেজিস্ট্রি-তে একটি কন্টেইনার তৈরি ও প্রকাশ করুন।
- স্যাম্পল অ্যাপ্লিকেশনটি একটি স্টেজিং এবং প্রোডাকশন GKE এনভায়রনমেন্টে ডেপ্লয় করুন।
আপনার যা যা লাগবে
- বিলিং সেটআপ করা একটি গুগল ক্লাউড প্রজেক্ট। যদি আপনার এমন কোনো প্রজেক্ট না থাকে, তবে আপনাকে একটি তৈরি করে নিতে হবে।
২. প্রস্তুতি গ্রহণ
এই কোডল্যাবটি কোনো স্থানীয় ইনস্টলেশন বা কনফিগারেশন ছাড়াই সম্পূর্ণভাবে গুগল ক্লাউড প্ল্যাটফর্মে চালানো যায়।
ক্লাউড শেল
এই কোডল্যাব জুড়ে, আমরা ক্লাউড শেল-এর মাধ্যমে কমান্ড লাইন ব্যবহার করে বিভিন্ন ক্লাউড রিসোর্স ও সার্ভিস প্রোভিশন এবং ম্যানেজ করব।
এপিআই সক্রিয় করুন
আমাদের প্রোজেক্টে যে API গুলো সক্রিয় করতে হবে, সেগুলো নিচে দেওয়া হলো:
- কম্পিউট ইঞ্জিন এপিআই - ভার্চুয়াল মেশিন তৈরি ও পরিচালনা করে
- কুবারনেটিস ইঞ্জিন এপিআই - কন্টেইনার-ভিত্তিক অ্যাপ্লিকেশন তৈরি ও পরিচালনা করে
- ক্লাউড বিল্ড এপিআই - গুগল ক্লাউডের নিরবচ্ছিন্ন ইন্টিগ্রেশন এবং নিরবচ্ছিন্ন ডেলিভারি প্ল্যাটফর্ম
- সার্ভিস ম্যানেজমেন্ট এপিআই - সার্ভিস প্রডিউসারদের গুগল ক্লাউড প্ল্যাটফর্মে সার্ভিস প্রকাশ করার সুযোগ দেয়।
- ক্লাউড রিসোর্স ম্যানেজার এপিআই - গুগল ক্লাউড রিসোর্স কন্টেইনারগুলির মেটাডেটা তৈরি, পড়া এবং আপডেট করে
নিম্নলিখিত gcloud কমান্ডের সাহায্যে প্রয়োজনীয় API-গুলি সক্রিয় করুন:
gcloud services enable compute.googleapis.com \
container.googleapis.com \
cloudbuild.googleapis.com \
servicemanagement.googleapis.com \
cloudresourcemanager.googleapis.com \
--project ${GOOGLE_CLOUD_PROJECT}
একটি GCS বাকেট তৈরি করুন
আমাদের পরীক্ষার কাজটি আপলোড করার জন্য একটি GCS বাকেট লাগবে। এর অনন্যতা নিশ্চিত করতে, চলুন নামের মধ্যে আমাদের প্রজেক্ট আইডি ব্যবহার করে একটি বাকেট তৈরি করি:
gsutil mb gs://${GOOGLE_CLOUD_PROJECT}-jenkins-test-bucket/
৩. কুবারনেটিস ক্লাস্টার তৈরি করা
ক্লাস্টার তৈরি করুন
এরপরে, আমরা একটি GKE ক্লাস্টার তৈরি করব যা আমাদের জেনকিন্স সিস্টেমকে হোস্ট করবে, যার মধ্যে ওয়ার্কার নোড হিসাবে প্রেরিত পডগুলোও অন্তর্ভুক্ত থাকবে। --scopes ফ্ল্যাগ দ্বারা নির্দেশিত অতিরিক্ত স্কোপ জেনকিন্সকে ক্লাউড সোর্স রিপোজিটরি এবং কন্টেইনার রেজিস্ট্রি অ্যাক্সেস করার অনুমতি দেবে। ক্লাউড কনসোলে, নিম্নলিখিত কমান্ডটি চালান:
gcloud container clusters create jenkins-cd \ --machine-type n1-standard-2 --num-nodes 1 \ --zone us-east1-d \ --scopes "https://www.googleapis.com/auth/source.read_write,cloud-platform" \ --cluster-version latest
চলুন আমাদের নমুনা অ্যাপ্লিকেশনটির স্টেজিং এবং প্রোডাকশন বিল্ড হোস্ট করার জন্য আরও ২টি ক্লাস্টার স্থাপন করি:
gcloud container clusters create staging \ --machine-type n1-standard-2 --num-nodes 1 \ --zone us-east1-d \ --cluster-version latest
gcloud container clusters create prod \ --machine-type n1-standard-2 --num-nodes 2 \ --zone us-east1-d \ --cluster-version latest
যাচাই করুন
ক্লাস্টারগুলো তৈরি হয়ে গেলে, আমরা gcloud container clusters list মাধ্যমে সেগুলো চালু আছে কিনা তা নিশ্চিত করতে পারি।
আউটপুটের STATUS কলামে RUNNING থাকা উচিত:
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS jenkins-cd us-east1-d 1.15.9-gke.9 34.74.77.124 n1-standard-2 1.15.9-gke.9 2 RUNNING prod us-east1-d 1.15.9-gke.9 35.229.98.12 n1-standard-2 1.15.9-gke.9 2 RUNNING staging us-east1-d 1.15.9-gke.9 34.73.92.228 n1-standard-2 1.15.9-gke.9 2 RUNNING
৪. হেলম ব্যবহার করে জেনকিন্স স্থাপন করুন
হেলম ইনস্টল করুন
আমরা আমাদের ক্লাস্টারে জেনকিন্স ইনস্টল করার জন্য হেলম (Helm), যা কুবারনেটিসের (Kubernetes) একটি অ্যাপ্লিকেশন প্যাকেজ ম্যানেজার, ব্যবহার করব। শুরু করার জন্য, সেই প্রজেক্টটি ডাউনলোড করুন যেটিতে কুবারনেটিস ম্যানিফেস্টগুলো (Kubernetes manifests) অন্তর্ভুক্ত রয়েছে, যা আমরা জেনকিন্স ডেপ্লয় করতে ব্যবহার করব:
git clone https://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes.git ~/continuous-deployment-on-kubernetes
আপনার বর্তমান ওয়ার্কিং ডিরেক্টরিকে প্রজেক্ট ডিরেক্টরিতে পরিবর্তন করুন:
cd ~/continuous-deployment-on-kubernetes/
নিজেকে ক্লাস্টার-অ্যাডমিন রোলের অনুমতি দেওয়ার জন্য একটি ক্লাস্টার রোল বাইন্ডিং তৈরি করুন:
kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(gcloud config get-value account)
আপনার জেনকিন্স ক্লাস্টারের ক্রেডেনশিয়াল সংগ্রহ করে এতে সংযোগ করুন:
gcloud container clusters get-credentials jenkins-cd --zone us-east1-d --project ${GOOGLE_CLOUD_PROJECT}
এবং আপনার ক্লাউড কনসোলে Helm বাইনারিটি ডাউনলোড করুন:
wget https://storage.googleapis.com/kubernetes-helm/helm-v2.14.1-linux-amd64.tar.gz
ফাইলটি আনজিপ করুন এবং এর সাথে থাকা হেলম ফাইলটি আপনার বর্তমান ওয়ার্কিং ডিরেক্টরিতে কপি করুন:
tar zxfv helm-v2.14.1-linux-amd64.tar.gz && \ cp linux-amd64/helm .
Tiller হলো Helm-এর সার্ভার সাইড যা Kubernetes ক্লাস্টারে চলে। চলুন tiller নামে একটি সার্ভিস অ্যাকাউন্ট তৈরি করি:
kubectl create serviceaccount tiller \ --namespace kube-system
এবং এটিকে cluster-admin ক্লাস্টার রোলের সাথে সংযুক্ত করুন যাতে এটি পরিবর্তন করতে পারে:
kubectl create clusterrolebinding tiller-admin-binding \ --clusterrole=cluster-admin \ --serviceaccount=kube-system:tiller
এখন আমরা Helm চালু করতে এবং রিপো আপডেট করতে পারি:
./helm init --service-account=tiller && \ ./helm repo update
যাচাই করুন
./helm version ব্যবহার করে Helm ব্যবহারের জন্য প্রস্তুত কিনা তা নিশ্চিত করুন - এটি ক্লায়েন্ট এবং সার্ভারের সংস্করণ নম্বর ফেরত দেবে:
Client: &version.Version{SemVer:"v2.14.1", GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.1", GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}
জেনকিন্স ইনস্টল করুন
এখন যেহেতু আমাদের ক্লাস্টারে Helm ইনস্টল করা হয়ে গেছে, আমরা Jenkins ইনস্টলেশনের জন্য প্রস্তুত:
./helm install stable/jenkins -n cd \ -f jenkins/values.yaml \ --version 1.2.2 --wait
যাচাই করুন
চলুন পডগুলো দেখে নেওয়া যাক:
kubectl get pods
আউটপুটে আমাদের জেনকিন্স পডটির স্ট্যাটাস RUNNING অবস্থায় দেখানো উচিত:
NAME READY STATUS RESTARTS AGE cd-jenkins-7c786475dd-vbhg4 1/1 Running 0 1m
নিশ্চিত করুন যে জেনকিন্স পরিষেবাটি সঠিকভাবে তৈরি করা হয়েছে:
kubectl get svc
আউটপুটটি দেখতে অনেকটা এইরকম হবে:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE cd-jenkins ClusterIP 10.35.241.170 <none> 8080/TCP 2m27s cd-jenkins-agent ClusterIP 10.35.250.57 <none> 50000/TCP 2m27s kubernetes ClusterIP 10.35.240.1 <none> 443/TCP 75m
জেনকিন্স ইনস্টলেশনটি বিল্ডার এজেন্ট তৈরি করার জন্য কুবারনেটিস প্লাগইন ব্যবহার করবে। প্রয়োজন অনুযায়ী জেনকিন্স মাস্টার দ্বারা এগুলো স্বয়ংক্রিয়ভাবে চালু করা হবে। এদের কাজ শেষ হলে, এগুলো স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায় এবং এদের রিসোর্সগুলো ক্লাস্টারের রিসোর্স পুলে পুনরায় যুক্ত করা হয়।
জেনকিন্সের সাথে সংযোগ করুন
আমাদের ক্লাস্টারে জেনকিন্স চলছে, কিন্তু UI অ্যাক্সেস করার জন্য, চলুন ক্লাউড শেল থেকে পোর্ট ফরওয়ার্ডিং সেট আপ করি:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/component=jenkins-master" -l "app.kubernetes.io/instance=cd" -o jsonpath="{.items[0].metadata.name}") &&
kubectl port-forward $POD_NAME 8080:8080 >> /dev/null &
ইনস্টলেশনের সময় একটি অ্যাডমিন পাসওয়ার্ড তৈরি হয়েছিল। চলুন, সেটি পুনরুদ্ধার করা যাক:
printf $(kubectl get secret cd-jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo
ক্লাউড শেলের শীর্ষে, ওয়েব প্রিভিউ আইকনে ক্লিক করুন।
এবং 'পোর্ট ৮০৮০-তে প্রিভিউ' নির্বাচন করুন।

আমরা জেনকিন্সের একটি লগইন স্ক্রিন দেখতে পাব, যেখানে আমরা ইউজারনেম হিসেবে ' admin এবং আগের ধাপে পাওয়া পাসওয়ার্ডটি প্রবেশ করাতে পারব।

যখন আমরা 'সাইন ইন'-এ ক্লিক করব, তখন আমাদেরকে জেনকিন্সের মূল পৃষ্ঠায় নিয়ে যাওয়া হবে।

৫. GKE প্লাগইন ইনস্টল এবং কনফিগার করুন
গুগল কুবারনেটিস ইঞ্জিন প্লাগইন আমাদেরকে জেনকিন্সে তৈরি করা ডেপ্লয়মেন্টগুলো GKE-তে চলমান আমাদের কুবারনেটিস ক্লাস্টারে প্রকাশ করার সুযোগ দেয়। আপনার প্রোজেক্টে IAM পারমিশন নিয়ে কিছু কনফিগারেশন করার প্রয়োজন আছে। আমরা টেরাফর্ম ব্যবহার করে সেই কনফিগারেশনটি ডেপ্লয় করব।
প্রথমে, GKE প্লাগইন প্রজেক্টটি ডাউনলোড করুন:
git clone https://github.com/jenkinsci/google-kubernetes-engine-plugin.git ~/google-kubernetes-engine-plugin
স্বয়ংক্রিয় IAM অনুমতি কনফিগারেশন
আপনার বর্তমান ওয়ার্কিং ডিরেক্টরি পরিবর্তন করে পূর্বে ক্লোন করা GKE প্রজেক্টের rbac ডিরেক্টরিতে যান:
cd ~/google-kubernetes-engine-plugin/docs/rbac/
gcp-sa-setup.tf হলো একটি Terraform কনফিগারেশন ফাইল যা সীমিত অনুমতিসহ একটি কাস্টম GCP IAM রোল এবং সেই রোলটি প্রদান করার জন্য একটি GCP সার্ভিস অ্যাকাউন্ট তৈরি করবে। ফাইলটির জন্য project, region এবং service account name ভেরিয়েবলগুলোতে ভ্যালু প্রয়োজন। আমরা প্রথমে নিম্নলিখিত এনভায়রনমেন্ট ভেরিয়েবলগুলো ডিক্লেয়ার করার মাধ্যমে সেই ভ্যালুগুলো প্রদান করি:
export TF_VAR_project=${GOOGLE_CLOUD_PROJECT}
export TF_VAR_region=us-east1-d
export TF_VAR_sa_name=kaniko-role
টেরাফর্ম চালু করুন, একটি পরিকল্পনা তৈরি করুন এবং তা প্রয়োগ করুন:
terraform init terraform plan -out /tmp/tf.plan terraform apply /tmp/tf.plan && rm /tmp/tf.plan
আমাদের ক্লাউড স্টোরেজ বাকেটে সংরক্ষণ করার জন্য সার্ভিস অ্যাকাউন্টটির স্টোরেজ অ্যাডমিন অনুমতি প্রয়োজন হবে:
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member serviceAccount:kaniko-role@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com \
--role 'roles/storage.admin'
আমাদের পাইপলাইনের ডেপ্লয়মেন্ট পর্যায়গুলোর জন্য এটির কন্টেইনার পারমিশনও প্রয়োজন হবে:
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} --member \
serviceAccount:kaniko-role@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com --role 'roles/container.developer'
এখন আমরা gke robot deployer ব্যবহার করে Helm-এর মাধ্যমে GKE প্লাগইনের জন্য ক্লাস্টার পারমিশন সেট আপ করতে পারি। আপনার ওয়ার্কিং ডিরেক্টরি পরিবর্তন করে GKE প্রজেক্টের helm ডিরেক্টরিতে যান:
cd ~/google-kubernetes-engine-plugin/docs/helm/
এবং প্রদত্ত হেলম চার্ট ব্যবহার করে ইনস্টল করুন:
export TARGET_NAMESPACE=kube-system && \ envsubst < gke-robot-deployer/values.yaml | helm install ./gke-robot-deployer --name gke-robot-deployer -f -
৬. জেনকিন্স কনফিগার করুন
পরিষেবা অ্যাকাউন্ট কীগুলি
সার্ভিস অ্যাকাউন্টটি সঠিকভাবে কাজ করার জন্য, আমাদের একটি প্রাইভেট কী ফাইল তৈরি করতে হবে এবং এটিকে কুবারনেটিস সিক্রেট হিসেবে যুক্ত করতে হবে। প্রথমে, নিম্নলিখিত gcloud কমান্ডটি ব্যবহার করে ফাইলটি তৈরি করুন:
gcloud iam service-accounts keys create /tmp/kaniko-secret.json --iam-account kaniko-role@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
আমরা ঐ ফাইলটি দিয়ে কুবারনেটিস সিক্রেট স্টোরে একটি সিক্রেট কী তৈরি করব:
kubectl create secret generic jenkins-int-samples-kaniko-secret --from-file=/tmp/kaniko-secret.json
ক্লাউড শেলের ৩-ডট মেনু থেকে 'ডাউনলোড ফাইল' আইটেমটি অ্যাক্সেস করে json ফাইলটি আপনার লোকাল ডিস্কে ডাউনলোড করুন:

/tmp/kaniko-secret.json ফাইল পাথটি প্রবেশ করান এবং ডাউনলোড-এ ক্লিক করুন।
জেনকিন্স পেজে ফিরে এসে, বাম পাশের প্যানে Credentials-এ ক্লিক করুন, তারপর System-এ ক্লিক করুন।


পেজের ' সিস্টেম' শিরোনামের অংশে, 'গ্লোবাল ক্রেডেনশিয়ালস'-এ ক্লিক করুন, তারপর বাম দিকে 'অ্যাড ক্রেডেনশিয়ালস'-এ ক্লিক করুন:


Kind ড্রপডাউনে, private key থেকে Google Service Account নির্বাচন করুন। নাম হিসেবে 'kaniko-role' লিখুন, তারপর পূর্ববর্তী ধাপগুলিতে তৈরি করা আপনার JSON কী আপলোড করুন এবং OK ক্লিক করুন।

পরিবেশগত পরিবর্তনশীল
মাল্টি-ব্রাঞ্চ পাইপলাইন তৈরি করার আগে আমাদের জেনকিন্সে কিছু এনভায়রনমেন্ট ভেরিয়েবল নির্ধারণ করতে হবে। সেগুলো হলো:
- JENK_INT_IT_ZONE - কুবারনেটিস ক্লাস্টারের জোন। আমাদের ক্ষেত্রে
us-east1-d - JENK_INT_IT_PROJECT_ID - এটি সেই GCP প্রজেক্ট আইডিকে বোঝায় যেখানে জেনকিন্সের এই ইনস্ট্যান্সটি হোস্ট করা আছে।
- JENK_INT_IT_STAGING - আমাদের 'স্টেজিং' ক্লাস্টারের নাম, প্রদর্শনের উদ্দেশ্যে এটি
staging - JENK_INT_IT_PROD - আমাদের 'prod' ক্লাস্টারের নাম। প্রদর্শনের উদ্দেশ্যে, এটি
prod - JENK_INT_IT_BUCKET - পূর্ববর্তী ধাপে তৈরি করা গুগল ক্লাউড স্টোরেজ বাকেট
- JENK_INT_IT_CRED_ID - এটি পূর্ববর্তী ধাপে json ব্যবহার করে তৈরি করা ক্রেডেনশিয়ালকে বোঝায়। এর মানটি আমাদের দেওয়া নাম,
kaniko-roleসাথে মিলতে হবে।
এগুলো যোগ করতে, জেনকিন্স পরিচালনা (Manage Jenkins)- তে যান:

তারপর সিস্টেম কনফিগার করুন:

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

পরিবর্তনগুলো প্রয়োগ করতে পৃষ্ঠার নীচে থাকা সংরক্ষণ (Save ) বোতামটিতে ক্লিক করুন।
৭. একটি পাইপলাইন স্থাপন করুন।
জেনকিন্সে 'নতুন আইটেম'-এ ক্লিক করুন:

নামের জায়গায় 'jenkins-integration-sample' লিখুন এবং প্রজেক্টের ধরন হিসেবে 'Multibranch Pipeline' নির্বাচন করে OK-তে ক্লিক করুন:

আপনাকে পাইপলাইন কনফিগারেশন পেজে রিডাইরেক্ট করা হবে। 'Branch Sources'-এর অধীনে 'Project Repository' হিসেবে https://github.com/GoogleCloudPlatform/jenkins-integration-samples.git লিখুন। 'Build Configuration'- এর অধীনে ' Script Path' হিসেবে 'gke/Jenkinsfile' লিখুন।

এই সেটিংসগুলো প্রয়োগ করতে সেভ-এ ক্লিক করুন। সেভ করার পর, জেনকিন্স রিপোজিটরি স্ক্যান করা শুরু করবে এবং প্রতিটি ব্রাঞ্চের জন্য একটি বিল্ড তৈরি করবে। বিল্ড চলাকালীন, আপনি কুবারনেটিস ওয়ার্কলোডস পেজে পড তৈরি, রান এবং ডেস্ট্রয় হতে দেখবেন।
বিল্ডগুলি শেষ হলে, আপনি Kubernetes Workloads পৃষ্ঠায় jenkins-integration-samples-gke নামে দুটি আইটেম দেখতে পাবেন, যার প্রতিটি হয় prod অথবা testing ক্লাস্টারের সাথে সম্পর্কিত। স্ট্যাটাসটি OK দেখাবে:

নিম্নলিখিত gcloud কমান্ডটি ব্যবহার করে আমরা দেখতে পাব যে, আমাদের পাইপলাইনের সাথে সঙ্গতিপূর্ণ একটি কন্টেইনার ইমেজ গুগল কন্টেইনার রেজিস্ট্রি-তে আপলোড করা হয়েছে:
gcloud container images list
আপনার ব্রাউজারে ওয়ার্কলোড দেখতে, প্রোড ক্লাস্টারের ক্রেডেনশিয়ালগুলি সংগ্রহ করুন:
gcloud container clusters get-credentials prod --zone us-east1-d --project ${GOOGLE_CLOUD_PROJECT}
এবং আপনার শেলের পোর্ট ৮০৮১ থেকে আপনার ওয়ার্কলোডের পোর্ট ৮০৮০-তে পোর্ট ফরওয়ার্ড সেট আপ করতে নিম্নলিখিতটি চালান:
export POD_NAME=$(kubectl get pods -o jsonpath="{.items[0].metadata.name}") &&
kubectl port-forward $POD_NAME 8081:8080 >> /dev/null &
ক্লাউড শেলের শীর্ষে, ওয়েব প্রিভিউ আইকনে ক্লিক করুন এবং 'পোর্ট ৮০৮১-এ প্রিভিউ' নির্বাচন করুন।


৮. পরিচ্ছন্নতা
আমরা কুবারনেটিসে কীভাবে একটি জেনকিন্স এবং একটি নমুনা মাল্টিব্রাঞ্চ পাইপলাইন স্থাপন করতে হয় তা দেখেছি। এখন আমাদের তৈরি করা সমস্ত রিসোর্স থেকে প্রজেক্টটি পরিষ্কার করার সময় এসেছে।
প্রকল্পটি মুছে ফেলুন
আপনি চাইলে পুরো প্রজেক্টটি মুছে ফেলতে পারেন। GCP কনসোলে, ক্লাউড রিসোর্স ম্যানেজার পেজে যান:
প্রজেক্ট তালিকা থেকে, যে প্রজেক্টটিতে আমরা কাজ করছিলাম সেটি নির্বাচন করুন এবং ডিলিট-এ ক্লিক করুন। আপনাকে প্রজেক্ট আইডি টাইপ করতে বলা হবে। সেটি প্রবেশ করান এবং শাট ডাউন-এ ক্লিক করুন।
বিকল্পভাবে, আপনি gcloud ব্যবহার করে সরাসরি ক্লাউড শেল থেকে সম্পূর্ণ প্রজেক্টটি মুছে ফেলতে পারেন:
gcloud projects delete $GOOGLE_CLOUD_PROJECT
আপনি যদি বিলযোগ্য বিভিন্ন উপাদানগুলো এক এক করে মুছে ফেলতে চান, তাহলে পরবর্তী বিভাগে যান।
কুবারনেটিস ক্লাস্টার
gcloud ব্যবহার করে সম্পূর্ণ Kubernetes ক্লাস্টারটি মুছে ফেলুন:
gcloud container clusters delete jenkins-cd --zone=us-east1-d
স্টোরেজ বালতি
gsutil ব্যবহার করে আপলোড করা সমস্ত ফাইল সরিয়ে ফেলুন এবং আমাদের বাকেটটি ডিলিট করে দিন:
gsutil rm -r gs://${GOOGLE_CLOUD_PROJECT}-jenkins-test-bucket
গুগল কন্টেইনার রেজিস্ট্রি ইমেজ
আমরা ইমেজ ডাইজেস্ট ব্যবহার করে গুগল কন্টেইনার রেজিস্ট্রি ইমেজগুলো ডিলিট করব। প্রথমে, নিচের কমান্ডটি দিয়ে ডাইজেস্টগুলো সংগ্রহ করুন:
gcloud container images list-tags gcr.io/${GOOGLE_CLOUD_PROJECT}/jenkins-integration-samples-gke --format="value(digest)"
তারপর ফেরত আসা প্রতিটি ডাইজেস্টের জন্য:
gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/jenkins-integration-samples-gke@sha256:<DIGEST>
৯. অভিনন্দন!
বাহ! আপনি পেরেছেন। আপনি GKE-তে জেনকিন্স ডেপ্লয় করতে এবং কুবারনেটিস ক্লাস্টারে জব পাঠাতে শিখে গেছেন।
আমরা যা আলোচনা করেছি
- আমরা একটি কুবারনেটিস ক্লাস্টার স্থাপন করেছি এবং হেলম ব্যবহার করে জেনকিন্স ইনস্টল করেছি।
- কুবারনেটিস ক্লাস্টারে বিল্ড আর্টিফ্যাক্টস ডেপ্লয় করার জন্য জেনকিন্সকে সক্ষম করতে আমরা GKE প্লাগইনটি ইনস্টল ও কনফিগার করেছি।
- আমরা জেনকিন্সকে একটি মাল্টিব্রাঞ্চ পাইপলাইন সেট আপ করার জন্য কনফিগার করেছি যা GKE ক্লাস্টারগুলিতে কাজ প্রেরণ করে।