วิทยากร : พิชญา แสนคำ
บุคลากรสังกัดงานระบบสารสนเทศ
กองบริการเทคโนโลยีสารสนเทศและการสื่อสาร
มหาวิทยาลัยนเรศวร
รายละเอียดหลักสูตร
ทฤษฎี : Continuous Integration/Continuous Deployment (CI/CD) คืออะไร
ปฏิบัติ 1 : สร้างโปรเจกต์ Node.js + Express API และนำโค้ดขึ้น GitLab
ปฏิบัติ 2 : เขียน Dockerfile เพื่อแพ็กแอปพลิเคชันของเรา
ปฏิบัติ 3 : ติดตั้ง Local Kubernetes Cluster (Minikube) และ kubectl
ปฏิบัติ 4 : เขียนไฟล์ deployment.yaml และ service.yaml แบบง่ายๆ สำหรับแอปพลิเคชัน
เป้าหมาย : เพื่อพิสูจน์ว่าชิ้นส่วนทั้งหมด (แอป, Docker, K8s Config) ทำงานร่วมกันได้ก่อนเริ่มทำระบบอัตโนมัติ
ปฏิบัติ 5 :
Build Docker Image บนเครื่อง
โหลด Image เข้าไปใน Docker ของ Minikube โดยตรง (เพื่อเลี่ยงการใช้ Registry)
ใช้คำสั่ง kubectl apply เพื่อ Deploy แอปพลิเคชัน
ทดสอบเข้าถึงแอปพลิเคชันที่รันบน Kubernetes ผ่าน Service
ทฤษฎี: ทำไม CI/CD บน Cloud (GitLab.com) ถึงคุยกับ K8s บนเครื่องเราโดยตรงไม่ได้?
ปฏิบัติ 6 (ขั้นตอนสำคัญ) : ติดตั้งและลงทะเบียน GitLab Runner บนเครื่องของเราเอง
(Self-hosted Runner) เพื่อให้มันสามารถรันคำสั่ง docker และ kubectl บนเครื่องเราได้
ทฤษฎี: ออกแบบ Pipeline 2 ขั้นตอน (build -> deploy) ในไฟล์ .gitlab-ci.yml
ปฏิบัติ 7 : สร้าง .gitlab-ci.yml
• Stage build: เขียน Job ให้ทำการ Build Docker Image และ Push ไปเก็บไว้ที่ GitLab Container Registry
• Stage deploy: เขียน Job ให้ดึงไฟล์ deployment.yaml มา, ใช้คำสั่งง่ายๆ (เช่น sed) เพื่อเปลี่ยนชื่อ Image Tag ให้เป็นเวอร์ชันล่าสุด, แล้วสั่ง kubectl apply
ปฏิบัติ 8 : ทดสอบ Pipeline ทั้งระบบ
• แก้ไขโค้ดใน server.js เล็กน้อย
• git push โค้ดที่แก้ไขขึ้น GitLab
• เฝ้าดู Pipeline ทำงานอัตโนมัติตั้งแต่ Build Image ใหม่, Push to Registry, และ Deploy ลง Kubernetes จนแอปพลิเคชันอัปเดตเป็นเวอร์ชันใหม่
ความรู้พื้นฐานของผู้เข้ารับการอบรม
-
โปรแกรมที่ใช้ในการอบรม
-
เอกสารประกอบการอบรม
-
* หลักสูตรสำหรับผู้ดูแลระบบเครือข่าย และ Programmer เท่านั้น