ไปป์ไลน์หลายสาขาของ Jenkins ใน GKE

1. ภาพรวม

Jenkins เป็นหนึ่งในโซลูชันการรวมอย่างต่อเนื่องที่ได้รับความนิยมมากที่สุด โดยใช้เพื่อทำให้ส่วนที่สำคัญซึ่งไม่ใช่ส่วนที่มนุษย์ทำในกระบวนการพัฒนาซอฟต์แวร์เป็นแบบอัตโนมัติ การติดตั้งใช้งาน Jenkins กับ Kubernetes ใน Google Cloud และการใช้ปลั๊กอิน GKE ช่วยให้เราปรับขนาดเครื่องมือเรียกใช้บิลด์ได้อย่างรวดเร็วและอัตโนมัติเมื่อจำเป็น เมื่อใช้ร่วมกับ Cloud Storage เราจะสร้างและทดสอบแอปพลิเคชันได้อย่างง่ายดาย

สิ่งที่คุณต้องทำ

  • ติดตั้งใช้งาน Jenkins ในคลัสเตอร์ Kubernetes
  • ทำให้ใช้งานได้และกำหนดค่าปลั๊กอิน Jenkins GKE เพื่อให้ Jenkins สร้างและทำลายพ็อดเป็นโหนดตัวดำเนินการได้
  • สร้างและทดสอบแอปพลิเคชัน SpringBoot ตัวอย่าง
  • สร้างและเผยแพร่คอนเทนเนอร์ไปยัง Google Container Registry
  • ทำให้แอปพลิเคชันตัวอย่างใช้งานได้ในสภาพแวดล้อม GKE สำหรับการทดลองใช้และเวอร์ชันที่ใช้งานจริง

สิ่งที่คุณต้องมี

  • โปรเจ็กต์ Google Cloud ที่ตั้งค่าการเรียกเก็บเงินแล้ว หากยังไม่มีบัญชีดังกล่าว คุณจะต้องสร้างบัญชี

2. การเริ่มตั้งค่า

คุณสามารถเรียกใช้ Codelab นี้บน Google Cloud Platform ได้อย่างสมบูรณ์โดยไม่ต้องติดตั้งหรือกำหนดค่าในเครื่อง

Cloud Shell

ตลอด Codelab นี้ เราจะจัดสรรและจัดการทรัพยากรและบริการต่างๆ ในระบบคลาวด์โดยใช้บรรทัดคำสั่งผ่าน Cloud Shell

เปิดใช้ API

API ที่เราจะต้องเปิดใช้ในโปรเจ็กต์มีดังนี้

  • Compute Engine API - สร้างและเรียกใช้เครื่องเสมือน
  • Kubernetes Engine API - สร้างและจัดการแอปพลิเคชันที่ใช้คอนเทนเนอร์
  • Cloud Build API - แพลตฟอร์มการรวมอย่างต่อเนื่องและการส่งมอบอย่างต่อเนื่องของ Google Cloud
  • Service Management API - ช่วยให้ผู้ให้บริการเผยแพร่บริการใน Google Cloud Platform ได้
  • Cloud Resource Manager API - สร้าง อ่าน และอัปเดตข้อมูลเมตาสำหรับคอนเทนเนอร์ทรัพยากร Google Cloud

เปิดใช้ API ที่จำเป็นด้วยคำสั่ง gcloud ต่อไปนี้

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. การสร้างคลัสเตอร์ Kubernetes

สร้างคลัสเตอร์

จากนั้นเราจะสร้างคลัสเตอร์ GKE ที่จะโฮสต์ระบบ Jenkins รวมถึงพ็อดที่จะส่งเป็นโหนด Worker ขอบเขตเพิ่มเติมที่ระบุโดยแฟล็ก --scopes จะช่วยให้ Jenkins เข้าถึง Cloud Source Repositories และ Container Registry ได้ ใน Cloud Console ให้เรียกใช้คำสั่งต่อไปนี้

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

เอาต์พุตควรมี RUNNING ในคอลัมน์ STATUS ดังนี้

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. ติดตั้งใช้งาน Jenkins ด้วย Helm

ติดตั้ง Helm

เราจะใช้ Helm ซึ่งเป็นเครื่องมือจัดการแพ็กเกจแอปพลิเคชันสำหรับ Kubernetes เพื่อติดตั้ง Jenkins ในคลัสเตอร์ หากต้องการเริ่มต้นใช้งาน ให้ดาวน์โหลดโปรเจ็กต์ที่มีไฟล์ Manifest ของ 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)

เชื่อมต่อกับคลัสเตอร์ Jenkins โดยรับข้อมูลเข้าสู่ระบบของคลัสเตอร์

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

