
บทความนี้ บอกเลยว่าขายของล้วนๆๆ คือ พึ่งได้ลองเล่น Rancher Platform มาเพื่อจัดการงานในบริษัทให้ง่ายต่อชีวิตตัวเอง (เจ้าควายน้อยตัวนี้นั้นแหละ 🙂 )

แล้วแบบพอกดเล่นเท่านั้นแหละ โอ้โหววววววว นึกถึงนาทีพระคู่หมั้นเจ้าชายแฮร์รี่ ที่ไปกินผัดไทยร้านผัดไทย “โชติจิตร” เลยอะ

“โอ้ พระเจ้า ที่ผ่านมาทั้งชีวิตฉันกินอะไรไป นี่คือรสชาติที่แท้จริงของผัดไทย มันเปลี่ยนมุมมองของฉันที่มีต่ออาหารจานนี้ไปเลย” 🙂 เช่นเดียวกับการเล่น container ที่ผ่านมาของทุกบทความใน container นี้เลยว่า “ที่ผ่านมาทั้งชีวิตนี้เรานั่งเล่น container บ้าบออะไรลงไปเนี่ยยย” เปลี่ยนมุมมองกับ container ใหม่หมดเลยก็ว่าได้ ว่าค่อนข้างยุ่งยากเนี่ย ให้ตายสิ (ขายของปะล่ะ?)
Rancher คืออะไร?
สั้นๆๆง่ายๆมากๆเลยน่ะ คือ Complete Container Management Platform ! แปลภาษาบ้านๆคือตัวจัดการ container ให้เรานั้นเอง 🙂
ยังไม่รู้ถึงความดีของมันก็คือ
- เวลาเราหา logs จาก docker เราทําไงหรอ? ก็หนีไม่พ้น docker logs <container id> ใช่มั้ย? แค่พิมย์ก็เสียเวลาไป 1 นาทีล่ะเนี่ย แต่เจ้า lancher แค่กดปุ่มเดียว Log มาเลย
- แล้วถ้าเราอยากดูเรื่องของ CPU กับ Memory ที่ container ใช้ เราต้องทําไง? ต้องมานั่งกด docker stats ใช่มั้ยล่ะ เสียเวลา เจ้านี้ก็มี Graph ขึ้นโชว์ให้เรา monitoring เลย
- แต่ไม่หมดแต่เรื่องหยุ่มหยิมแบบนั้น มันทําให้เรา deploy application ได้แบบโคตรง่าย โดยการสร้าง application stack ขึ้นมา แต่ละ stack 🙂 แล้วให้ไปลงบน host ที่เรา subscribe ไว้ได้เลย
rancher-stack-catalog-example อารมณ์เหมือนมาช๊อปปิ้งแบบสาวๆเลยล่ะ อยากได้ไรก็แค่กดลงไป
- ยังไม่จบ … มันยังมีเรื่องของ Rancher cli ด้วย! แปลว่าเราสั่งผ่าน command line ให้เปิดปิด app ตัวไหนก็ได้น่ะ แล้วก็ยังมี Rancher REST API ที่เราสามารถใช้ curl ยิงเข้าไปเพื่อสั่งให้เปิดปิด stack แต่ละตัว (กราบเลยยย rancher cli กับ curl feature เนี่ย)
rancher-api-doc (http://rancher.com/docs/rancher/v1.3/en/api/v2-beta/) rancher-cli-command-list (http://rancher.com/docs/rancher/v1.6/en/cli/commands/) - ยังไม่จบน่ะ จําบทความเรื่อง k8s ได้มั้ย? เจ้า rancher เกิดมาเพื่อกันเลยล่ะ แปลว่าเราจะสร้าง k8s ด้วย rancher แบบง่ายดายมากๆ สุดยอดมาก
วิธีคิดแบบง่ายเพื่อเข้าใจ Rancher
พ่อทุกสถาบันของ Rancher คือ Environment โดยใน 1 Env. จะมีกี่ Host ใต้มันก็ได้ หลังจากนั้นเราจะมีสิ่งที่เรียกว่า Application Stack ของแต่ละอันเพื่อนใส่เข้าไปในแต่ละ Host โดยให้มองว่า Application stack เหล่านั้นคือ application ของเราที่จะใช้เช่น database, application server เป็นต้น

จบในรูปเดียวเลย Rancher มีแค่นี้แหละ 🙂 (host แยกน่ะ คนล่ะ env. ก็ host คนละตัวกัน)
วิธีลง Rancher
มีสองส่วนคือ Server และ Agent
ถ้า server ก็ชิวๆเลย
sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:stable
แค่นี้ก็จะลง docker บนเครื่องและก็เปิด Port 8080 ไว้ให้ใช้งาน
ถ้าเจ้า Agent ง่ายกว่าเดิมเพราะมี UI

แต่เจ้ากรอบแดงๆนั้นใส่ CATTLE_AGENT_IP เครื่องที่เอา agent ไปลงน่ะ แล้วเดี๋ยวมัน register กับ host ให้เองเลย 🙂 แถมยัง install stack ที่จําเป็นให้กับระบบเราอีกด้วย (พวก Monitoringต่างๆๆ )
สรุปแล้ว
สั้นๆง่ายๆใช้เถอะครับ ชีวิตจะได้ดีขึ้น 🙂 เร็วขึ้น ง่ายขึ้น ด้วย… มันไม่ได้เข้าใจยากเลยล่ะ หลักการณ์มองมีแค่นั้นแหละ คิดตามรูปนั้นจบเลยยยย
update:
- [2/22/2018] เราสามารถ force update image ของเราได้โดยการ update image แล้วไม่ต้องแก้ค่าอะไร มันจะทําการ repull image เราลงมาใหม่อีกที
- [3/1/2018] พึ่งนึกขึ้นได้ว่าเวลาที่เราใช้ Rancher server แบบ docker มัน based on container และ data ข้างในใช่มั้ยละ? ทีนี้สมมุติถ้าวันนึง contaienr เราโดนลบไปนี้คือจบชีวิตเลยน่ะ config ทั้งหลาย หายหมดเลยอะ 🙁 เราเลยควรที่จะลง rancher แบบ external db นั้นเอง
- ซึ่งการลงแบบ external db ขอแนะนําให้ลงแบบ physical น่ะ คือลง install จริงๆ ไม่ใช่ docker มีความรู้สึกชอบแบบนั้นปลอดภัยกว่า โดยมีขั้นตอนคือ
- ลง mysql บน centos 7 ก่อน
- แต่โดยปกติแล้วมันจะไม่จบแค่นั้นเพราะจะมีปัญหาเรื่องการ access เข้าไปใน mysql เลยต้องใช้ท่านี้เลย เข้าไป reset password ด้วยตัวเองก่อน แล้วก็ถึงจะใช้งานได้
- ซึ่งถ้ากรณืที่ทําไปทํามาแล้วมีปัญหาอีก เราสามารถ config มันได้ด้วย variable พวกนี้เลย โดยไปแก้ไขใน /etc/my.cf แล้ว copy ตัวแปลไปใส่ แค่นั้นสบายล่ะ 🙂
- วิธีเปิด Port ใน CentOS 7
firewall-cmd --zone=public --permanent --add-port=3306/tcp
firewall-cmd --reload
- หลังจากนั้นก็แค่ทําตามขั้นตอนของ rancher ก็จะเป็นอันเสร็จ rancher แบบ external db แค่นี้ก็ไม่ต้องกลัวเรื่อง configuration จะหายไปล่ะ
- ซึ่งการลงแบบ external db ขอแนะนําให้ลงแบบ physical น่ะ คือลง install จริงๆ ไม่ใช่ docker มีความรู้สึกชอบแบบนั้นปลอดภัยกว่า โดยมีขั้นตอนคือ