Jenkins คืออะไร และวิธีติดตั้งบน Cloud Server
Jenkins คือเซิร์ฟเวอร์อัตโนมัติที่ใช้ทำ CI/CD มายาวนาน จุดเด่นคือระบบปลั๊กอินกว่าหนึ่งพันตัวที่เชื่อมกับเครื่องมือแทบทุกชนิดในสายงานพัฒนา
- หมวดหมู่
- DevOps และ CI/CD
- ติดตั้งบนเซิร์ฟเวอร์เองได้
- ได้
- สเปกเริ่มต้นที่แนะนำ
- 2 vCPU · RAM 4 GB
- ไลเซนส์
- MIT (โอเพนซอร์ส)
- เว็บทางการ
- เปิดเว็บไซต์
- ISO/IEC 27001
- ISO 22301
- ISO 20000-1
- CSA-STAR
Data Center ในไทย มาตรฐาน TIA-942 Tier 3+ ข้อมูลอยู่ในประเทศไทย
Jenkins คืออะไร
Jenkins ทำหน้าที่รันงานอัตโนมัติเมื่อมีเหตุการณ์เกิดขึ้น เช่น เมื่อมีการ Push โค้ดใหม่ ให้ดึงโค้ดมาบิลด์ รันชุดทดสอบ และนำขึ้นเซิร์ฟเวอร์ตามขั้นตอนที่เขียนไว้ในไฟล์ Jenkinsfile
ความได้เปรียบของ Jenkins คือความยืดหยุ่นและปลั๊กอินจำนวนมหาศาล ซึ่งทำให้ต่อกับระบบเดิมขององค์กรได้แทบทุกอย่าง ตั้งแต่เซิร์ฟเวอร์เก่าที่ใช้ FTP ไปจนถึง Kubernetes
ข้อแลกเปลี่ยนคือหน้าตาที่ดูเก่ากว่าเครื่องมือรุ่นใหม่ และต้องดูแลปลั๊กอินให้อัปเดตอยู่เสมอ เพราะช่องโหว่ส่วนใหญ่ของ Jenkins มาจากปลั๊กอินที่ไม่ได้อัปเดต
ความสามารถเด่นของ Jenkins
Pipeline เป็นโค้ด
เขียนขั้นตอนทั้งหมดไว้ในไฟล์ Jenkinsfile ที่เก็บคู่กับซอร์สโค้ด ตรวจสอบย้อนหลังได้
ปลั๊กอินกว่าหนึ่งพันตัว
เชื่อมกับ Git, Docker, Kubernetes, ระบบแจ้งเตือน และเครื่องมือทดสอบได้แทบทุกชนิด
กระจายงานไปหลาย Agent
รันงานบิลด์บนเครื่องอื่นเพื่อไม่ให้เครื่องหลักรับภาระทั้งหมด
รันงานตามตารางได้
ใช้เป็นตัวจัดการงานอัตโนมัติทั่วไป ไม่จำกัดแค่งานบิลด์
ใช้ Jenkins ทำอะไรได้บ้าง
- บิลด์และทดสอบโค้ดอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลง
- นำแอปขึ้นเซิร์ฟเวอร์ตามขั้นตอนที่กำหนดโดยไม่ต้องทำมือ
- องค์กรที่มีระบบเดิมหลากหลายและต้องการตัวกลางที่เชื่อมได้ทุกอย่าง
- งานประจำที่ต้องรันตามตาราง เช่น สร้างรายงานหรือซิงก์ข้อมูล
สเปก Cloud Server ที่แนะนำ
| ระดับการใช้งาน | vCPU | RAM | Disk |
|---|---|---|---|
| เริ่มต้นทีมเล็กที่มี Pipeline ไม่กี่ตัว | 2 vCPU | 4 GB | NVMe 60 GB |
| แนะนำใช้งานจริงพร้อม Agent แยกหนึ่งถึงสองเครื่อง | 4 vCPU | 8 GB | NVMe 150 GB |
| ระบบใหญ่หลายทีมที่รัน Pipeline พร้อมกันจำนวนมาก | 8 vCPU ขึ้นไป | 16 GB ขึ้นไป | NVMe 300 GB ขึ้นไป |
ดูราคาตามสเปกได้ที่ ราคา Cloud Compute หรือให้ทีมงานช่วยประเมินสเปกจากปริมาณผู้ใช้จริงของคุณ
วิธีติดตั้ง Jenkins บน Cloud Server ของ THAI DATA CLOUD
ขั้นตอนด้านล่างใช้กับ Cloud Server ที่เพิ่งสร้างใหม่จากหน้าจัดการของ THAI DATA CLOUD ได้ทันที ถ้าไม่สะดวกทำเอง ทีมวิศวกรของเราติดตั้งและตั้งค่าให้ฟรีสำหรับลูกค้า Cloud Server
สิ่งที่ต้องเตรียม
- Java 17 หรือ 21 ตามที่ Jenkins รุ่นนั้นรองรับ
- Ubuntu Server 24.04 LTS หรือ Rocky Linux 9
- พื้นที่ดิสก์เผื่อสำหรับ Workspace และ Artifact ที่สะสมเร็วมาก
ทดสอบบน Ubuntu Server 24.04 LTS
- 1
ติดตั้ง Java
sudo apt update sudo apt -y install fontconfig openjdk-21-jre - 2
เพิ่มที่เก็บแพ็กเกจของ Jenkins
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \ https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | \ sudo tee /etc/apt/sources.list.d/jenkins.list - 3
ติดตั้งและเปิดบริการ
sudo apt update sudo apt -y install jenkins sudo systemctl enable --now jenkins - 4
ปลดล็อกครั้งแรก
เปิดหน้าเว็บที่พอร์ต 8080 แล้วกรอกรหัสจากไฟล์นี้ จากนั้นเลือกติดตั้งปลั๊กอินที่แนะนำ
sudo cat /var/lib/jenkins/secrets/initialAdminPassword - 5
วาง Reverse Proxy และ SSL
ตั้ง Nginx รับโดเมนที่พอร์ต 443 แล้วส่งต่อไปที่ 127.0.0.1:8080 เพื่อไม่ต้องเปิดพอร์ต 8080 สู่อินเทอร์เน็ต
location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } - 6
ตั้งงานล้าง Workspace เก่า
กำหนดใน Pipeline ให้เก็บผลบิลด์ย้อนหลังเท่าที่จำเป็น เพราะดิสก์เต็มคือสาเหตุที่ Jenkins ล่มบ่อยที่สุด
พอร์ตที่ต้องเปิดบน Firewall
| พอร์ต | โปรโตคอล | ใช้ทำอะไร |
|---|---|---|
| 8080 | TCP | หน้าเว็บ Jenkins (ให้เข้าผ่าน Reverse Proxy แทนการเปิดตรง) |
| 443 | TCP | HTTPS ผ่าน Reverse Proxy |
| 50000 | TCP | การเชื่อมต่อของ Agent (เปิดเฉพาะวงภายใน) |
สิ่งที่ควรทำต่อหลังติดตั้งเสร็จ
- อัปเดต Jenkins และปลั๊กอินสม่ำเสมอ เพราะช่องโหว่ส่วนใหญ่มาจากปลั๊กอินเก่า
- ปิดการสมัครสมาชิกเองและเชื่อมกับระบบยืนยันตัวตนขององค์กร
- ใช้ระบบสิทธิ์แบบ Matrix เพื่อแยกว่าใครแก้ Pipeline ใดได้
- เก็บรหัสผ่านและคีย์ในระบบ Credentials ของ Jenkins ไม่ฝังในสคริปต์
- ไม่รันงานบิลด์บนเครื่องหลัก ให้ใช้ Agent แยกเพื่อลดความเสี่ยงและกระจายภาระ
ทำไมควรรัน Jenkins บน Cloud Server ของ THAI DATA CLOUD
Data Center ในประเทศไทย มาตรฐาน ISO/IEC 27001 และ ISO 22301 พร้อมทีมวิศวกรคนไทยดูแลตลอด 24 ชั่วโมง
สร้างเครื่อง Agent เพิ่มบน Cloud Server ในช่วงที่งานบิลด์เยอะ แล้วลบทิ้งเมื่อไม่ใช้ ช่วยคุมค่าใช้จ่าย
ค่าใช้จ่ายคงที่ต่อเดือน ต่างจากบริการ CI บนคลาวด์ที่คิดตามนาทีและควบคุมยากเมื่อทีมโต
ซอร์สโค้ดและ Artifact อยู่ในไทย เหมาะกับองค์กรที่มีข้อกำหนดเรื่องข้อมูล
คำถามที่พบบ่อยเกี่ยวกับ Jenkins
Jenkins ยังคุ้มที่จะใช้ไหมเมื่อเทียบกับ GitLab CI
คุ้มเมื่อองค์กรมีระบบเดิมหลากหลายที่ต้องเชื่อม หรือมี Pipeline ที่เขียนไว้แล้วจำนวนมาก แต่ถ้าเริ่มใหม่และใช้ GitLab เป็นที่เก็บโค้ดอยู่แล้ว GitLab CI จะตั้งค่าง่ายกว่าและดูแลน้อยกว่า
ทำไม Jenkins ช้าลงเรื่อย ๆ
สาเหตุที่พบบ่อยคือประวัติการบิลด์และ Artifact สะสมจนดิสก์เกือบเต็ม และการรันงานทั้งหมดบนเครื่องหลัก แก้โดยตั้งนโยบายเก็บผลบิลด์ย้อนหลังและย้ายงานไปรันบน Agent
ปลอดภัยพอที่จะเปิดให้เข้าจากภายนอกไหม
ควรเปิดผ่าน Reverse Proxy พร้อม HTTPS และจำกัดไอพีหรือบังคับเข้าผ่าน VPN เพราะ Jenkins มีสิทธิ์ Deploy ไปยังระบบจริง การถูกยึดบัญชีจึงกระทบทั้งระบบ
ทางเลือกอื่นที่คล้ายกับ Jenkins
แอปอื่นในหมวด DevOps และ CI/CD
บริการของ THAI DATA CLOUD ที่เกี่ยวข้อง
ให้เราติดตั้ง Jenkins ให้ฟรี บน Cloud Server ในไทย
แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด