Redeploy Container
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
ตรวจสอบชื่อเมนู ตัวเลือก และข้อกำหนดล่าสุดจากเนื้อหาภาษาอังกฤษในหน้าเดียวกันก่อนดำเนินการกับระบบจริง
วัตถุประสงค์
บทความนี้อธิบายการใช้งาน Redeploy Container บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง
ก่อนเริ่มดำเนินการ
- เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
- ตรวจสอบชื่อ Environment, Region และ Resource เป้าหมายก่อนบันทึกการเปลี่ยนแปลง
- สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production
โซลูชันส่วนใหญ่ของ Docker (รวมถึงกองที่จัดการโดย Ruk-Com Cloud) ได้รับการพัฒนาผลิตภัณฑ์เป็นเวอร์ชันใหม่และการแก้ไขอย่างต่อเนื่อง ดังนั้นเราจึงแนะนำให้คุณอัปเดต Template เป็นประจำตามเวอร์ชันล่าสุด
การดำเนินการดังกล่าว เรียกว่า "Deploy ใหม่"เมื่อมีการจัดการบน Platform จะมีข้อมูลจำเพาะดังต่อไปนี้:
- ข้อมูลผู้ใช้งานแบบกำหนดเองและไฟล์ที่ละเอียดอ่อนในระบบจะถูกเก็บรักษาไว้ในระหว่างการอัปเดต:
- เนื้อหาของไดรฟ์ข้อมูล เล่ม(ค่าเริ่มต้นและแบบกำหนดเอง)
- ลิสไฟล์ใน/etc/Ruk-Com PaaS/redeploy.conf(การกำหนดค่าเฉพาะของ Stack Ruk-Com Cloud) เพื่อรับรองว่า Container สามารถใช้งานได้
- การกำหนดค่าที่เกี่ยวข้องกับAutoFS และ NFS(/etc/autofs.Ruk-Com PaaS, /etc/auto.master, /etc/exports)
- การกำหนดค่าFirewall(/etc/sys กำหนดค่า/iptables-กำหนดเอง, /etc/sys กำหนดค่า/iptables4-Ruk-Com PaaS, /etc/sys กำหนดค่า/iptables6-Ruk-Com PaaS, /etc/iptables/rules.v4)
- การเข้าถึงข้อมูลสสส (/root/.ssh/authorized_keys, /root/.ssh/authorized_keys2, /root/.ssh/id_rsa)
- การกำหนดค่าแบบกำหนดเองที่ระบุไว้ก่อนหน้านี้ทั้งหมดจะไม่ได้รับผลกระทบ เช่น run commands, links, variables และอื่นๆ
- หากใช้งานกับหลายๆ instances (ปรับขนาดแบบแนวนอน) สามารถดำเนินการอัปเดต Container ได้ทีละรายการ โดยไม่หยุดทำงาน (downtime)
ด้วยวิธีนี้คุณสามารถอัปเดต Docker-based container เป็นเวอร์ชันใหม่ได้ โดยจะไม่ส่งผลกระทบต่อ Application ภายในด้วย Ruk-Com Cloud PaaS การ redeploy Container ใหม่สามารถทำได้ง่าย เพียงไม่กี่ขั้นตอน เช่นคลิกผ่าน dashboard UI หรือทำงานอัตโนมัติ ผ่าน API
หมายเหตุ:
การทำงานร่วมกับ MySQL, MariaDB, หรือ Percona databases จะไม่รองรับการ downgrade (การ redeploy เป็นเวอร์ชันที่เก่ากว่า) แต่หากจำเป็นต้องดำเนินการ เราขอแนะนำให้สำรองข้อมูลและกู้ database คืนหลังจากการ redeploy (หรือใน Container ที่แยกออกจากกันทั้งหมด)
อัปเดต Container ผ่าน Dashboard
วิธีที่ใช้งานง่ายที่สุดสำหรับการติดตั้งแท็ก Template ใหม่ (redeploy) คือการใช้ Ruk-Com Cloud Dashboard ตามคำแนะนำและขั้นตอนที่จำเป็นดังต่อไปนี้:
1. การปรับการใช้งานใหม่สามารถเข้าถึงได้ 2 วิธีที่แตกต่างกัน:
- เลือกปุ่ม Redeploy Container(s) จาก node/layer ที่ต้องการ (สำหรับการอัปเดต Container ทั้งหมดในครั้งเดียว)

- เลือกปุ่มการเปลี่ยนแปลง TopologyEnvironmentเพื่อปรับเปลี่ยน environment เดิมที่มีอยู่

- คลิกไอคอนดินสอเพื่อเปลี่ยน Tag version สำหรับ Container ของคุณ

