ถ้าพูดถึงเรื่อง DevOps เครื่องมือที่มักถูกพูดถึงและแนะนำให้นำมาใช้งาน
มักจะมี Docker และ Kubernetes เป็นสิ่งที่คล้ายกันมาก ๆ
ทั้งสองมีเป้าหมายเดียวกันคือ
ลดปัญหาเรื่อง compatibility ของระบบ
ลดปัญหาเรื่อง portability ของระบบ
ซึ่งเป็นความรับผิดชอบหลักของทีม development และ operation
โดยในบทความนี้เจะเน้นไปที่ Kubernetes
แต่ถ้าเราต้องการนำมาทดสอบหรือใช้งานบนเครื่องเรามันไม่ง่ายเลย
เพราะว่า Kubernetes นั้นต้องการมากกว่า 1 instance ในการเริ่มใช้งาน
คือหนึ่งสำหรับ master service สองสำหรับ discover service และสามสำหรับ node
แต่ถ้าจะใช้งานจริง ๆ ก็มีเครื่องมือช่วยคือ Minikube
โดยที่ Minikube เป็นเครื่องมือที่ทำให้ชีวิตนักพัฒนาง่ายขึ้น
ทำให้สามารถ run Kubernetes cluster บนเครื่องนักพัฒนาได้เลย
ดังนั้นมาลองใช้งานกันแบบพื้นฐานสุด ๆ กันหน่อย
ปล. การทดสอบทั้งหมดอยู่บน Mac OS นะ
ส่วนการติดตั้งดูจากที่นี่ได้เลย Installation
น่าเบื่อนิดหน่อยที่ต้องใช้พวก VirtualBox หรือ VMWare Fusion
เป็นบ้านให้ container ต่าง ๆ ที่จะสร้างขึ้นมา
มาเริ่มด้วยการสร้าง Kubernetes cluster กันดีกว่า
จากทำการตรวจสอบด้วยคำสั่ง
ในตอนนี้เรามี 1 node ทำงานแล้วนะ
จะรออะไรมาลองสร้าง Nginx container เล่นกันหน่อย
รวมทั้ง expose port ออกมาหน่อยนะ
kubectl run webserver --image=nginx:1.13 --port=80 kubectl expose deployment webserver --type=NodePort
โดยใน Kubernetes นั้นจะเรียกว่า Pod
ดังนั้นขอดูหน่อยสิว่าที่เราเพิ่งสร้างมานั้นมีจริงหรือเปล่า
ด้วยคำสั่ง
จากนั้นปัญหาคือ URL ของ web server ละ คืออะไร ?
โดยสามารถดูด้วยคำสั่ง
$minikube service webserver --url
ลองเข้าใชงานตาม url ได้ผลดังรูป
ยังไม่พอนะ ยังมี Dasdboard หน้าสวย ๆ ให้ใช้งานอีกด้วย
สามารถเข้าด้วยคำสั่ง
$minikube dashboard
แสดงผลดังรูป
ยังไม่พอนะ ยังมี proxy สำหรับการเข้าถึง
$kubectl proxy
จะทำการ start server มาให้ (Local ของเรานั่นเอง)
ทำให้เราสามารถเข้าถึงได้ง่ายขึ้น
แสดงรายชื่อ url ดังรูป
คำถามที่ตามมาคือ อยากเข้าไปใน container หรือ pod ทำอย่างไรดี ?
การใช้งานเหมือน docker เลยคือ
เมื่อทุกอย่างเรียบร้อยก็ทำการลบทิ้งไปซะ
$kubectl delete deployments --all $kubectl delete pods --all
ปิดท้ายด้วยการ stop Minikube
$minikube stop
เพียงเท่านี้เราก็สามารถเริ่มต้น Kubernetes บนเครื่องเราได้แล้วนะครับ
ขอให้สนุกกับการ coding ครับ