জিকেই-তে জেনকিন্স মাল্টি-শাখা পাইপলাইন

1. সংক্ষিপ্ত বিবরণ

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

তুমি কি করবে

  • জেনকিন্সকে একটি কুবারনেটস ক্লাস্টারে স্থাপন করুন
  • জেনকিন্সকে এক্সিকিউটার নোড হিসেবে পড তৈরি এবং ধ্বংস করতে সক্ষম করার জন্য জেনকিন্স GKE প্লাগইন স্থাপন এবং কনফিগার করুন।
  • একটি নমুনা স্প্রিংবুট অ্যাপ্লিকেশন তৈরি এবং পরীক্ষা করুন
  • গুগল কন্টেইনার রেজিস্ট্রিতে একটি কন্টেইনার তৈরি এবং প্রকাশ করুন
  • নমুনা অ্যাপ্লিকেশনটি একটি স্টেজিং এবং প্রোডাকশন GKE পরিবেশে স্থাপন করুন।

তোমার যা লাগবে

  • বিলিং সেট আপ সহ একটি গুগল ক্লাউড প্রকল্প। যদি আপনার কাছে এটি না থাকে তবে আপনাকে একটি তৈরি করতে হবে।

2. সেট আপ করা

এই কোডল্যাবটি কোনও স্থানীয় ইনস্টলেশন বা কনফিগারেশন ছাড়াই সম্পূর্ণরূপে গুগল ক্লাউড প্ল্যাটফর্মে চলতে পারে।

ক্লাউড শেল

এই কোডল্যাব জুড়ে, আমরা ক্লাউড শেলের মাধ্যমে কমান্ড লাইন ব্যবহার করে বিভিন্ন ক্লাউড রিসোর্স এবং পরিষেবা সরবরাহ এবং পরিচালনা করব।

API গুলি সক্ষম করুন

আমাদের প্রকল্পে যেসব API গুলি সক্রিয় করতে হবে তা এখানে দেওয়া হল:

  • কম্পিউট ইঞ্জিন API - ভার্চুয়াল মেশিন তৈরি করে এবং চালায়
  • Kubernetes Engine API - কন্টেইনার-ভিত্তিক অ্যাপ্লিকেশন তৈরি এবং পরিচালনা করে
  • ক্লাউড বিল্ড এপিআই - গুগল ক্লাউডের ক্রমাগত ইন্টিগ্রেশন এবং ক্রমাগত ডেলিভারি প্ল্যাটফর্ম
  • পরিষেবা ব্যবস্থাপনা API - পরিষেবা প্রযোজকদের Google ক্লাউড প্ল্যাটফর্মে পরিষেবা প্রকাশ করার অনুমতি দেয়।
  • ক্লাউড রিসোর্স ম্যানেজার 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

আমাদের নমুনা অ্যাপ্লিকেশনের স্টেজিং এবং প্রোড বিল্ড হোস্ট করার জন্য 2টি ক্লাস্টার স্থাপন করা যাক:

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

28b45298e1e82748.png সম্পর্কে যাচাই করুন

ক্লাস্টারগুলি তৈরি হয়ে গেলে, আমরা নিশ্চিত করতে পারি যে সেগুলি 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

৪. হেলমের সাথে জেনকিন্সকে মোতায়েন করুন

হেলম ইনস্টল করুন

আমরা আমাদের ক্লাস্টারে জেনকিন্স ইনস্টল করার জন্য Kubernetes-এর একটি অ্যাপ্লিকেশন প্যাকেজ ম্যানেজার Helm ব্যবহার করব। শুরু করার জন্য, Kubernetes ম্যানিফেস্ট সহ প্রকল্পটি ডাউনলোড করুন যা আমরা Jenkins স্থাপন করতে ব্যবহার করব:

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}

এবং আপনার ক্লাউড কনসোলে হেলম বাইনারি ডাউনলোড করুন:

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 নামে একটি সার্ভিস অ্যাকাউন্ট তৈরি করি:

kubectl create serviceaccount tiller \
--namespace kube-system

