การทำให้เครื่องมือที่คนรู้สึกว่ายาก ใช้งานง่ายลงโดยเฉพาะใน area ของ Cloud Native (เช่น Docker, Kubernetes) จะทำให้เกิด impact ในวงกว้าง ผมนั่งคิดเล่น ๆ ว่าจะเกิดอะไรขึ้นถ้าทั้ง 1,000 คนที่มาร่วมงาน DevOps BKK สามารถ provision Kubernetes ได้และใช้ Kubernetes เป็นในระดับ production ได้ วงการ DevOps ในประเทศคงจะก้าวกระโดดไปอีกระดับ ในระดับที่อาจจะนำหลาย ๆ ชาติในโซน Asia (เอาจริง ๆ ตอนนี้ผมก็รู้สึกว่าเราอยู่ในแนวหน้าแล้ว)
Tech Preview – ตัวติดตั้ง Kubernetes แบบ GUI
โพสต์ 23 ก.ย. 2561 13:21
By: Dr.Chanwit Kaewkasi
Ref: https://sites.google.com/site/chanwit/blogs/tech-preview-gui-kubernetes-installer
การทำให้เครื่องมือที่คนรู้สึกว่ายาก ใช้งานง่ายลงโดยเฉพาะใน area ของ Cloud Native (เช่น Docker, Kubernetes) จะทำให้เกิด impact ในวงกว้าง ผมนั่งคิดเล่น ๆ ว่าจะเกิดอะไรขึ้นถ้าทั้ง 1,000 คนที่มาร่วมงาน DevOps BKK สามารถ provision Kubernetes ได้และใช้ Kubernetes เป็นในระดับ production ได้ วงการ DevOps ในประเทศคงจะก้าวกระโดดไปอีกระดับในระดับที่อาจจะนำหลาย ๆ ชาติในโซน Asia (เอาจริง ๆ ตอนนี้ผมก็รู้สึกว่าเราอยู่ในแนวหน้าแล้ว)
ตอนนี้สิ่งที่ขาดไปคือ เครื่องมือที่ง่าย ที่ให้คนกลุ่มใหญ่เริ่มเรียนรู้ได้ และผมก็เชื่อว่าทุกคนมีความเก่งอยู่ในตัว พอจะเริ่มได้แล้วแต่ละคนจะต่อยอดไปหาของที่ยากขึ้นและซับซ้อนขึ้นได้เอง
ผมแชร์ mindset จากช่วงเวลาที่ร่วมสร้าง Docker Swarm อยู่หลายเรื่อง โดยเฉพาะวิธีการคิดที่ต้องการให้การจัดการ container เป็นเรื่องง่ายที่สุดเท่าที่จะทำได้
พอเริ่มใช้ Kubernetes ก็ไม่แปลกใจเลยว่าทำไมผมถูกโฉลกกับ Rancher’s RKE เป็นพิเศษ จนกลายไปเป็นจุดเริ่มต้นของการสร้าง SKE – Suranaree Kubernetes Engine ขึ้นมาใช้เอง
แนวคิดของ SKE ไม่ได้จบที่เอา RKE มาต่อยอดอย่างเดียว ผมเชื่อว่าการสร้าง Kubernetes คลัสเตอร์ มันง่ายกว่านี้ได้อีก เลยหาวิธีสร้าง UI มาครอบตัว command line ของ SKE ตอนเริ่มคิดในหัวมีอยู่ 2 แนวทางคือ
1. ทำตัว UI ที่เป็น web app
2. ทำตัว UI เป็นตัวติดตั้งแบบ desktop
จริง ๆ แล้วแบบ web app น่าจะสะดวกสำหรับยุคนี้ หลาย ๆ ตัวก็ใช้ตัวติดตั้งแบบ web app แต่ก็คิดว่ามันน่าจะ simple ได้กว่านั้น
และควรจะง่ายได้ถึงระดับ กด Next -> Next -> Next -> Finish
คือมันอาจจะทำไม่ได้ขนาดนั้นเพราะจริง ๆ ต้องมีการ set ค่าต่าง ๆ รายละเอียดมันก็จะเยอะ แต่สิ่งที่มันควรจะเป็นได้ก็คือแบบ Wizard UI
ก็เลยได้โปรแกรม ske_ui ขึ้นมา ตอนนี้เป็น UI บน Linux และกำลังพอร์ตลง OS X และ Windows เพราะเลือกเครื่องมือที่เป็น native UI และ cross platform ไว้แล้วไม่น่าจะมีปัญหาอะไร
ตัว UI ผมใช้ภาษาไทยเอาแค่เท่าที่จะใช้ได้และไม่น่าเกลียดจนเกินไป
ได้โอกาสดีก็เลยจะลองบน cloud provider ในประเทศเพราะที่ผ่านมา provision ตัว Kubernetes ไปเป็นร้อยครั้งบน AWS ที่ Singapore region พอต้องทำซ้ำ ๆ มันก็รู้สึกว่าจะช้าไปเพราะต้องวิ่งออก network ต่างประเทศ
อยากได้ความเร็วในการ provision รอบนี้เลยจะลอง Nipa.Cloud ของ ดร. อภิศักดิ์ ที่ผมบังเอิญเจอท่านในงาน DevOps BKK เมื่อต้นเดือน
Nipa.Cloud ให้ credit ฟรี 300 บาท สำหรับคนสมัครใหม่ อันนี้เผื่อจะสนใจ
ในหน้า Create Instance ของ Nipa.Cloud จะมีให้เลือกว่าจะสร้าง node แบบไหน กับอีกแท็บนึงข้าง ๆ กันเหลือบไปเห็น Applications พอดีเลยเจอของดีว่ามีตัวลง Docker 18.03 เตรียมไว้ให้ ตัวนี้เป็น Ubuntu 16.04 based ก็ง่ายเลย
ผมติดตั้ง public key แล้วสร้างโหนดรวดเดียว 3 โหนด แป๊บเดียวก็ได้ Docker 18.03 มาครบ 3 ตัว เราจะลง Kubernetes กัน ไม่ได้ทำ Swarm ก็ไม่ต้อง join โหนด เดี๋ยวให้ SKE ปูคลัสเตอร์เลย
กด Next ไปก็จะมีหน้าให้ใส่ข้อมูลโหนด ตรงนี้ออกแบบไว้แบบใส่มือ ต่อไปมีแผนว่าจะทำ auto แบบประมาณไป provision โหนดให้แล้วเอา IP กลับมาป้อนให้หน้านี้ (เอาไว้ก่อน ๆ)
พอป้อน IP ทั้ง 3 โหนดลง UI เสร็จ ก็ใส่ nc-user เป็นชื่อผู้ใช้ แล้วก็เอา IP ภายในใส่ให้ด้วย จากนั้นก็เลือกว่าให้แต่ละโหนดเป็นอะไรบ้าง ค่า default คือให้ทุกโหนดเป็นทั้งตัวควบคุม ตัวทำงานและ etcd ตัว configuration ที่ทำอยู่จะเป็น HA แบบง่าย ๆ เดี๋ยวจะขึ้น production ค่อยว่ากันอีกที
พอกด Next มากอีกหน้าก็จะเป็นเลือกรุ่นของ Kubernetes ก็ default ไว้ให้เป็น 1.10.7 ก็เลือก network และ service mesh ตามชอบ แล้วก็ Next (จริง ๆ จะกด Next ไปเลยก็ได้)
ถ้ดมาตัว SKE ก็จะให้ review ว่าไฟล์ cluster.yaml ที่สร้างขึ้นหน้าตาเป็นแบบนี้นะ คือต่อไปถ้าคุ้นแล้วไม่อยากใช้ UI จะเอาไฟล์นี้ไปทำ Infrastructure as Code ก็ copy ออกไปได้เลย เพราะด้านล่างจริง ๆ ตัวนี้ก็เรียกใช้ command line ของ ske กับไฟล์ cluster.yaml ที่สร้างขึ้นเท่านั้นเอง
กด Next อีกทีก็จะเริ่มสร้าง cluster ให้ประมาณแบบนี้
แต่ผมดันลืมเปิด port ของ instance บน Nipa.Cloud เลยต้องไป set เพิ่ม
ก็กลับเข้าไปที่หน้า portal ของ Nipa.Cloud แล้วก็ลือก Cloud Firewall ตอนแรกก็กลัว ๆ ว่าจะต้อง Provision instance กันใหม่รึ้ปล่าว ปรากฎว่า amazing มาก ผมสามารถสร้าง rule set ใหม่แล้ว attach เข้าไปที่ instance ของ SKE ที่สร้างไว้ แล้วพอแก้ไข rule เพิ่ม (คอนแรกเปิดไว้แค่ 2379-2380) ก็สามารถใช้ได้เลยและการ apply rule เกิดขึ้นทันที
คราวนี้ก็มากกดสั่งใน SKE ว่าให้ สร้าง อีกรอบ พอสร้างเสร็จก็เห็นข้อความ “Finished building Kubernetes cluster succesfully” ขึ้นใน log
หลังจากนี้ก็ใช้ kubectl ทำงานกับ Kubernetes ได้แบบปกติ
ตัว UI ตัวนี้อยู่ในขั้น Technology Preview เพื่อเก็บข้อมูลมาปรับปรุง เป้าหมายคือการมี UI ที่ให้ทุกคนสามารถสร้าง Kubernetes คลัสเตอร์ได้เองระดับเดียวกับการลงโปรแกรมธรรมดา ตัว binary จะมีให้ download หลังจากนี้อีกซักพัก พร้อม ๆ กับ SKE 0.1.10 ที่ใกล้จะ release แล้ว