rancher-tool
rancher-tool

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

rancher-logo
rancher-logo (https://rancher.com/)

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

rancher-surpise-container
rancher-surpise-container (https://www.prachachat.net/foreign-soft-news/news-89676)

“โอ้ พระเจ้า ที่ผ่านมาทั้งชีวิตฉันกินอะไรไป นี่คือรสชาติที่แท้จริงของผัดไทย มันเปลี่ยนมุมมองของฉันที่มีต่ออาหารจานนี้ไปเลย” 🙂 เช่นเดียวกับการเล่น container ที่ผ่านมาของทุกบทความใน container นี้เลยว่า “ที่ผ่านมาทั้งชีวิตนี้เรานั่งเล่น container บ้าบออะไรลงไปเนี่ยยย” เปลี่ยนมุมมองกับ container ใหม่หมดเลยก็ว่าได้ ว่าค่อนข้างยุ่งยากเนี่ย ให้ตายสิ (ขายของปะล่ะ?)

Rancher คืออะไร?

สั้นๆๆง่ายๆมากๆเลยน่ะ คือ Complete Container Management Platform ! แปลภาษาบ้านๆคือตัวจัดการ container ให้เรานั้นเอง 🙂

ยังไม่รู้ถึงความดีของมันก็คือ

  1. เวลาเราหา logs จาก docker เราทําไงหรอ? ก็หนีไม่พ้น docker logs <container id> ใช่มั้ย? แค่พิมย์ก็เสียเวลาไป 1 นาทีล่ะเนี่ย แต่เจ้า lancher แค่กดปุ่มเดียว Log มาเลย
  2. แล้วถ้าเราอยากดูเรื่องของ CPU กับ Memory ที่ container ใช้ เราต้องทําไง? ต้องมานั่งกด docker stats ใช่มั้ยล่ะ เสียเวลา เจ้านี้ก็มี Graph ขึ้นโชว์ให้เรา monitoring เลย

    rancher-process-monitoring
    rancher-process-monitoring
  3. แต่ไม่หมดแต่เรื่องหยุ่มหยิมแบบนั้น มันทําให้เรา deploy application ได้แบบโคตรง่าย โดยการสร้าง application stack ขึ้นมา แต่ละ stack 🙂 แล้วให้ไปลงบน host ที่เรา subscribe ไว้ได้เลย
    rancher-stack-catalog-example
    rancher-stack-catalog-example

    อารมณ์เหมือนมาช๊อปปิ้งแบบสาวๆเลยล่ะ อยากได้ไรก็แค่กดลงไป

  4. ยังไม่จบ … มันยังมีเรื่องของ Rancher cli ด้วย! แปลว่าเราสั่งผ่าน command line ให้เปิดปิด app ตัวไหนก็ได้น่ะ แล้วก็ยังมี Rancher REST API ที่เราสามารถใช้ curl ยิงเข้าไปเพื่อสั่งให้เปิดปิด stack แต่ละตัว (กราบเลยยย rancher cli กับ curl feature เนี่ย)
    rancher-api-doc
    rancher-api-doc (http://rancher.com/docs/rancher/v1.3/en/api/v2-beta/)

    rancher-cli-command-list
    rancher-cli-command-list (http://rancher.com/docs/rancher/v1.6/en/cli/commands/)
  5. ยังไม่จบน่ะ จําบทความเรื่อง k8s ได้มั้ย? เจ้า rancher เกิดมาเพื่อกันเลยล่ะ แปลว่าเราจะสร้าง k8s ด้วย rancher แบบง่ายดายมากๆ สุดยอดมาก

วิธีคิดแบบง่ายเพื่อเข้าใจ Rancher

พ่อทุกสถาบันของ Rancher คือ Environment โดยใน 1 Env. จะมีกี่ Host ใต้มันก็ได้ หลังจากนั้นเราจะมีสิ่งที่เรียกว่า Application Stack ของแต่ละอันเพื่อนใส่เข้าไปในแต่ละ Host โดยให้มองว่า Application stack เหล่านั้นคือ application ของเราที่จะใช้เช่น database, application server เป็นต้น

rancher-stack-in-one-image
rancher-stack-in-one-image

จบในรูปเดียวเลย 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

rancher-agent-install
rancher-agent-install

แต่เจ้ากรอบแดงๆนั้นใส่ 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 จะหายไปล่ะ

Leave a Reply

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.