โซลูชันส่วนใหญ่ของ Docker (รวมถึง stacks ที่จัดการโดย Ruk-Com Cloud) ได้รับการพัฒนาผลิตภัณฑ์เป็นเวอร์ชันใหม่และการแก้ไขอย่างต่อเนื่อง ดังนั้นเราจึงแนะนำให้คุณอัปเดตเทมเพลตเป็นประจำตามเวอร์ชันล่าสุด
การดำเนินการดังกล่าว เรียกว่า “redeploy” เมื่อมีการจัดการบนแพลตฟอร์มจะมีข้อมูลจำเพาะดังต่อไปนี้:
- ข้อมูลผู้ใช้งานแบบกำหนดเองและไฟล์ที่ละเอียดอ่อนในระบบจะถูกเก็บรักษาไว้ในระหว่างการอัปเดต:
- เนื้อหาของไดรฟ์ข้อมูล volumes (ค่าเริ่มต้นและแบบกำหนดเอง)
- ลิสไฟล์ใน /etc/jelastic/redeploy.conf (การกำหนดค่าเฉพาะของสแต็ก Ruk-Com Cloud) เพื่อรับรองว่าคอนเทนเนอร์สามารถใช้งานได้
- การกำหนดค่าที่เกี่ยวข้องกับ AutoFS และ NFS (/etc/autofs.jelastic, /etc/auto.master, /etc/exports)
- การกำหนดค่า firewall (/etc/sysconfig/iptables-custom, /etc/sysconfig/iptables4-jelastic, /etc/sysconfig/iptables6-jelastic, /etc/iptables/rules.v4)
- การเข้าถึงข้อมูล SSH (/root/.ssh/authorized_keys, /root/.ssh/authorized_keys2, /root/.ssh/id_rsa)
- การกำหนดค่าแบบกำหนดเองที่ระบุไว้ก่อนหน้านี้ทั้งหมดจะไม่ได้รับผลกระทบ เช่น run commands, links, variables และอื่นๆ
- หากใช้งานกับหลายๆ instances (ปรับขนาดแบบ horizontal) สามารถดำเนินการอัปเดตคอนเทนเนอร์ได้ทีละรายการ โดยไม่หยุดทำงาน (downtime)
ด้วยวิธีนี้คุณสามารถอัปเดต Docker-based container เป็นเวอร์ชันใหม่ได้ โดยจะไม่ส่งผลกระทบต่อแอปพลิเคชันภายในด้วย Ruk-Com Cloud PaaS การ redeploy คอนเทนเนอร์ใหม่สามารถทำได้ง่าย เพียงไม่กี่ขั้นตอน เช่นคลิกผ่าน dashboard UI หรือทำงานอัตโนมัติ ผ่าน API
หมายเหตุ:
การทำงานร่วมกับ MySQL, MariaDB, หรือ Percona databases จะไม่รองรับการ downgrade (การ redeploy เป็นเวอร์ชันที่เก่ากว่า) แต่หากจำเป็นต้องดำเนินการ เราขอแนะนำให้สำรองข้อมูลและกู้ database คืนหลังจากการ redeploy (หรือในคอนเทนเนอร์ที่แยกออกจากกันทั้งหมด)
Update Container via Dashboard
วิธีที่ใช้งานง่ายที่สุดสำหรับการติดตั้งแท็กเทมเพลตใหม่ (redeploy) คือการใช้ Ruk-Com Cloud Dashboard ตามคำแนะนำและขั้นตอนที่จำเป็นดังต่อไปนี้:
1. การปรับการใช้งานใหม่สามารถเข้าถึงได้ 2 วิธีที่แตกต่างกัน:
- เลือกปุ่ม Redeploy Container(s) จาก node/layer ที่ต้องการ (สำหรับการอัปเดตคอนเทนเนอร์ทั้งหมดในครั้งเดียว)
- เลือกปุ่ม Changing Environment Topology เพื่อปรับเปลี่ยน environment เดิมที่มีอยู่
- คลิกไอคอนดินสอเพื่อเปลี่ยน Tag version สำหรับคอนเทนเนอร์ของคุณ
นอกจากนี้คุณสามารถปรับเปลี่ยนตัวเลือกเพิ่มเติมได้:
- เก็บข้อมูล volumes – หากเปิดใช้งานฐานข้อมูลใน volumes จะได้รับการป้องกันจากการลบและจะยังคงพร้อมใช้งานหลังจาก redeploy
- สำหรับคอนเทนเนอร์แบบ horizontal คุณสามารถเลือกได้ 2 ตัวเลือก:
- Simultaneous deployment – redeploy nodes ทั้งหมดในครั้งเดียว ซึ่งค่อนข้างเร็วกว่า แต่จะทำให้แอปพลิเคชันของคุณหยุดทำงานในระยะเวลาสั้นๆ (มี downtime)
- Sequential deployment with delay – redeploy instances ใหม่ทีละรายการ ซึ่งจะค่อนข้างช้า แต่ node ยังคงทำงานอยู่เพื่อรันคำขอที่เข้ามาอยู่เสมอ (ไม่มี downtime)
หลังจากกำหนดค่าทั้งหมดเรียบร้อยแล้วให้คลิกปุ่ม Redeploy และกดปุ่มยืนยัน Yes
3. หลังจากการอัปเดตเสร็จสิ้นคุณจะเห็นการแจ้งเตือนที่มุมบนขวาของ dashboard
คลิกปุ่ม Show Logs เพื่อดูข้อมูลเกี่ยวกับคอนเทนเนอร์ที่อัปเดต Node ID, name:tag และ Duration
ในตอนนี้คุณรู้วิธี redeploy คอนเทนเนอร์ผ่าน Ruk-Com Cloud Dashboard แล้ว บทความต่อจากนี้คือวิธีการอัปเดตคอนเทนเนอร์ผ่าน Ruk-Com Cloud API/CS/CLI
Update Container via Ruk-Com Cloud API/CS/CLI
กระบวนการอัปเดตสามารถดำเนินการได้อัตโนมัติโดยใช้ Ruk-Com Cloud API, Cloud Scripting และ CLI (command-line interface)
เคล็ดลับ: ตัวอย่างข้อมูลโดยละเอียดเกี่ยวกับการ redeploy คอนเทนเนอร์ผ่าน CLI
การ redeploy คอนเทนเนอร์ใหม่จะดำเนินการกับวิธี environment.Control.RedeployContainers ซึ่งสามารถจัดการด้วยพารามิเตอร์ต่อไปนี้:
- envName – ชื่อของ environment ที่คอนเทนเนอร์ควรจะ redeploy
- session – ระบุ session ของผู้ใช้งาน (หรือ token) เพื่อใช้สำหรับการพิสูจน์ตัวตน
- nodeGroup – ระบุ environment layer ที่ต้องการอัปเดต (ไม่บังคับ)
- nodeId – ระบุหมายเลขประจำตัวของคอนเทนเนอร์เฉพาะที่จะ redeploy (ไม่บังคับ)
คุณต้องระบุพารามิเตอร์ nodeGroup หรือ nodeId เพื่อกำหนดเป้าหมายของการดำเนินการ การละเว้น nodeGroup หากไม่ได้ระบุไว้อาจล้มเหลว
- tag – เวอร์ชันของ image ที่จะติดตั้ง (deploy)
- useExistingVolumes – ตั้งค่าเป็น true เพื่อเก็บข้อมูลไว้ใน volumes ที่อยู่ภายในคอนเทนเนอร์ที่อัปเดตแล้ว (ไม่บังคับ)
- login และ password – ข้อมูลรับรองการเข้าถึง image จาก private registry (ไม่บังคับ)
- skipReinstall – กำหนดว่าควรแตก image บนระบบไฟล์ที่มีอยู่ (true) หรือติดตั้งกับอินสแตนซ์ใหม่ (ค่าเริ่มต้น false) (ไม่บังคับ)
คุณสามารถใช้โครงสร้างต่อไปนี้เพื่อกำหนดการอัปเดตคอนเทนเนอร์ภายใน automation scripts:
1. การ redeploy layer ของคอนเทนเนอร์ทั้งหมด
ดังนี้:
- {nodeGroup} – environment layer (หรือ node group) ที่ควรอัปเดตทั้งหมด
- {myImage} – ชื่อของ image ที่ต้องการจะ deploy
- {newTag} – เวอร์ชันของ Image ที่ต้องการ
2. อัปเดตคอนเทนเนอร์โดยเฉพาะ
ในที่นี้ควรแทนค่า {nodeId} ด้วยเลข ID ของ node ที่ต้องการ (ส่วนของตัวอื่นๆเหมือนกับตัวอย่างด้านบน)
Saving Custom Data during Container Redeploy
ในแต่ละคอนเทนเนอร์ที่จัดการโดย Ruk-Com Cloud จะมีไฟล์พิเศษชื่อว่า redeploy.conf ซึ่งจะจัดเก็บลิสที่จำเป็นของคอนเทนเนอร์ โดยการตั้งค่าเหล่านี้จะถูกเก็บรักษาไว้ในแพลตฟอร์มโดยอัตโนมัติในระหว่างการ redeploy คอนเทนเนอร์ ด้วยเหตุนี้ไฟล์ทั่วไปบางไฟล์จะถูกจัดเตรียมไว้ใน stacks ทั้งหมด:
- /etc/jelastic/redeploy.conf – การกำหนดค่า redeploy ในปัจจุบัน (เพื่อจัดเก็บรายการที่จำเป็นสำหรับการบันทึกไฟล์และที่เก็บรวบรวมไฟล์ต่างๆ ระหว่างการติดตั้งคอนเทนเนอร์ใหม่แต่ละครั้ง)
- ${home}/.bash_profile – ประกอบด้วยการตั้งค่า SSH shell เริ่มต้น (เช่นข้อความแนะนำ shell,การ config ไฟล์ที่จำเป็นจะต้องดึงข้อมูล ฯลฯ)
- /etc/sysconfig/iptables – จัดเก็บกฏของ firewall เริ่มต้น
- /etc/sysconfig/iptables-custom – ประกอบด้วยกฏของ firewall ที่กำหนดเอง
- /var/lib/jelastic/keys – จัดเก็บ SSH private keys ที่อัปโหลดซึ่งจำเป็นต่อการเข้าถึงคอนเทนเนอร์ผ่าน SSH และสำหรับการโต้ตอบกับคอนเทนเนอร์อื่น
การเก็บรักษาลิสเริ่มต้นของการกำหนดค่าไว้ สามารถเพิ่มเติมร่วมกับไฟล์และโฟลเดอร์ที่กำหนดเองของคุณโดยเปิดไฟล์ redeploy.conf และเพิ่มชื่อ path ไปยังรายการที่คุณต้องการ (แต่ละรายการควรระบุแยกบรรทัดกัน)
Creating File Backup Copy Upon Image Redeployment
Ruk-Com Cloud PaaS จัดเตรียมวิธีที่ง่ายและสะดวกในการสำรองข้อมูลสำหรับ configuration files ในระหว่างที่อัปเดตคอนเทนเนอร์ กล่าวคือ นอกเหนือจากการแทนที่การกำหนดค่าที่ระบุเวอร์ชันจาก tag ใหม่แล้วสำเนาของไฟล์ก่อน redeploy จะถูกเก็บรักษาไว้
ในส่วนของการสำรองข้อมูล คุณจะต้องระบุ path ไปยังไฟล์ที่จำเป็น redeploy.conf จากนั้นเพิ่มคำนำหน้าไฟล์ “backup:” เพื่อบันทึก:
หมายเหตุ: การดำเนินการนี้พร้อมใช้งานสำหรับไฟล์เท่านั้น (ไม่ใช่ที่จัดเก็บไฟล์ directories)
หลังจาก redeploy การกำหนดค่าจากคอนเทนเนอร์เก่าสามารถจำแนกได้โดยค้นหาจากส่วนขยาย “.backup” ซึ่งสามารถใช้สำหรับการย้อนกลับได้ทันที หากไม่สามารถเข้ากันได้กับการกำหนดค่าใหม่หรือการวิเคราะห์การเปลี่ยนแปลง
ยกตัวอย่างเช่น การจัดการ PHP application servers ของ Ruk-Com Cloud ทั้งหมดเพื่อสร้างการสำรองข้อมูล /etc/php.ini config.
หลังจากอัปเดตคอนเทนเนอร์คุณจะเห็นไฟล์ php.ini เวอร์ชันใหม่และเวอร์ชันก่อนหน้า
หมายเหตุ: การสำรองไฟล์ {file_name} ใหม่จะแทนที่ข้อมูลสำรองก่อนหน้าโดยอัตโนมัติ (ไฟล์ชื่อเดิมที่มีอยู่) ในระหว่างการ redeploy
ด้วยวิธีนี้คุณสามารถเปลี่ยนไปใช้การตั้งค่าก่อนหน้านี้ได้อย่างง่ายดายโดยแทนที่ไฟล์ php.ini ด้วยการสำรองข้อมูล (เช่นการเปลี่ยนชื่อไฟล์หรือการคัดลอกเนื้อหา) ตอนนี้คุณก็ได้รู้วิธีจัดการ templates versions (Docker tags) ของคอนเทนเนอร์ภายใน Ruk-Com Cloud PaaS แล้วติดตั้ง