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

1. ওভারভিউ

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

আপনি কি করবেন

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

আপনি কি প্রয়োজন হবে

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

2. সেট আপ করা হচ্ছে

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

মেঘের শেল

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

এপিআই সক্ষম করুন

আমাদের প্রকল্পে সক্ষম করার জন্য আমাদের যে API গুলি প্রয়োজন তা এখানে রয়েছে:

  • Compute Engine API - ভার্চুয়াল মেশিন তৈরি করে এবং চালায়
  • Kubernetes Engine API - কন্টেইনার-ভিত্তিক অ্যাপ্লিকেশন তৈরি করে এবং পরিচালনা করে
  • ক্লাউড বিল্ড এপিআই - গুগল ক্লাউডের ক্রমাগত ইন্টিগ্রেশন এবং ক্রমাগত ডেলিভারি প্ল্যাটফর্ম
  • সার্ভিস ম্যানেজমেন্ট API - পরিষেবা প্রযোজকদের Google ক্লাউড প্ল্যাটফর্মে পরিষেবা প্রকাশ করার অনুমতি দেয়
  • ক্লাউড রিসোর্স ম্যানেজার API - Google ক্লাউড রিসোর্স কন্টেনারগুলির জন্য মেটাডেটা তৈরি করে, পড়ে এবং আপডেট করে

নিম্নলিখিত 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/ 

3. কুবারনেটস ক্লাস্টার তৈরি করা

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

এর পরে, আমরা একটি 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

4. হেলমের সাথে জেনকিনস স্থাপন করুন

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

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

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 init --service-account=tiller && \
./helm repo update

28b45298e1e82748.png যাচাই করুন

নিশ্চিত করুন যে Helm ./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

আউটপুটটি আমাদের জেনকিন্স পডকে একটি চলমান স্থিতি সহ দেখাতে হবে:

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

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

1d614c831a621cff.png

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

9cba23e856cbc84f.png

যখন আমরা সাইন ইন ক্লিক করি তখন আমাদের জেনকিন্সের মূল পৃষ্ঠায় নির্দেশিত করা উচিত।

9261f3e914829137.png

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

Google Kubernetes Engine Plugin আমাদেরকে GKE-এর মধ্যে চলমান আমাদের Kubernetes ক্লাস্টারগুলিতে Jenkins-এর মধ্যে নির্মিত স্থাপনা প্রকাশ করতে দেয়। কিছু কনফিগারেশন আছে যা আপনার প্রজেক্টে 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 প্রকল্পের হেলম ডিরেক্টরিতে পরিবর্তন করুন:

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 -

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

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

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

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

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

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

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

c40378e72013b843.png

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

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

6c140f7e6bb82f8.png

3b874912cdc8019b.png

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

4350c0e68561119b.png

3d3526551cdae8b.png

কাইন্ড ড্রপডাউনে, ব্যক্তিগত কী থেকে Google পরিষেবা অ্যাকাউন্ট নির্বাচন করুন। নাম হিসাবে 'কানিকো-রোল' লিখুন, তারপর আপনার JSON কী আপলোড করুন যা পূর্ববর্তী ধাপে তৈরি হয়েছিল এবং ঠিক আছে ক্লিক করুন।

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 - Google ক্লাউড স্টোরেজ বাকেটটি আগের ধাপে তৈরি করা হয়েছে
  • JENK_INT_IT_CRED_ID - পূর্ববর্তী ধাপে json ব্যবহার করে তৈরি করা শংসাপত্রকে বোঝায়। kaniko-role আমরা যে নাম দিয়েছি তার সাথে মান মিলতে হবে

এগুলি যোগ করতে, Jenkins পরিচালনায় যান:

d54f279190a07878.png

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

ce79d218b2799640.png

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

81aa222a2b17b2cc.png

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

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

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

8d1270ce4d7b6a8a.png

নামের জন্য 'জেনকিন্স-ইনটিগ্রেশন-নমুনা' লিখুন এবং প্রকল্পের ধরন হিসাবে 'মাল্টিব্র্যাঞ্চ পাইপলাইন' নির্বাচন করুন এবং ঠিক আছে ক্লিক করুন:

eb071ecfbb4d775b.png

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

5135bd6b0374508c.png

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

বিল্ডগুলি শেষ হয়ে গেলে, আপনি কুবারনেটস ওয়ার্কলোডস পৃষ্ঠায় জেনকিন্স-ইনটিগ্রেশন-স্যাম্পলস-জিকে নামে দুটি আইটেম পাবেন, প্রতিটি প্রোড বা টেস্টিং ক্লাস্টারের সাথে সম্পর্কিত। স্ট্যাটাসটি ঠিক আছে পড়বে:

bdec6b1753d1ba07.png

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

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

8. পরিষ্কার করা

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

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

আপনি যদি চান, আপনি সম্পূর্ণ প্রকল্প মুছে ফেলতে পারেন. GCP কনসোলে, ক্লাউড রিসোর্স ম্যানেজার পৃষ্ঠায় যান:

প্রকল্প তালিকায়, আমরা যে প্রকল্পে কাজ করছি সেটি নির্বাচন করুন এবং মুছুন ক্লিক করুন। আপনাকে প্রজেক্ট আইডি টাইপ করতে বলা হবে। এটি লিখুন এবং শাট ডাউন ক্লিক করুন।

বিকল্পভাবে, আপনি gcloud দিয়ে সরাসরি ক্লাউড শেল থেকে সম্পূর্ণ প্রকল্প মুছে ফেলতে পারেন:

gcloud projects delete $GOOGLE_CLOUD_PROJECT

আপনি যদি বিভিন্ন বিলযোগ্য উপাদান একে একে মুছে ফেলতে পছন্দ করেন তবে পরবর্তী বিভাগে যান।

কুবারনেটস ক্লাস্টার

জিক্লাউড সহ সমগ্র কুবারনেটস ক্লাস্টার মুছুন:

gcloud container clusters delete jenkins-cd --zone=us-east1-d

স্টোরেজ বালতি

আপলোড করা সমস্ত ফাইল সরান এবং gsutil দিয়ে আমাদের বালতি মুছুন:

gsutil rm -r gs://${GOOGLE_CLOUD_PROJECT}-jenkins-test-bucket

গুগল কন্টেইনার রেজিস্ট্রি ছবি

আমরা ইমেজ ডাইজেস্ট ব্যবহার করে Google কন্টেইনার রেজিস্ট্রি ছবি মুছে ফেলব। প্রথমে, নিম্নলিখিত কমান্ডের সাহায্যে ডাইজেস্টগুলি পুনরুদ্ধার করুন:

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 প্লাগইন ইনস্টল এবং কনফিগার করেছি
  • আমরা জেনকিন্সকে একটি মাল্টিব্র্যাঞ্চ পাইপলাইন সেট আপ করতে কনফিগার করেছি যা GKE ক্লাস্টারে কাজ প্রেরণ করে