นอกจากนี้คุณสามารถปรับเปลี่ยนตัวเลือกเพิ่มเติมได้:
- เก็บข้อมูล volumes - หากเปิดใช้งาน Database ใน volumes จะได้รับการป้องกันจากการลบและจะยังคงพร้อมใช้งานหลังจาก redeploy
- สำหรับ Container แบบ horizontal คุณสามารถเลือกได้ 2 ตัวเลือก:
- การ Deploy พร้อมกัน- redeploy nodes ทั้งหมดในครั้งเดียว ซึ่งค่อนข้างเร็วกว่า แต่จะทำให้ Application ของคุณหยุดทำงานในระยะเวลาสั้นๆ (มี downtime)
- การ Deploy ตามลำดับโดยมีความล่าช้า- redeploy instances ใหม่ทีละรายการ ซึ่งจะค่อนข้างช้า แต่ node ยังคงทำงานอยู่เพื่อรันคำขอที่เข้ามาอยู่เสมอ (ไม่มี downtime)
หลังจากกำหนดค่าทั้งหมดแล้วให้คลิกปุ่มDeploy ใหม่และกดปุ่มยืนยันใช่

3. หลังจากการอัปเดตเสร็จสิ้นคุณจะเห็นการแจ้งเตือนที่มุมบนขวาของ dashboard

คลิกปุ่มแสดงบันทึกเพื่อดูข้อมูลเกี่ยวกับ Container ที่อัปเดต Node ID, name:tag และ Duration

ในตอนนี้คุณรู้วิธี redeploy Container ผ่าน Ruk-Com Cloud Dashboard แล้ว บทความต่อจากนี้คือวิธีการอัปเดต Container ผ่าน Ruk-Com Cloud API/CS/CLI
อัปเดต Container ผ่าน Ruk-Com Cloud API/CS/CLI
กระบวนการอัปเดตสามารถดำเนินการได้อัตโนมัติโดยใช้ Ruk-Com Cloud API, Cloud Scripting และ CLI (command-line interface)
เคล็ดลับ:ตัวอย่างข้อมูลโดยละเอียดเกี่ยวกับการ redeploy Container ผ่านคลีไอ
การ redeploy Container ใหม่จะดำเนินการกับวิธีEnvironment การควบคุม RedeployContainersซึ่งสามารถจัดการด้วย Parameter ต่อไปนี้:
- envName- ชื่อของ environment ที่ Container ควรจะ redeploy
- Session- ระบุ session ของผู้ใช้งาน (หรือโทเค็น) เพื่อใช้สำหรับการพิสูจน์ตัวตน
- Node กรุ๊ป- ระบุชั้น Environment ที่ต้องการอัปเดต (ไม่บังคับ)
- รหัส Node- ระบุหมายเลขประจำตัวของ Container เฉพาะที่จะ redeploy (ไม่บังคับ)
คุณต้องระบุ ParameterNode กรุ๊ปหรือรหัส Node เพื่อกำหนดเป้าหมายของการดำเนินการ การละเว้น nodeGroup หากไม่ได้ระบุไว้อาจล้มเหลว
- แท็ก- เวอร์ชันของ image ที่จะติดตั้ง (deploy)
- ใช้ปริมาณที่มีอยู่- ตั้งค่าเป็น true เพื่อเก็บข้อมูลไว้ใน volumes ที่อยู่ภายใน Container ที่อัปเดตแล้ว (ไม่บังคับ)
- เข้าสู่ระบบ และ password- ข้อมูลรับรองการเข้าถึง image จาก private registry (ไม่บังคับ)
- ข้ามติดตั้งใหม่- กำหนดว่าควรแตก image บน File System ที่มีอยู่ (true) หรือติดตั้งกับ Instance ใหม่ (ค่าเริ่มต้น false) (ไม่บังคับ)

คุณสามารถใช้โครงสร้างต่อไปนี้เพื่อกำหนดการอัปเดต Container ภายใน Script อัตโนมัติ:
1. การ redeploy layer ของ Container ทั้งหมด

ดังนี้:
- {กลุ่ม Node}-environment layer (หรือ node group)ที่ควรอัปเดตทั้งหมด
- {รูปภาพของฉัน}- ชื่อของ image ที่ต้องการจะ deploy
- {แท็กใหม่}- เวอร์ชันของ Image ที่ต้องการ
2. อัปเดต Container โดยเฉพาะ

