การปรับใช้สีน้ำเงินเป็นกลยุทธ์การจัดการการเผยแพร่ซอฟต์แวร์ที่ใช้กันอย่างแพร่หลาย มันเกี่ยวข้องกับสภาพแวดล้อมของฮาร์ดแวร์ที่เหมือนกันสองสภาพแวดล้อม สภาพแวดล้อมหนึ่งที่ใช้งานอยู่และให้บริการผู้ใช้ ในขณะที่อีกสภาพแวดล้อมหนึ่งยังคงอยู่ในโหมดสแตนด์บาย วิธีการนี้ช่วยให้การจัดการการอัปเดตซอฟต์แวร์เป็นไปอย่างราบรื่นและลดความเสี่ยงของการหยุดทำงานของระบบ
โค้ดใหม่จะเปิดตัวครั้งแรกในสภาพแวดล้อมการจัดเตรียม ซึ่งผ่านการทดสอบอย่างเข้มงวด เมื่อทีมอนุมัติรหัสที่อัปเดตแล้ว การกำหนดค่าเราเตอร์จะถูกปรับเพื่อเปลี่ยนทราฟฟิกของแอปพลิเคชันเป็นสภาพแวดล้อมที่ใช้งานจริง หากมีปัญหาใดๆ เกิดขึ้น ปัญหานั้นจะย้อนกลับไปยังสภาพแวดล้อมการใช้งานจริงก่อนหน้าเพื่อใช้ซอฟต์แวร์เวอร์ชันดั้งเดิมต่อไป
ประโยชน์ที่น่าสังเกตบางประการของการปรับใช้สีน้ำเงิน-เขียว ได้แก่:
Kubernetes กำลังได้รับความนิยมเพิ่มขึ้นในฐานะสภาพแวดล้อมสำหรับการพัฒนา การทดสอบ และการปรับใช้การผลิต แม้ว่าจะทำให้การปรับใช้แอปพลิเคชันง่ายขึ้น แต่ Kubernetes ก็ไม่ได้นำเสนอฟังก์ชันการปรับใช้แบบเนทีฟสีน้ำเงิน-เขียว แต่จะจัดเตรียมออบเจกต์การปรับใช้ที่เปิดใช้งานการอัปเดตแบบต่อเนื่อง ซึ่งสามารถแทนที่พ็อดของแอปพลิเคชันด้วยเวอร์ชันล่าสุดได้ในระดับหนึ่งโดยไม่ต้องหยุดทำงาน
การปรับใช้แบบต่อเนื่องมีข้อจำกัดบางประการ พวกเขาสามารถทำให้การย้อนกลับมีความท้าทาย และอาจต้องมีการตรวจสอบความสมบูรณ์ของ Kubernetes เพื่อประเมินสถานะของพ็อดภายในการปรับใช้ นอกจากนี้ การปรับใช้แบบต่อเนื่องอาจใช้เวลานานกว่าเมื่อเทียบกับรูปแบบสีน้ำเงิน-เขียว ซึ่งการเปลี่ยนไปใช้เวอร์ชันใหม่จะเกิดขึ้นทันที
หากต้องการปรับใช้การปรับใช้สีน้ำเงินกับ Kubernetes อย่างมีประสิทธิภาพ ให้พิจารณาเครื่องมือต่อไปนี้:
Argo Rollouts เป็นชุดโอเพ่นซอร์สของตัวควบคุม Kubernetes และ Custom Resource Definitions (CRD) ที่เพิ่มคุณสมบัติการปรับใช้ขั้นสูง เช่น การปรับใช้สีน้ำเงิน-เขียวและ Canary การทดลอง และความสามารถในการจัดส่งแบบก้าวหน้าอื่นๆ สามารถเลือกรวมกับ Kubernetes ingress controllers และ service meshes เพื่อจัดการทราฟฟิกระหว่างการอัปเดต สามารถค้นหาและตีความเมตริกจากระบบอื่นเพื่อตรวจสอบตัวบ่งชี้ประสิทธิภาพหลัก (KPI) และส่งเสริมหรือย้อนกลับการเผยแพร่โดยอัตโนมัติ
Flagger เป็นเครื่องมือการนำส่งแบบโปรเกรสซีฟที่ทำให้กระบวนการเผยแพร่แอปพลิเคชันที่ทำงานบน Kubernetes เป็นไปโดยอัตโนมัติ ช่วยลดความเสี่ยงในการนำซอฟต์แวร์เวอร์ชันใหม่มาใช้ในการผลิตโดยเปลี่ยนเส้นทางการรับส่งข้อมูลเป็นเวอร์ชันที่อัปเดตอย่างค่อยเป็นค่อยไป ขณะที่ประเมินเมตริกและดำเนินการทดสอบความสอดคล้อง Flagger รองรับกลยุทธ์การปรับใช้หลายตัว เช่น canary releases การทดสอบ A/B และการปรับใช้สีน้ำเงิน-เขียว และรวมเข้ากับ Kubernetes ingress controllers, service meshes และระบบตรวจสอบต่างๆ
GitLab CI/CD เป็นแพลตฟอร์ม DevOps ที่อัดแน่นไปด้วยฟีเจอร์ต่างๆ ซึ่งปรับปรุงโครงการพัฒนาซอฟต์แวร์ขนาดใหญ่ นอกจากที่เก็บโค้ดและความสามารถในการติดตามปัญหาแล้ว GitLab ยังมีระบบอัตโนมัติ CI/CD ที่รองรับทั้งการปรับใช้ที่ทริกเกอร์ด้วยตนเองและการปรับใช้ตามกำหนดเวลาไปยังระบบการผลิต Kubernetes รวมถึงกลยุทธ์การปรับใช้แบบก้าวหน้า เช่น การปรับใช้สีน้ำเงิน-เขียว
CircleCI เป็นแพลตฟอร์ม CI/CD ที่ช่วยให้ทีมวิศวกรรมสร้าง ทดสอบ และปรับใช้ซอฟต์แวร์ ในขณะที่ติดตามการเปลี่ยนแปลงโค้ดแบบเรียลไทม์ผ่านแดชบอร์ด UI CircleCI รองรับการปรับใช้กับคลัสเตอร์ Kubernetes และผสานรวมกับบริการอื่นๆ สำหรับกลยุทธ์การปรับใช้ เช่น แฟล็กฟีเจอร์ สีฟ้า-เขียว และการปรับใช้แบบ Canary
บทความนี้ได้แนะนำรูปแบบการปรับใช้สีน้ำเงิน-เขียว ประโยชน์ต่างๆ และตัวเลือกสำหรับการนำเทคนิคนี้ไปใช้ภายในสภาพแวดล้อม Kubernetes เมื่อพิจารณาถึงเครื่องมือต่างๆ เช่น Argo Rollouts, Flagger, GitLab CI/CD หรือ CircleCI คุณจะได้รับการเผยแพร่ซอฟต์แวร์ที่ราบรื่นขึ้น ลดเวลาหยุดทำงาน และปรับปรุงประสบการณ์โดยรวมสำหรับทั้งนักพัฒนาและผู้ใช้ปลายทางในสภาพแวดล้อม Kubernetes ของคุณ ขณะที่คุณสำรวจเครื่องมือเหล่านี้ ให้พิจารณาข้อกำหนดเฉพาะของขั้นตอนการพัฒนาซอฟต์แวร์ของคุณเพื่อระบุโซลูชันที่สอดคล้องกับความต้องการของทีมของคุณมากที่สุด