এবং এটিকে cluster-admin ক্লাস্টার ভূমিকার সাথে আবদ্ধ করুন যাতে এটি পরিবর্তন করতে পারে:

kubectl create clusterrolebinding tiller-admin-binding \
--clusterrole=cluster-admin \
--serviceaccount=kube-system:tiller

এখন আমরা Helm আরম্ভ করতে পারি এবং repo আপডেট করতে পারি:

./helm init --service-account=tiller && \
./helm repo update

28b45298e1e82748.png সম্পর্কে যাচাই করুন

নিশ্চিত করুন যে হেলম ./helm version সাথে ব্যবহার করা যাবে - এটি ক্লায়েন্ট এবং সার্ভারের সংস্করণ নম্বরগুলি ফেরত দেবে:

Client: &version.Version{SemVer:"v2.14.1", GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.1", GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}

জেনকিন্স ইনস্টল করুন

এখন যেহেতু হেলম আমাদের ক্লাস্টারে ইনস্টল করা হয়েছে, আমরা জেনকিন্স ইনস্টলেশনের জন্য প্রস্তুত:

./helm install stable/jenkins -n cd \
-f jenkins/values.yaml \
--version 1.2.2 --wait

28b45298e1e82748.png সম্পর্কে যাচাই করুন

আসুন পডগুলি পরীক্ষা করে দেখি:

kubectl get pods

আউটপুটে আমাদের Jenkins পডটি 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

জেনকিন্স ইনস্টলেশনটি বিল্ডার এজেন্ট তৈরি করতে Kubernetes Plugin ব্যবহার করবে। প্রয়োজনে জেনকিন্স মাস্টার দ্বারা এগুলি স্বয়ংক্রিয়ভাবে চালু করা হবে। যখন তাদের কাজ শেষ হয়ে যায়, তখন এগুলি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায় এবং তাদের সংস্থানগুলি ক্লাস্টারের রিসোর্স পুলে আবার যোগ করা হয়।

জেনকিন্সের সাথে সংযোগ করুন

জেনকিন্স আমাদের ক্লাস্টারে চলছে কিন্তু 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

ক্লাউড শেলের উপরে, ওয়েব প্রিভিউ আইকনে ক্লিক করুন। 7ddf5a65fd556dd6.png সম্পর্কে এবং 'পোর্ট 8080-এ প্রিভিউ' নির্বাচন করুন।

1d614c831a621cff.png সম্পর্কে

আমাদের জেনকিন্সের জন্য একটি লগইন স্ক্রিন দেখা উচিত যেখানে আমরা ব্যবহারকারীর নাম এবং পূর্ববর্তী ধাপে ফিরে আসা পাসওয়ার্ডের জন্য admin লিখতে পারি:

9cba23e856cbc84f.png সম্পর্কে

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

9261f3e914829137.png সম্পর্কে

৫. GKE প্লাগইন ইনস্টল এবং কনফিগার করুন

গুগল কুবারনেটস ইঞ্জিন প্লাগইন আমাদের জেনকিন্সের মধ্যে তৈরি ডিপ্লয়মেন্টগুলিকে GKE-এর মধ্যে চলমান আমাদের কুবারনেটস ক্লাস্টারগুলিতে প্রকাশ করার অনুমতি দেয়। আপনার প্রকল্পে IAM অনুমতি নিয়ে কিছু কনফিগারেশন করতে হবে। আমরা Terraform ব্যবহার করে সেই কনফিগারেশনটি ডিপ্লয় করব।

প্রথমে, 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 পরিষেবা অ্যাকাউন্ট থাকবে। ফাইলটিতে প্রকল্প, অঞ্চল এবং পরিষেবা অ্যাকাউন্টের নাম ভেরিয়েবলের জন্য মান প্রয়োজন। আমরা প্রথমে নিম্নলিখিত পরিবেশ ভেরিয়েবলগুলি ঘোষণা করে সেই মানগুলি প্রদান করি:

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 রোবট ডিপ্লোয়ার ব্যবহার করে GKE প্লাগইনের জন্য ক্লাস্টার অনুমতি সেট আপ করতে Helm ব্যবহার করতে পারি। আপনার ওয়ার্কিং ডিরেক্টরিটি 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 -

৬. জেনকিন্স কনফিগার করুন

পরিষেবা অ্যাকাউন্ট কী

সার্ভিস অ্যাকাউন্টটি সঠিকভাবে কাজ করার জন্য, আমাদের একটি প্রাইভেট কী ফাইল তৈরি করতে হবে এবং এটিকে Kubernetes সিক্রেট হিসেবে যুক্ত করতে হবে। প্রথমে, ফাইলটি তৈরি করতে নিম্নলিখিত gcloud কমান্ডটি ব্যবহার করতে হবে:

gcloud iam service-accounts keys create /tmp/kaniko-secret.json --iam-account kaniko-role@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com

আমরা সেই ফাইলটি দিয়ে kubernetes secret store-এ একটি গোপন কী তৈরি করব:

kubectl create secret generic jenkins-int-samples-kaniko-secret --from-file=/tmp/kaniko-secret.json 

ক্লাউড শেলের ৩-ডট মেনু থেকে ডাউনলোড ফাইল আইটেমটি অ্যাক্সেস করে আপনার স্থানীয় ডিস্কে json ফাইলটি ডাউনলোড করুন:

c40378e72013b843.png সম্পর্কে

/tmp/kaniko-secret.json ফাইলের পাথটি লিখুন এবং ডাউনলোড এ ক্লিক করুন।

জেনকিন্স পৃষ্ঠায় ফিরে, বাম দিকের ফলকে, শংসাপত্রগুলিতে ক্লিক করুন, তারপরে সিস্টেমে ক্লিক করুন।

6c140f7e6bb82f8.png সম্পর্কে

3b874912cdc8019b.png সম্পর্কে

পৃষ্ঠার " সিস্টেম" শিরোনামের অংশের অধীনে, "গ্লোবাল ক্রেডেনশিয়াল" এ ক্লিক করুন তারপর বাম দিকে "ক্রেডেনশিয়াল যোগ করুন" এ ক্লিক করুন:

4350c0e68561119b.png সম্পর্কে

3d3526551cdae8b.png সম্পর্কে

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

b0502213408e730e.png সম্পর্কে

পরিবেশগত পরিবর্তনশীল

মাল্টি-ব্রাঞ্চ পাইপলাইন তৈরি করার আগে আমাদের কিছু পরিবেশগত ভেরিয়েবল জেনকিন্সকে সংজ্ঞায়িত করতে হবে। সেগুলো হল:

  • 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- এ যান:

d54f279190a07878.png সম্পর্কে

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

ce79d218b2799640.png সম্পর্কে

Global properties নামে একটি বিভাগ থাকবে, এবং যখন আমরা Environment variables এর জন্য বাক্সটি চেক করব তখন আমরা একটি Add বোতাম পাব যেখানে আমরা উপরের ভেরিয়েবলগুলিকে কী ভ্যালু পেয়ার হিসেবে যোগ করতে ক্লিক করব:

81aa222a2b17b2cc.png সম্পর্কে

পরিবর্তনগুলি প্রয়োগ করতে পৃষ্ঠার নীচে সংরক্ষণ বোতামে ক্লিক করুন।

৭. একটি পাইপলাইন সেটআপ করুন

জেনকিন্সে 'নতুন আইটেম'-এ ক্লিক করুন:

8d1270ce4d7b6a8a.png সম্পর্কে

নামের জন্য 'jenkins-integration-sample' লিখুন এবং প্রকল্পের ধরণ হিসেবে 'Multibranch Pipeline' নির্বাচন করুন, এবং ঠিক আছে ক্লিক করুন:

অনুসরণ

আমাদের পাইপলাইন কনফিগারেশন পৃষ্ঠায় পুনঃনির্দেশিত করা হবে। ব্রাঞ্চ সোর্সের অধীনে https://github.com/GoogleCloudPlatform/jenkins-integration-samples.git কে প্রজেক্ট রিপোজিটরি হিসেবে লিখুন। বিল্ড কনফিগারেশনের অধীনে 'gke/Jenkinsfile' কে স্ক্রিপ্ট পাথ হিসেবে লিখুন।

5135bd6b0374508c.png সম্পর্কে

এই সেটিংস প্রয়োগ করতে সংরক্ষণ করুন-এ ক্লিক করুন। সংরক্ষণের পরে, জেনকিন্স প্রতিটি শাখার জন্য রিপোজিটরির একটি স্ক্যান এবং পরবর্তী বিল্ড শুরু করবে। এটি এগিয়ে যাওয়ার সাথে সাথে, আপনি কুবারনেটস ওয়ার্কলোড পৃষ্ঠায় বিল্ডগুলির অগ্রগতির সাথে সাথে পডগুলি তৈরি, চালানো এবং ধ্বংস হতে দেখতে পাবেন।

বিল্ডগুলি সম্পন্ন হলে, আপনি Kubernetes Workloads পৃষ্ঠায় jenkins-integration-samples-gke নামে দুটি আইটেম পাবেন, প্রতিটি প্রোড অথবা টেস্টিং ক্লাস্টারের সাথে সম্পর্কিত। স্ট্যাটাসে OK লেখা থাকবে:

bdec6b1753d1ba07.png সম্পর্কে

নিম্নলিখিত gcloud কমান্ড ব্যবহার করে আমরা দেখতে পাব যে আমরা আমাদের পাইপলাইনের সাথে সম্পর্কিত একটি কন্টেইনার ছবি Google Container Registry-এ আপলোড করেছি:

gcloud container images list

আপনার ব্রাউজারে কাজের চাপ দেখতে, প্রোড ক্লাস্টারের শংসাপত্রগুলি পান:

gcloud container clusters get-credentials prod --zone us-east1-d --project ${GOOGLE_CLOUD_PROJECT}

এবং আপনার শেলের পোর্ট 8081 থেকে আপনার ওয়ার্কলোডের পোর্ট 8080 এ একটি পোর্ট ফরোয়ার্ড সেট আপ করতে নিম্নলিখিতটি চালান:

export POD_NAME=$(kubectl get pods -o jsonpath="{.items[0].metadata.name}") &&
kubectl port-forward $POD_NAME 8081:8080 >> /dev/null &

ক্লাউড শেলের উপরে, ওয়েব প্রিভিউ আইকনে ক্লিক করুন এবং 'পোর্ট 8081-এ প্রিভিউ' নির্বাচন করুন।

1b19b5b56f1bae7.png সম্পর্কে

e80e995e71763bb2.png

৮. পরিষ্কার-পরিচ্ছন্নতা

আমরা কুবারনেটসে জেনকিন্স এবং একটি নমুনা মাল্টিব্রাঞ্চ পাইপলাইন কীভাবে স্থাপন করতে হয় তা অন্বেষণ করেছি। এখন আমাদের তৈরি করা যেকোনো সম্পদ থেকে আমাদের প্রকল্প পরিষ্কার করার সময়।

প্রকল্পটি মুছুন

আপনি যদি চান, তাহলে পুরো প্রকল্পটি মুছে ফেলতে পারেন। 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>

9. অভিনন্দন!

বাহ! তুমি পেরেছো। তুমি শিখেছো কিভাবে GKE তে জেনকিন্স মোতায়েন করতে হয় এবং Kubernetes ক্লাস্টারগুলিতে কাজ পাঠাতে হয়।

আমরা যা কভার করেছি

  • আমরা একটি Kubernetes ক্লাস্টার স্থাপন করেছি এবং জেনকিন্স ইনস্টল করার জন্য Helm ব্যবহার করেছি
  • আমরা GKE প্লাগইন ইনস্টল এবং কনফিগার করেছি যাতে জেনকিন্স কুবারনেটস ক্লাস্টারে বিল্ড আর্টিফ্যাক্ট স্থাপন করতে পারে।
  • আমরা জেনকিন্সকে একটি মাল্টিব্রাঞ্চ পাইপলাইন স্থাপনের জন্য কনফিগার করেছি যা GKE ক্লাস্টারগুলিতে কাজ প্রেরণ করে।