และดาวน์โหลดไบนารี Helm ไปยัง Cloud Console

wget https://storage.googleapis.com/kubernetes-helm/helm-v2.14.1-linux-amd64.tar.gz

คลายซิปไฟล์แล้วคัดลอกไฟล์ Helm ที่รวมไว้ไปยังไดเรกทอรีการทำงานปัจจุบัน

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

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"}

ติดตั้ง Jenkins

ตอนนี้เราได้ติดตั้ง Helm ในคลัสเตอร์แล้ว และพร้อมที่จะติดตั้ง Jenkins

./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

ยืนยันว่าได้สร้างบริการ Jenkins อย่างถูกต้อง

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

การติดตั้ง Jenkins จะใช้ปลั๊กอิน Kubernetes เพื่อสร้างเอเจนต์บิลเดอร์ Jenkins Master จะเปิดใช้โดยอัตโนมัติตามความจำเป็น เมื่อดำเนินการเสร็จแล้ว ระบบจะสิ้นสุดการทำงานโดยอัตโนมัติและเพิ่มทรัพยากรกลับไปยังพูลทรัพยากรของคลัสเตอร์

เชื่อมต่อกับ Jenkins

Jenkins ทำงานในคลัสเตอร์ของเรา แต่หากต้องการเข้าถึง UI ให้ตั้งค่าการส่งต่อพอร์ตจาก Cloud Shell ดังนี้

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

ที่ด้านบนของ Cloud Shell ให้คลิกไอคอนแสดงตัวอย่างเว็บ 7ddf5a65fd556dd6.png แล้วเลือก "แสดงตัวอย่างบนพอร์ต 8080"

1d614c831a621cff.png

เราควรเห็นหน้าจอเข้าสู่ระบบสำหรับ Jenkins ซึ่งเราสามารถป้อน admin สำหรับชื่อผู้ใช้และรหัสผ่านที่ได้จากขั้นตอนก่อนหน้า

9cba23e856cbc84f.png

เมื่อคลิกลงชื่อเข้าใช้ ระบบจะนำเราไปยังหน้าหลักของ Jenkins

9261f3e914829137.png

5. ติดตั้งและกำหนดค่าปลั๊กอิน GKE

ปลั๊กอิน Google Kubernetes Engine ช่วยให้เราเผยแพร่การติดตั้งใช้งานที่สร้างขึ้นภายใน Jenkins ไปยังคลัสเตอร์ Kubernetes ที่ทำงานภายใน GKE ได้ คุณต้องทำการกำหนดค่าบางอย่างด้วยสิทธิ์ IAM ในโปรเจ็กต์ เราจะนำการกำหนดค่านั้นไปใช้งานโดยใช้ Terraform

ก่อนอื่น ให้ดาวน์โหลดโปรเจ็กต์ปลั๊กอิน GKE โดยทำดังนี้

git clone https://github.com/jenkinsci/google-kubernetes-engine-plugin.git ~/google-kubernetes-engine-plugin

การกำหนดค่าสิทธิ์ IAM โดยอัตโนมัติ

เปลี่ยนไดเรกทอรีการทำงานปัจจุบันเป็นไดเรกทอรี rbac ของโปรเจ็กต์ GKE ที่เราโคลนไว้ก่อนหน้านี้

cd ~/google-kubernetes-engine-plugin/docs/rbac/

gcp-sa-setup.tf คือไฟล์การกำหนดค่า Terraform ที่จะสร้างบทบาท IAM ของ GCP ที่กำหนดเองพร้อมสิทธิ์ที่จำกัด รวมถึงบัญชีบริการ GCP เพื่อมอบบทบาทนั้นให้ ไฟล์ต้องมีค่าสำหรับตัวแปรโปรเจ็กต์ ภูมิภาค และชื่อบัญชีบริการ เราจะระบุค่าเหล่านั้นโดยการประกาศตัวแปรสภาพแวดล้อมต่อไปนี้ก่อน

export TF_VAR_project=${GOOGLE_CLOUD_PROJECT}
export TF_VAR_region=us-east1-d
export TF_VAR_sa_name=kaniko-role

เริ่มต้น Terraform สร้างแผน และใช้แผนดังกล่าว

terraform init
terraform plan -out /tmp/tf.plan
terraform apply /tmp/tf.plan && rm /tmp/tf.plan

บัญชีบริการจะต้องมีสิทธิ์ของผู้ดูแลระบบพื้นที่เก็บข้อมูลเพื่อบันทึกลงใน Bucket ของ Cloud Storage

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'

