สำหรับการ deploy application ในปัจจุบันนั้นต้องบอกว่าเปลี่ยนรูปไปอย่างมาก การทำ CI/CD ที่เปลี่ยนไปจากสิบปีก่อนอย่างสิ้นเชิง ซึ่งในวิธีการ การจัดการบริหาร application บน container ที่ได้รับความนิยมมากที่สุดในปัจจุบันคงจะหนีไม่พ้น Kubernetes เพราะความสะดวกในหลายเรื่อง ที่จำเป็นอย่างมากในการ ขยาย การจัดการ และ การทำ load balancing ด้วย ซึ่งนั้นก็เพียงแค่ข้อดีบางส่วนของ Kubernetes เท่านั้น
เมื่อมีการใช้งาน Kubernetes แน่นอนว่า คำถามต่อมาคือ ท่านจะใช้อะไรในการบริหาร หนึ่งในแพลตฟอร์มที่ออกแบบมาเพื่อบริหาร Kubernetes ที่ได้รับความนิยมอย่างมากคือ OpenShift จากค่าย RedHat ซึ่งต้องบอกว่า มีการจัดการทั้ง Life Cycle ของ Kubernetes และการจัดการบริหาร application บน container ได้อย่างมีประสิทธิภาพและได้รับการยอมรับในองค์กรระดับ enterprise ทั่วโลก
วันนี้เราจึงพาท่านไปพบกับ การทำความรู้จัก OpenShift และบริการของบริษัทอเวสต้า ที่เกี่ยวข้องกับ OpenShift
1. OpenShift คืออะไร
OpenShift คือแพลตฟอร์มสำหรับบริหารจัดการ Container และ Kubernetes ที่ออกแบบมาเพื่อรองรับการใช้งานในระดับองค์กร โดยช่วยรวมความสามารถที่จำเป็นต่อการนำ Containerized Application ไปใช้งานจริงไว้ใน Platform เดียว
OpenShift ทำงานบนพื้นฐานของ Kubernetes ซึ่งทำหน้าที่เป็น Container Orchestration Engine ในการบริหารจัดการ Container, Pod, Service และ Workload ต่าง ๆ
อย่างไรก็ตาม OpenShift ไม่ได้มีเพียง Kubernetes เท่านั้น แต่ยังมี Components และเครื่องมือเพิ่มเติม เช่น Web Console, Authentication, RBAC, Operators, Monitoring, Networking และ Security Controls เรียกว่าทั้งหมดครบในระบบเดียว
แนวคิดสำคัญคือการเปลี่ยนจากการบริหาร Kubernetes ที่ต้องประกอบเครื่องมือหลายส่วนเข้าด้วยกัน มาเป็น Platform ที่มีความสามารถหลายอย่างพร้อมใช้งานในลักษณะที่เหมาะกับ Enterprise Environment
แล้ว OpenShift กับ OKD แตกต่างกันอย่างไร
สำหรับ OpenShift นั้นเป็นระบบที่ maintain หรือจัดการ โดย RedHat ในขณะที่ OKD นั้นแทบไม่ได้แตกต่างจาก OpenShift แต่จะอยู่ในรูปแบบ Open Source และไม่มีค่าใช้จ่ายสนับสนุนโดย community

