Container Redeploy

โซลูชันส่วนใหญ่ของ 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 และสำหรับการโต้ตอบกับคอนเทนเนอร์อื่น

นอกจากนี้คุณสามารถคลิกที่นี่เพื่อดูไฟล์ stack ที่แตกต่างกันโดยเฉพาะของ redeploy.conf สำหรับ node แต่ละประเภท

การเก็บรักษาลิสเริ่มต้นของการกำหนดค่าไว้ สามารถเพิ่มเติมร่วมกับไฟล์และโฟลเดอร์ที่กำหนดเองของคุณโดยเปิดไฟล์ redeploy.conf และเพิ่มชื่อ path ไปยังรายการที่คุณต้องการ (แต่ละรายการควรระบุแยกบรรทัดกัน)

อย่าลืม Save ไฟล์เมื่อมีการเปลี่ยนแปลง

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 แล้ว
ติดตั้ง