ในปัจจุบัน องค์กรทั่วโลกเริ่มหันมาใช้การพัฒนาระบบแบบ Microservices มากขึ้น ซึ่งเครื่องมือ deploy application ที่ได้รับความนิยมมากในปัจจุบันก็คือ Kubernetes
Kubernetes (K8s) เป็นเครื่องมือ Open Source จาก Google ที่จะช่วยจัดการ Container ให้มีประสิทธิภาพสูงสุด ถ้าหากนึกภาพไม่ออก ให้ลองนึกถึงวง Orchestra ขนาดใหญ่ที่มี Conductor เป็นผู้ควบคุมวง โดย Container ก็เปรียบเสมือนนักดนตรีในวงที่มี Kubernetes เป็น Conductor นั่นเอง (Container Orchestration) ซึ่งตัว Kubernetes นี้เองที่จะช่วยให้เราสามารถ deploy application สามารถ scale application อีกทั้งสามารถบริหารจัดการทรัพยากรได้อย่างอัตโนมัติ และที่สำคัญที่สุดคือสามารถทำให้ Application ของเราทำงานได้ตลอดเวลา (5 ข้อดี Kubernetes)
พบกับ 15 เครื่องมือที่จะช่วยเพิ่มประสิทธิภาพในการใช้งาน Kubernetes ของคุณ ทำให้คุณสามารถดึงศักยภาพของ Kubernetes ได้สูงสุด โดยจะแบ่งออกเป็น 5 ประเภท ได้แก่ Monitoring, Security, Deployment, Command-Line Interface (CLI) และ Serverless Tool
Monitoring Tools
ในขณะที่กำลังรับมือกับอุปสรรคเดิม ๆ ในการ run microservices ปัญหาใหม่ ๆ ก็เข้ามาอยู่เรื่อย ๆ ซึ่งนักพัฒนาหลายคนยกให้การ monitor เป็นปัญหาที่ใหญ่มาก ๆ ในการใช้ Kubernetes ซึ่งในปัจจุบันก็มีเครื่องมือหลายตัวที่ช่วยในการ monitor ในหลายมุมไม่ว่าจะเป็น log, metric ฯลฯ บางเครื่องมือก็เก็บข้อมูล บางตัวก็เป็นการ monitor ภาพรวมของระบบ ซึ่งเราจะมาแนะนำ 3 เครื่องมือสำหรับ monitor ดังนี้
cAdvisor
cAdvisor เป็นเครื่องมือ Kubernetes แบบ Open-Source ที่พัฒนาโดย Google สำหรับ monitor การใช้งาน resource และประสิทธิภาพของ resource นั้น ๆ ซึ่งสามารถเข้ากับ container ทุก ๆ ประเภท cAdvisor สามารถตรวจจับทุก container ที่อยู่ใน server ได้อัตโนมัติ และยังสามารถรวบรวม ประมวลผล และกระจายข้อมูลที่อยู่ใน container ได้ ในขณะที่มีข้อจำกัดในเรื่องของการเก็บ metric สำหรับการ monitor ระยะยาว การ abstract container ของ cAdvisor นั้นมีพื้นฐานมากจาก lmctfy ที่มีลักษณะเป็น nested hierarchical behavior
Kubernetes Dashboard
Kubernetes Dashboard เป็นเครื่องมือที่เหมาะสำหรับ monitor cluster ขนาดไม่ใหญ่นัก มี UI ในการจัดการ Kubernetes ไม่ว่าจะเป็น discovery, load balancing, monitoring ต่าง ๆ เช่น การใช้งาน CPU และ memory กับสถานะของ workload และยังมี option หลากหลายที่สามารถ troubleshooting และเรายังสามารถดู dashboard ผ่านทางโทรศัพท์มือถือได้ด้วย
Kubelet
Kubelet เป็น Node Agent ที่ run ในแต่ละ node ของ Kubernetes cluster ซึ่งตัว Kubelet สามารถ monitor แต่ละ node ผ่าน PodSpec ซึ่งเป็น YAML หรือ JSON object ที่มีรายละเอียดของ pod ต่าง ๆ มากไปกว่านั้น Kubelet ยังสามารถบริหารจัดการ PodSpecs ผ่าน API server ได้ ในขณะที่เครื่องมืออื่นยังไม่มีฟังก์ชั่นนี้ในตอนนี้
Security Tools
ระบบความปลอดภัยของ container เป็นอะไรที่เฉพาะทางมาก ๆ ไม่เหมือนระบบ hosting อื่น ๆ ทั่วไป เพราะว่า container นั้นมี layer มาก ทำให้การรักษาความปลอดภัยต้องถูกทำในทุก ๆ layer นอกจากนั้นการรักษาความปลอดภัยนั้นจะต้องรวมไปถึง container runtime, orchestrator, และ application images ด้วย ซึ่งเครื่องมือด้านล่างจะช่วยคุณอย่างไร ไปดูกัน!
Twistlock
Twistlock เป็นระบบรักษาความปลอดภัย container แบบครบวงจร ที่มี VMS คอยสแกนส่วนต่าง ๆ ของ container ที่ vulnerable ซึ่งเครื่องมือนี้จะเน้นความปลอดภัยของ container หลัก ๆ อยู่ 2 อย่าง คือโฟกัสการสแกน container image ตลอดเวลา และโฟกัสความปลอดภัยของ container ที่ทำงานอยู่ ซึ่งก่อนที่จะเป็น cycle ได้ เราต้องทำการกำหนด behavior ของระบบก่อน หลังจากนั้นระบบถึงจะทำงานเป็นวงจรได้
Falco
Falco เป็นเครื่องมือตรวจสอบสิ่งผิดปกติที่เกิดขึ้นใน container ที่ถูกพัฒนามาจาก Sysdig Project โดย Falco จะโฟกัสไปที่ kernel system call เป็นพิเศษ การ monitor ของ Falco จะ monitor ในหลาย layer ของ container ไม่ว่าจะเป็นตัว container เอง, application, host, และ network ซึ่งเราสามารถกำหนดการตรวจสอบแต่ละ cluster แยกกันได้ อีกทั้ง Falco ยังรองรับ container runtime อีกด้วย
Aqua Security
Aqua Security เป็นเครื่องมือที่สแกน container image ก่อนที่จะ deploy โดย Aqua จะทำให้ image เป็นแบบ read-only ซึ่งยากต่อการถูกแทรกแซงจากภายนอก และทำให้ตรวจพบสิ่งผิดปกติได้ง่ายยิ่งขึ้น โดยเฉพาะในช่วง scaling และประสิทธิภาพในระหว่างการพัฒนา ซึ่งฟังก์ชั่นหลัก ๆ ของ Aqua ก็คือการรักษาความปลอดภัย multi-tenancy environment ซึ่ง Aqua จะทำการตรวจสอบ issue ต่าง ๆ ไม่ว่าจะเป็น known threat, embedded secret และ malware และ isolate ส่วน data และ access ในเวลาเดียวกัน โดยในระหว่างตรวจสอบนั้น ระบบจะทำการ isolate tenant ต่าง ๆ ตลอดเวลา
Deployment Tools
Helm
Helm เป็นเครื่องมือบริหารจัดการ Kubernetes ที่ใช้ YAML ที่เรียกว่า Charts ซึ่งถูกใช้ define, install, upgrade ตัว Kubernetes จุดเด่นของ Charts คือการที่ตัวมันเองถูกออกแบบให้สามารถถูกสร้าง และพัฒนาได้ง่าย และมี template ที่บรรจุ Kubernetes Manifest Files ไว้ ซึ่งเจ้าตัว Manifest File นี้สามารถถูกนำกลับมาใช้ใหม่ได้เรื่อย ๆ
Apollo
Apollo มีความสามารถในการจัดการ cluster ของ Kubernetes จำนวนมาก ไม่ว่าจะเป็นการเช็คสถานะการ deploy การดูสถานะของ pod การดู log ต่าง ๆ จนไปถึงการ restart pod และ revert pod กลับไปจุดใดจุดหนึ่งในหนึ่งคลิก นอกจากนั้น Permission Model ของ Apollo ยังมีความยืดหยุ่นเป็นอย่างมาก สามารถ integrate กับ buil process ที่มีอยู่แล้วได้ อีกทั้งเรายังสามารถจัดการ cluster เป็นจำนวนมากได้ ซึ่งเหมาะกับการ deploy แบบต่อเนื่อง (Continuous Deployment)
Kubespray
Kubespray เป็นเครื่องมือจัดการ Kubernetes ที่ทำงานผ่าน Ansible ซึ่งรองรับระบบ Cloud Computing ต่าง ๆ ไม่ว่าจะเป็น AWS, Google Cloud Environment, Azure และ OpenStack โดยข้อดีของ Kubespray ก็จะเหมือน ๆ กับ Ansible ซึ่งสำหรับคนที่ใช้ Ansible ได้อยู่แล้วก็จะสามารถทำการ provision และ manage ได้ในเครื่องมือเดียว โดยความสามารถเด่น ๆ ของ Kubespray ก็คือการ integration test แบบ continuous
Command-Line Interface Tools
Kubectl
Kubectl เป็นเครื่องมือ CLI ของ Kubernetes ซึ่งสนับสนุนการทำงานทุกอย่างที่เกี่ยวข้องกับตัว Kubernetes เอง ตัว Node ต่าง ๆ จะถูกตรวจพบผ่าน config file ใน $HOME directory ในส่วนของ configfile นั้น kubectl ยังรอบรับ config file อื่น ๆ ที่ไม่ใช่ของมันเองด้วย เพียงแค่เราต้องกำหนด environment variable ให้คล้ายคลึงกันก็เท่านั้น ซึ่ง command ของ kubectl นั้นคล้ายคลึงกับ Docker เป็นอย่างมาก ถ้าไม่นับความแตกต่างเพียงไม่กี่อย่างของทั้งสองเครื่องมือ ซึ่งผู้ใช้ Docker สามารถใช้ kubectl ติดต่อกับ API server ได้
kubectx / kubens
Kubectx / Kubens เป็นเครื่องมือที่เพิ่มฟังก์ชั้นการทำงานผ่าน kubectl ในส่วนของ kubectx เป็นเครื่องมือที่มีประโยชน์มากสำหรับ multi-cluster environment โดยเราสามารถสับเปลี่ยน context ระหว่าง cluster ได้ และสามารถหลีกเลี่ยง command ที่ยุ่งเหยิงด้วย keyword ของ kubectx และจุดเด่นที่สุดของ kubectx คือเราสามารถตั้งชื่อให้ cluster ได้โดยคำสั่ง “kubectx [alias]” ส่วน kubens นั้น เป็นเครื่องมือที่คล้าย ๆ กับ kubectx ที่มีฟังก์ชั่นในการสับเปลี่ยนระหว่าง Kubernetes namespace และสามารถดึง context กลับไปอยู่ในเวอร์ชั่นก่อน ๆ ได้ด้วยคำสั่ง “kubens -”
Kube-shell
Kube-shell เป็นอีกหนึ่งเครื่องมือที่จะเสริมประสิทธิภาพของ kubectl เป็นอย่างมาก ที่เด่นที่สุดคงหนีไม่พ้นการเติมคำสั่งให้อย่างเสร็จสรรพ โดย kube-shell จะแนะนำ command ต่าง ๆ ซึ่งอ้างอิงจาก value ที่ใส่เข้าไป พร้อมแสดง in-line description เมื่อคำสั่งถูก execute และเราสามารถดูฟังก์ชั่นที่เคยใช้งานได้ง่าย ๆ ด้วยปุ่ม arrow key
Serverless Tools
Kubeless
Kubeless เป็นเครื่องมือที่ใช้ resource ของ Kubernetes ไม่ว่าจะเป็นการ auto-scale, ดึง API, monitor, และ troubleshoot ในการ deploy application ขนาดเล็ก และ Kubeless ยังสนับสนุน Custom Resource Definition ที่ทำให้เราสามารถสร้าง Kubernetes resource แบบ custom ซึ่งสามารถ monitor ได้ด้วย in-cluster controller Kubeless ยังสามารถ launch runtime ได้ตามที่เราต้องการ และสามารถนำ runtime เหล่านั้นไปอยู่บน HTTP ได้
Fission
Fission เป็นเครื่องมือที่ถูกออกแบบมาให้เราได้โฟกัสไปที่การเขียนโค้ดอย่างเดียว โดย Fission สามารถทำงานได้บน local computer หรือแม้แต่ private/public cloud และรองรับภาษาโปรแกรมหลากหลายภาษา ไม่ว่าจะเป็น Python, NodeJS, Go, C# หรือ PHP ข้อได้เปรียบของ Fission คือเราสามารถ deploy ได้ในคำสั่งเดียว และ workflow ของ Fission ทำให้เราสามารถเชื่อมต่อ severless function ได้หลายตัวด้วย logic gate ซึ่งเราไม่จำเป็นต้องไปยุ่งกับเรื่องจำพวก networking หรือ message queue เลย
IronFunctions
IronFunctions เป็นเครื่องมือ open-source ที่เขียนด้วย Golang ซึ่งรองรับทุกภาษาโปรแกรมเช่นกัน และหนึ่งในข้อได้เปรียบของ IronFunction คือการรองรับ AWS Lambda ซึ่งคุณสามารถ import ฟังก์ชั่นของ Lambda แล้ว run ในแพตฟอร์มไหนก็ได้ และท้ายที่สุด ในการ scaling ของ IronFunctions นั้น สิ่งที่คุณทำมีเพียงแค่เพิ่ม IronFunctions node เท่านั้น ไม่จำเป็นจะต้อง scale ทีละ app
แต่หลายองค์กร เวลาต้องการ Deploy Application ลง Kubernetes นั้น จะต้องเสียทรัพยากร DevOps และเวลาในการวิจัย และศึกษา Kubernetes อย่างยาวนาน อาจจะมีการลองผิดลองถูกหลายรอบ จนกว่าจะออกมาเป็น Best Practice หรือแม้แต่ไม่รู้เลยว่าจะจับต้นชนปลายในการ Deploy Application ตนเองอย่างไรดี
❌ ไม่ต้องเสียเวลาลองผิดลองถูกอีกต่อไป
✅ มาเรียนรู้เทคนิคการใช้ Kubernetes และ Helm ที่เหมาะสมนำไปปรับใช้กับองค์กรคุณได้ !!
กับ DevOps Transformation เวิร์กชอปรูปแบบ Onsite หลักสูตร 3 วัน ที่คุณจะได้เริ่มต้นตั้งแต่เข้าใจทุกคอนเซปต์การทำ DevOps ผ่านการลงมือทำจริงอย่างถูกวิธี จากโจทย์การทำงานจริงกับผู้เชี่ยวชาญในวงการระดับ TOP พร้อมนำแนวคิดและวิธีการไปปรับใช้ได้อย่างเหมาะสมกับองค์กรของคุณ
สอนจากการทำงานจริงมากกว่า 15 ปี โดยคุณเดียร จิรายุส นิ่มแสง – ผู้ก่อตั้ง และ CEO จาก Opsta (Thailand) ผู้เชี่ยวชาญด้าน DevSecOps ให้คำปรึกษาองค์กรขนาดใหญ่มาแล้วทั่วประเทศ
.
ดูรายละเอียดหลักสูตร และสมัครเรียนได้ที่ 👉 คลิกที่นี่ (รับจำนวนจำกัด)
Source: Pheonixnap, Kubernetes, logz.io