2. OpenShift แตกต่างจาก Kubernetes อย่างไร?
Kubernetes เป็น Open Source Platform สำหรับบริหาร Container Workload โดยมีความสามารถพื้นฐาน เช่น Scheduling, Service Discovery, Scaling และ Container Orchestration
ส่วน OpenShift นำ Kubernetes มาเป็น Core และเพิ่มเติม Components ที่ช่วยให้การใช้งานในองค์กรมีความเป็นระบบมากขึ้น
ตัวอย่างความสามารถที่พบได้ใน OpenShift ได้แก่
ดังนั้นจึงสามารถมองได้ว่า Kubernetes เป็น Container Orchestration Platform หรือระบบจัดการบริหารคอนเทนเนอร์แบบรวมศูนย์ ในขณะที่ OpenShift เป็น Enterprise Kubernetes Platform ที่รวมเครื่องมือสำหรับ Developer, Administrator และ Operation Team เข้ามาใน Platform เดียว
Kubernetes เหมาะกับใคร?
Kubernetes เหมาะกับองค์กรที่ต้องการสร้าง Platform ขึ้นมาเองและมีทีมที่มีความเชี่ยวชาญในการเลือกและบริหาร Components ต่าง ๆ
OpenShift เหมาะกับใคร?
OpenShift เหมาะกับองค์กรที่ต้องการ Platform ที่มีความสามารถสำหรับ Enterprise พร้อมใช้งาน และต้องการลดความซับซ้อนในการบริหาร Kubernetes Infrastructure
3. ทำไมองค์กรจึงเลือกใช้ OpenShift?
เหตุผลสำคัญไม่ได้มีเพียงเรื่องการ Run Container แต่คือการสร้างมาตรฐานในการพัฒนาและบริหาร Application ภายในองค์กร เพราะมันจะช่วยลดความซับซ้อน เพราะ OpenShift รวมความสามารถหลายส่วนไว้ใน Platform เดียว ทำให้ทีม Infrastructure ไม่จำเป็นต้องประกอบระบบ Kubernetes และเครื่องมือที่เกี่ยวข้องทั้งหมดด้วยตนเอง
ในด้านความปลอดภัย OpenShift มีแนวทางด้าน Security ที่เหมาะกับ Enterprise Environment รวมถึง Authentication, Authorization, RBAC, Secrets, TLS และ Security Policies
High Availability สามารถออกแบบ Cluster ให้มีหลาย Control Plane และ Worker Node เพื่อรองรับความเสียหายของ Infrastructure บางส่วนได้
Automation OpenShift ใช้ Kubernetes Operators และ Automation หลายรูปแบบในการบริหาร Lifecycle ของ Platform และ Application
Developer สามารถ Deploy Application ผ่าน Web Console, CLI หรือ CI/CD Pipeline โดยไม่จำเป็นต้องเข้าไปจัดการ Infrastructure ในระดับล่างโดยตรง
Hybrid Cloud OpenShift สามารถนำไปใช้งานบนหลาย Infrastructure และ Cloud Environment ทำให้องค์กรสามารถออกแบบ Hybrid Cloud Architecture ได้
4. OpenShift Architecture
OpenShift Cluster ประกอบด้วยส่วนสำคัญหลายส่วน โดยสามารถแบ่งออกเป็น 2 กลุ่มหลัก ได้แก่ Control Plane และ Worker Nodes
Control Plane ทำหน้าที่บริหารจัดการ Cluster ส่วน Worker Node ทำหน้าที่ประมวลผล Application และ Container Workload
ใน Production Environment มักออกแบบ Control Plane หลายเครื่องเพื่อรองรับ High Availability และมี Worker Nodes หลายเครื่องเพื่อรองรับ Application Workload และการกระจาย Load

5. OpenShift Core Components
6. OpenShift Networking
Networking เป็นส่วนสำคัญของ OpenShift เนื่องจาก Application ที่อยู่ใน Cluster จำเป็นต้องสามารถสื่อสารกันเอง รวมถึงรับ Traffic จากภายนอก
OpenShift ใช้ระบบ Network ที่รองรับการสื่อสารระหว่าง Pod และ Node รวมถึงมี Components สำหรับรับ Traffic จากภายนอก โดยในเครือข่ายนั้นจะมีอยู่หลายเซอร์วิส ได้แก่
7. OpenShift Storage
Container โดยธรรมชาติมักถูกออกแบบให้สามารถสร้างและลบได้ หรือไม่ได้คงอยู่แบบถาวร ดังนั้นแต่ก่อนนั้น ข้อมูลที่ต้องการเก็บแบบถาวรไม่ควรผูกอยู่กับ Container (เช่น database) โดยตรง OpenShift จึงใช้ Kubernetes Storage Architecture เช่น
Storage Backend สามารถเป็นได้ทั้ง Block Storage, File Storage หรือ Storage Platform อื่นที่รองรับ CSI ด้วยแนวทางนี้ทำให้ Application สามารถย้ายระหว่าง Worker Node ได้โดยไม่จำเป็นต้องผูกข้อมูลเข้ากับ Local Disk ของ Node