ตอนนี้เราสามารถใช้ Helm เพื่อตั้งค่าสิทธิ์ของคลัสเตอร์สำหรับปลั๊กอิน GKE โดยใช้โปรแกรมติดตั้งหุ่นยนต์ GKE ได้แล้ว เปลี่ยนไดเรกทอรีที่ใช้งานอยู่เป็นไดเรกทอรี Helm ของโปรเจ็กต์ GKE โดยทำดังนี้

cd ~/google-kubernetes-engine-plugin/docs/helm/

และติดตั้งโดยใช้แผนภูมิ Helm ที่ให้ไว้

export TARGET_NAMESPACE=kube-system && \
envsubst < gke-robot-deployer/values.yaml | helm install ./gke-robot-deployer --name gke-robot-deployer -f -

6. กำหนดค่า Jenkins

คีย์บัญชีบริการ

เพื่อให้บัญชีบริการทำงานได้อย่างถูกต้อง เราจะต้องสร้างไฟล์คีย์ส่วนตัวและเพิ่มเป็นข้อมูลลับของ Kubernetes ก่อนอื่นให้สร้างไฟล์ด้วยคำสั่ง 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 

ดาวน์โหลดไฟล์ JSON ลงในดิสก์ในเครื่องโดยไปที่รายการดาวน์โหลดไฟล์จากเมนู 3 จุดของ Cloud Shell

c40378e72013b843.png

ป้อนเส้นทางไฟล์ /tmp/kaniko-secret.json แล้วคลิกดาวน์โหลด

กลับไปที่หน้า Jenkins ในแผงด้านซ้าย ให้คลิกข้อมูลเข้าสู่ระบบ แล้วคลิกระบบ

6c140f7e6bb82f8.png

3b874912cdc8019b.png

ในส่วนของหน้าเว็บที่ชื่อระบบ ให้คลิก "ข้อมูลเข้าสู่ระบบส่วนกลาง" แล้วคลิก "เพิ่มข้อมูลเข้าสู่ระบบ" ทางด้านซ้าย

4350c0e68561119b.png

3d3526551cdae8b.png

ในเมนูแบบเลื่อนลง "ประเภท" ให้เลือกบัญชีบริการของ Google จากคีย์ส่วนตัว ป้อน "kaniko-role" เป็นชื่อ จากนั้นอัปโหลดคีย์ JSON ที่สร้างในขั้นตอนก่อนหน้า แล้วคลิก "ตกลง"

b0502213408e730e.png

ตัวแปรสภาพแวดล้อม

เราจะต้องกำหนดตัวแปรสภาพแวดล้อมบางอย่างใน Jenkins ก่อนที่จะสร้างไปป์ไลน์แบบหลายสาขา ดังนี้

  • JENK_INT_IT_ZONE - โซนของคลัสเตอร์ Kubernetes ในกรณีของเรา us-east1-d
  • JENK_INT_IT_PROJECT_ID - หมายถึงรหัสโปรเจ็กต์ GCP ที่โฮสต์อินสแตนซ์ Jenkins นี้
  • JENK_INT_IT_STAGING - ชื่อคลัสเตอร์ "การจัดเตรียม" ของเรา ซึ่งมีค่าเป็น staging เพื่อวัตถุประสงค์ในการสาธิต
  • JENK_INT_IT_PROD - ชื่อคลัสเตอร์ "prod" ของเรา เพื่อวัตถุประสงค์ในการสาธิต เราจะใช้ prod
  • JENK_INT_IT_BUCKET - Bucket ของ Google Cloud Storage ที่สร้างในขั้นตอนก่อนหน้า
  • JENK_INT_IT_CRED_ID - หมายถึงข้อมูลเข้าสู่ระบบที่สร้างขึ้นโดยใช้ JSON ในขั้นตอนก่อนหน้า ค่าควรตรงกับชื่อที่เราตั้งให้ ซึ่งก็คือ kaniko-role

หากต้องการเพิ่ม ให้ไปที่ Manage Jenkins แล้วทำดังนี้

d54f279190a07878.png

จากนั้นกำหนดค่าระบบ:

ce79d218b2799640.png

จะมีส่วนที่ชื่อพร็อพเพอร์ตี้ส่วนกลาง และเมื่อเราเลือกช่องตัวแปรสภาพแวดล้อม เราจะเห็นปุ่มเพิ่มที่เราจะคลิกเพื่อเพิ่มตัวแปรด้านบนเป็นคู่คีย์-ค่า

81aa222a2b17b2cc.png

คลิกปุ่มบันทึกที่ด้านล่างของหน้าเพื่อใช้การเปลี่ยนแปลง

7. ตั้งค่าไปป์ไลน์

