อะไรคือแนวทางปฏิบัติที่ดีสำหรับ K8S ในการจัดการสภาพแวดล้อมที่หลากหลาย (QA, Staging, Production, Dev ฯลฯ )
ตัวอย่างเช่นสมมติว่าทีมกำลังทำงานกับผลิตภัณฑ์ที่ต้องใช้ API สองสามตัวพร้อมกับแอปพลิเคชันส่วนหน้า โดยปกติสิ่งนี้จะต้องมีอย่างน้อย 2 สภาพแวดล้อม:
- การจัดเตรียม: สำหรับการทำซ้ำ / การทดสอบและการตรวจสอบความถูกต้องก่อนปล่อยไปยังไคลเอนต์
- การผลิต: นี่คือสภาพแวดล้อมที่ไคลเอนต์เข้าถึงได้ ควรมีคุณสมบัติที่เสถียรและผ่านการทดสอบอย่างดี
ดังนั้นสมมติว่าทีมกำลังใช้ Kubernetes แนวทางปฏิบัติที่ดีในการจัดสภาพแวดล้อมเหล่านี้คืออะไร จนถึงตอนนี้เราได้พิจารณาสองทางเลือก:
- ใช้คลัสเตอร์ K8s สำหรับแต่ละสภาพแวดล้อม
- ใช้คลัสเตอร์ K8 เพียงคลัสเตอร์เดียวและเก็บไว้ในเนมสเปซที่ต่างกัน
(1) ดูเหมือนเป็นตัวเลือกที่ปลอดภัยที่สุดเนื่องจากช่วยลดความเสี่ยงของความผิดพลาดของมนุษย์ที่อาจเกิดขึ้นและความล้มเหลวของเครื่องจักรซึ่งอาจทำให้สภาพแวดล้อมการผลิตตกอยู่ในอันตราย อย่างไรก็ตามสิ่งนี้มาพร้อมกับต้นทุนของเครื่องจักรหลักที่มากขึ้นและต้นทุนในการจัดการโครงสร้างพื้นฐานที่มากขึ้น
(2) ดูเหมือนว่าจะทำให้โครงสร้างพื้นฐานและการจัดการการปรับใช้ง่ายขึ้นเนื่องจากมีคลัสเตอร์เดียว แต่ทำให้เกิดคำถามสองสามข้อเช่น:
- เราจะแน่ใจได้อย่างไรว่าความผิดพลาดของมนุษย์อาจส่งผลกระทบต่อสภาพแวดล้อมการผลิต
- จะแน่ใจได้อย่างไรว่าโหลดสูงในสภาพแวดล้อมการจัดเตรียมจะไม่ทำให้ประสิทธิภาพการทำงานสูญเสียไปในสภาพแวดล้อมการผลิต
อาจมีข้อกังวลอื่น ๆ ดังนั้นฉันจึงติดต่อชุมชน K8s บน StackOverflow เพื่อทำความเข้าใจให้ดีขึ้นว่าผู้คนรับมือกับความท้าทายประเภทนี้อย่างไร