ในตัวอย่างนี้ควรแทนค่า {nodeId} ด้วยเลข ID ของ node ที่ต้องการ (ส่วนของตัวอื่นๆเหมือนกับตัวอย่างด้านบน)
การบันทึกข้อมูลที่กำหนดเองในระหว่างการ Redeploy Container
ในแต่ละ Container ที่จัดการโดย Ruk-Com Cloud จะมีไฟล์พิเศษชื่อว่าDeploy ใหม่.confซึ่งจะจัดเก็บลิสที่จำเป็นของ Container โดยการตั้งค่าเหล่านี้จะถูกเก็บรักษาไว้ใน Platform โดยอัตโนมัติในระหว่างการ redeploy Container ด้วยเหตุนี้ไฟล์ทั่วไปบางไฟล์จะถูกจัดเตรียมไว้ใน stacks ทั้งหมด:
- /etc/Ruk-Com PaaS/redeploy.conf- การกำหนดค่า redeploy ในปัจจุบัน (เพื่อจัดเก็บรายการที่จำเป็นสำหรับการบันทึกไฟล์และที่เก็บรวบรวมไฟล์ต่างๆ ระหว่างการติดตั้ง Container ใหม่แต่ละครั้ง)
- ${home}/.bash_profile- ประกอบด้วยการตั้งค่า SSH shell เริ่มต้น (เช่นข้อความแนะนำ shell, การ กำหนดค่า ไฟล์ที่จำเป็นจะต้องดึงข้อมูล ฯลฯ)
- /etc/sys กำหนดค่า/iptables- จัดเก็บกฏของ firewall เริ่มต้น
- /etc/sys กำหนดค่า/iptables-custom.php- ประกอบด้วยกฏของfirewall ที่กำหนดเอง
- /var/lib/Ruk-Com PaaS/keys- จัดเก็บ SSH private keys ที่อัปโหลดซึ่งจำเป็นต่อการเข้าถึง Container ผ่าน SSH และสำหรับการโต้ตอบกับ Container อื่น
การเก็บรักษาลิสเริ่มต้นของการกำหนดค่าไว้ สามารถเพิ่มเติมร่วมกับไฟล์และโฟลเดอร์ที่กำหนดเองของคุณโดยเปิดไฟล์Deploy ใหม่.confและเพิ่มชื่อ path ไปยังรายการที่คุณต้องการ (แต่ละรายการควรระบุแยกบรรทัดกัน)

การสร้างสำเนาสำรองไฟล์เมื่อมีการ DeployImage ใหม่
Ruk-Com Cloud PaaS จัดเตรียมวิธีที่ง่ายและสะดวกในการสำรองข้อมูลสำหรับ กำหนดค่า uration files ในระหว่างที่อัปเดต Container กล่าวคือ นอกเหนือจากการแทนที่การกำหนดค่าที่ระบุเวอร์ชันจาก tag ใหม่แล้วสำเนาของไฟล์ก่อน redeploy จะถูกเก็บรักษาไว้
ในส่วนของการสำรองข้อมูล คุณจะต้องระบุ path ไปยังไฟล์ที่จำเป็น redeploy.conf จากนั้นเพิ่มคำนำหน้าไฟล์ “backup:” เพื่อบันทึก:

หมายเหตุ:การดำเนินการนี้พร้อมใช้งานสำหรับไฟล์เท่านั้น (ไม่ใช่ที่จัดเก็บไฟล์Directory)
หลังจาก redeploy การกำหนดค่าจาก Container เก่าสามารถจำแนกได้โดยค้นหาจากส่วนขยาย".สำรองข้อมูล"ซึ่งสามารถใช้สำหรับการย้อนกลับได้ทันที หากไม่สามารถเข้ากันได้กับการกำหนดค่าใหม่หรือการวิเคราะห์การเปลี่ยนแปลง
ยกตัวอย่างเช่น การจัดการ PHP application servers ของ Ruk-Com Cloud ทั้งหมดเพื่อสร้างการสำรองข้อมูล /etc/php.ini กำหนดค่า.

หลังจากอัปเดต Container คุณจะเห็นไฟล์ php.ini เวอร์ชันใหม่และเวอร์ชันก่อนหน้า

หมายเหตุ:การสำรองไฟล์ {file_name} ใหม่จะแทนที่ข้อมูลสำรองก่อนหน้าโดยอัตโนมัติ (ไฟล์ชื่อเดิมที่มีอยู่) ในระหว่างการ redeploy
ด้วยวิธีนี้คุณสามารถเปลี่ยนไปใช้การตั้งค่าก่อนหน้านี้ได้อย่างง่ายดายโดยแทนที่ไฟล์ php.ini ด้วยการสำรองข้อมูล (เช่นการเปลี่ยนชื่อไฟล์หรือการคัดลอกเนื้อหา) ตอนนี้คุณก็ได้รู้วิธีจัดการ templates versions (Docker tags) ของ Container ภายใน Ruk-Com Cloud PaaS แล้วติดตั้ง