ใน Jenkins ให้คลิก "รายการใหม่"

8d1270ce4d7b6a8a.png

ป้อน "jenkins-integration-sample" เป็นชื่อ เลือก "Multibranch Pipeline" เป็นประเภทโปรเจ็กต์ แล้วคลิก OK

eb071ecfbb4d775b.png

ระบบจะเปลี่ยนเส้นทางเราไปยังหน้าการกำหนดค่าไปป์ไลน์ ในส่วนแหล่งที่มาของสาขา ให้ป้อน https://github.com/GoogleCloudPlatform/jenkins-integration-samples.git เป็นที่เก็บโปรเจ็กต์ ในส่วนการกำหนดค่าบิลด์ ให้ป้อน "gke/Jenkinsfile" เป็นเส้นทางสคริปต์

5135bd6b0374508c.png

คลิกบันทึกเพื่อใช้การตั้งค่าเหล่านี้ เมื่อบันทึกแล้ว Jenkins จะเริ่มสแกนที่เก็บและสร้างบิลด์สำหรับแต่ละสาขา เมื่อดำเนินการไปเรื่อยๆ คุณจะเห็นพ็อดที่สร้าง เรียกใช้ และทำลายเมื่อการสร้างคืบหน้าในหน้าภาระงานของ Kubernetes

เมื่อบิลด์เสร็จสมบูรณ์ คุณจะเห็นรายการ 2 รายการในหน้าภาระงาน Kubernetes ชื่อ jenkins-integration-samples-gke ซึ่งแต่ละรายการจะสอดคล้องกับคลัสเตอร์ prod หรือคลัสเตอร์ทดสอบ สถานะจะแสดงเป็น "ตกลง" ดังนี้

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 &

ที่ด้านบนของ Cloud Shell ให้คลิกไอคอนตัวอย่างเว็บ แล้วเลือก "แสดงตัวอย่างบนพอร์ต 8081"

1b19b5b56f1bae7.png

e80e995e71763bb2.png

8. ล้างข้อมูล

เราได้สำรวจวิธีทำให้ Jenkins และไปป์ไลน์แบบหลายสาขาตัวอย่างใช้งานได้ใน Kubernetes ตอนนี้ก็ถึงเวลาล้างข้อมูลโปรเจ็กต์ของเราจากทรัพยากรที่เราสร้างขึ้น

ลบโปรเจ็กต์

คุณจะลบทั้งโปรเจ็กต์ก็ได้หากต้องการ ในคอนโซล GCP ให้ไปที่หน้า Cloud Resource Manager

ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่เราใช้ทำงานอยู่ แล้วคลิกลบ ระบบจะแจ้งให้คุณพิมพ์รหัสโปรเจ็กต์ ป้อนรหัสแล้วคลิกปิด

หรือจะลบทั้งโปรเจ็กต์โดยตรงจาก Cloud Shell ด้วย gcloud ก็ได้

gcloud projects delete $GOOGLE_CLOUD_PROJECT

หากต้องการลบคอมโพเนนต์ที่เรียกเก็บเงินได้ต่างๆ ทีละรายการ ให้ไปที่ส่วนถัดไป

คลัสเตอร์ Kubernetes

ลบทั้งคลัสเตอร์ Kubernetes ด้วย gcloud โดยทำดังนี้

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

ที่เก็บข้อมูล

นำไฟล์ที่อัปโหลดทั้งหมดออกและลบบัคเก็ตของเราด้วย gsutil โดยทำดังนี้

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

อิมเมจ Google Container Registry

เราจะลบอิมเมจ Google Container Registry โดยใช้ข้อมูลสรุปของอิมเมจ ก่อนอื่น ให้เรียกข้อมูลสรุปด้วยคำสั่งต่อไปนี้

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. ยินดีด้วย

แจ่มแจ๋ว! คุณทำได้แล้ว คุณได้เรียนรู้วิธีการทำให้ใช้งานได้ Jenkins ใน GKE และส่งงานไปยังคลัสเตอร์ Kubernetes แล้ว

สิ่งที่เราได้พูดถึงไปแล้ว

  • เราได้ติดตั้งคลัสเตอร์ Kubernetes และใช้ Helm เพื่อติดตั้ง Jenkins
  • เราได้ติดตั้งและกำหนดค่าปลั๊กอิน GKE เพื่อให้ Jenkins สามารถทำให้ใช้งานได้อาร์ติแฟกต์บิลด์ไปยังคลัสเตอร์ Kubernetes ได้
  • เรากำหนดค่า Jenkins เพื่อตั้งค่าไปป์ไลน์แบบหลายสาขาที่ส่งงานไปยังคลัสเตอร์ GKE