8. OpenShift Security
Security เป็นหนึ่งในองค์ประกอบสำคัญของ Enterprise Platform โดย OpenShift รองรับการกำหนด Security ในหลายระดับ ตั้งแต่ User Authentication ไปจนถึงการควบคุมสิทธิ์และการสื่อสารระหว่าง Application
องค์ประกอบสำคัญ ได้แก่
9. OpenShift Operators
Operator เป็นหนึ่งในแนวคิดสำคัญของ OpenShift โดย Operator สามารถมองได้ว่าเป็น Software ที่เข้าใจวิธีบริหาร Application หรือ Platform Component บน Kubernetes Operator สามารถช่วย Automation งานเหล่านี้ ทำให้ Administrator ไม่จำเป็นต้องดำเนินการทุกขั้นตอนด้วยตนเอง OpenShift ยังมี OperatorHub ซึ่งช่วยให้ผู้ดูแลสามารถค้นหาและติดตั้ง Operators ที่เหมาะสมกับระบบได้
10. OpenShift Project และ Namespace
การแบ่ง Project ทำให้องค์กรสามารถแยก Application และทีมออกจากกัน พร้อมกำหนด
11. การ Deploy Application บน OpenShift
หนึ่งในจุดเด่นของ OpenShift คือการทำให้ Application Deployment เป็นกระบวนการที่เป็นระบบ เป็นลำดับเช่น Container Image -> Deployment -> Pod -> Service -> Route -> User
12. OpenShift CLI — `oc`
นอกจาก Web Console แล้ว Administrator สามารถบริหาร OpenShift ผ่าน Command Line Interface หรือ `oc`
13. OpenShift Web Console
OpenShift มี Web Console สำหรับ Administrator และ Developer ซึ่งช่วยให้สามารถบริหารระบบผ่าน Web Browser โดยงานที่สามารถดำเนินการได้ เช่น สถานะ Cluster, Node, Pod และการ Deploy Application รวมถึงการจัดการ Storage และ Operator
Web Console จึงช่วยลดความจำเป็นในการใช้ CLI สำหรับงานทั่วไป และทำให้ Developer สามารถทำงานกับ Application ได้โดยไม่จำเป็นต้องเข้าใจ Infrastructure ทุกระดับ
14. การติดตั้ง OpenShift
การติดตั้ง OpenShift จำเป็นต้องเตรียม Infrastructure หลายส่วน เช่น DNS, Network, IP Address, Load Balancing, Worker Nodes, Certificate
15. OpenShift High Availability
High Availability หรือ HA เป็นหนึ่งในเหตุผลสำคัญที่องค์กรเลือกใช้ Container Platform ในระดับ Enterprise โดยการมี Control Plane หลายเครื่องช่วยให้ Cluster สามารถทำงานต่อได้แม้ Control Plane บางเครื่องเกิดปัญหา โดยต้องออกแบบให้สอดคล้องกับหลักการของ etcd quorum
ในส่วน Worker Node การมีหลาย Node ช่วยให้ Workload สามารถกระจายไปยัง Node อื่นได้เมื่อ Node ใด Node หนึ่งเกิด Failure อย่างไรก็ตาม HA ไม่ได้หมายความว่าระบบจะป้องกันความเสียหายได้ทุกประเภท จึงยังจำเป็นต้องมี Backup และ Disaster Recovery
16. Monitoring และ Logging
การนำ OpenShift ไปใช้งาน Production จำเป็นต้องมี Monitoring และ Logging เพื่อให้ Administrator สามารถตรวจสอบสถานะของระบบได้ สิ่งที่ควร Monitor ได้แก่ CPU, RAM, Disk, Network, Node Status, Application Metrics
17. OpenShift Upgrade และ Lifecycle Management
การติดตั้ง Cluster เป็นเพียงจุดเริ่มต้นของการใช้งาน OpenShift ใน Production Environment จำเป็นต้องวางแผน Lifecycle Management เช่น การอัพเกรด Cluster, Operator, Node และ Application
18. Backup และ Disaster Recovery
High Availability และ Backup เป็นสิ่งที่แตกต่างกัน โดย High Availability (HA) มีเป้าหมายเพื่อให้ Service สามารถทำงานต่อได้เมื่อ Infrastructure บางส่วนเกิดความผิดพลาดขึ้นไม่ว่าจะฮาร์ดแวร์หรือบางส่วนของระบบ ในขณะที่ Backup และ Disaster Recovery มีเป้าหมายเพื่อให้สามารถกู้คืนข้อมูลและระบบกลับมาได้เมื่อเกิดเหตุการณ์รุนแรง
19. OpenShift รูปแบบการใช้งาน
OpenShift สามารถนำไปใช้กับ Workload ได้หลากหลาย เช่น

20. OpenShift เหมาะกับองค์กรแบบไหน?
OpenShift เหมาะกับองค์กรที่มีความต้องการด้าน Container และ Application Platform ในระดับสูง ซึ่งจริงแล้วเหมาะกับทุกขนาดองค์กรเลยก็ว่าได้ไม่จำเป็นต้องเป็นองค์กรขนาดใหญ่ ซึ่งเราอาจจะมองในลักษณะตามความต้องการดังนี้
ในทางกลับกัน หากองค์กรมี Application ขนาดเล็กเพียงไม่กี่ระบบ และไม่ได้มี Container Workload หรือความต้องการด้าน HA และ Automation มากนัก การใช้ Kubernetes Platform ขนาดใหญ่ก็อาจเกินความจำเป็น เพราะจำเป็นที่จะต้อง DevOps ที่มีความเชี่ยวชาญระดับหนึ่ง
ดังนั้นการเลือก OpenShift ควรพิจารณาจาก Application Architecture, Team Skill, Security Requirement, Availability Requirement และ Operational Requirement มากกว่าพิจารณาเฉพาะ Technology
หากท่านต้องการติดตั้ง ระบบ OKD (Opensource OpenShift) สามารถสอบถามเราได้ผ่าน Line OA : @avesta.co.th หรืออีเมล์ [email protected]