บันทึก. แปล: ผู้เขียนบทความต้นฉบับคือ Théo Chamley สถาปนิก Google Cloud Solutions ในโพสต์สำหรับบล็อก Google Cloud นี้ เขาได้สรุปคำแนะนำโดยละเอียดเพิ่มเติมของบริษัทที่เรียกว่า "
ในบทความนี้ เราจะพูดถึงรายการสิ่งที่คุณควรรู้และทำเพื่อเรียกใช้คอนเทนเนอร์อย่างมีประสิทธิภาพบน Kubernetes ผู้ที่ต้องการเจาะลึกรายละเอียดควรอ่านเนื้อหา
1. ใช้กลไกการบันทึกคอนเทนเนอร์ดั้งเดิม
หากแอปพลิเคชันทำงานบนคลัสเตอร์ Kubernetes ก็ไม่จำเป็นต้องใช้บันทึกมากนัก มีแนวโน้มว่าระบบการบันทึกแบบรวมศูนย์จะถูกสร้างขึ้นในคลัสเตอร์ที่คุณใช้อยู่แล้ว กรณีใช้ Kubernetes Engine ต้องรับผิดชอบ
หากต้องการคุณสามารถเขียนบันทึกได้เช่นกัน
2. ตรวจสอบให้แน่ใจว่าคอนเทนเนอร์ไม่มีสถานะและไม่เปลี่ยนรูป
เพื่อให้คอนเทนเนอร์ทำงานได้อย่างถูกต้องในคลัสเตอร์ Kubernetes คอนเทนเนอร์เหล่านั้นจะต้องไม่มีสถานะและไม่เปลี่ยนรูป เมื่อตรงตามเงื่อนไขเหล่านี้ Kubernetes ก็สามารถทำงานได้ โดยสร้างและทำลายเอนทิตีแอปพลิเคชันได้ทุกที่ทุกเวลาที่จำเป็น
ไร้สัญชาติ หมายความว่าสถานะใด ๆ (ข้อมูลถาวรทุกประเภท) จะถูกเก็บไว้นอกคอนเทนเนอร์ คุณสามารถใช้ที่จัดเก็บข้อมูลภายนอกประเภทต่างๆ ได้ขึ้นอยู่กับความต้องการ:
แก้ไขเปลี่ยนแปลงและหยุดระบบไม่ได้ หมายความว่าคอนเทนเนอร์จะไม่ได้รับการแก้ไขตลอดอายุการใช้งาน: ไม่มีการอัพเดต โปรแกรมแก้ไข การเปลี่ยนแปลงการกำหนดค่า หากคุณต้องการอัปเดตโค้ดแอปพลิเคชันของคุณหรือใช้แพตช์ ให้สร้างอิมเมจใหม่แล้วปรับใช้ ขอแนะนำให้ย้ายการกำหนดค่าคอนเทนเนอร์ (พอร์ตการฟัง ตัวเลือกสภาพแวดล้อมรันไทม์ ฯลฯ) จากภายนอก - ไปที่
ตัวอย่างการอัปเดตการกำหนดค่าการปรับใช้ใน Kubernetes โดยใช้ ConfigMap ที่ติดตั้งในพ็อดเป็นการกำหนดค่า
3. หลีกเลี่ยงคอนเทนเนอร์พิเศษ
คุณไม่ได้เรียกใช้แอปพลิเคชันในฐานะรูทบนเซิร์ฟเวอร์ของคุณใช่ไหม หากผู้โจมตีเข้าสู่แอปพลิเคชัน เขาจะสามารถเข้าถึงรูทได้ ข้อควรพิจารณาเดียวกันนี้ใช้กับการไม่ใช้งานคอนเทนเนอร์ที่ได้รับสิทธิพิเศษ หากคุณต้องการเปลี่ยนการตั้งค่าบนโฮสต์ คุณสามารถระบุเฉพาะคอนเทนเนอร์ได้ ความสามารถในการ โดยใช้ตัวเลือก securityContext
หากคุณดูแลคลัสเตอร์ คุณก็สามารถใช้ได้
4. หลีกเลี่ยงการรันในฐานะรูท
มีการพูดคุยถึงคอนเทนเนอร์ที่ได้รับสิทธิ์แล้ว แต่จะดีกว่านี้อีกหากคุณไม่ได้รันแอปพลิเคชันภายในคอนเทนเนอร์ในฐานะรูท หากผู้โจมตีพบช่องโหว่ระยะไกลในแอปพลิเคชันที่มีสิทธิ์รูทที่อนุญาตให้มีการเรียกใช้โค้ด หลังจากนั้นเขาสามารถออกจากคอนเทนเนอร์ผ่านช่องโหว่ที่ยังไม่ทราบแน่ชัด เขาจะได้รับการรูทบนโฮสต์
วิธีที่ดีที่สุดในการหลีกเลี่ยงสิ่งนี้คือการไม่เรียกใช้สิ่งใด ๆ ที่เป็นรูทตั้งแต่แรก เมื่อต้องการทำเช่นนี้ คุณสามารถใช้คำสั่งได้ USER
в Dockerfile
หรือ runAsUser
ในคูเบอร์เนเตส ผู้ดูแลระบบคลัสเตอร์ยังสามารถกำหนดค่าลักษณะการบังคับใช้ได้โดยใช้
5. ทำให้แอปพลิเคชันง่ายต่อการตรวจสอบ
เช่นเดียวกับการบันทึก การตรวจสอบเป็นส่วนสำคัญของการจัดการแอปพลิเคชัน โซลูชันการตรวจสอบยอดนิยมในชุมชน Kubernetes คือ
แดชบอร์ด Kubernetes บน Stackdriver
Prometheus คาดว่าแอปพลิเคชันจะส่งต่อตัววัดไปยังตำแหน่งข้อมูล HTTP มีไว้เพื่อสิ่งนี้
6. ทำให้สถานะสุขภาพของแอปพร้อมใช้งาน
การจัดการแอปพลิเคชันในการผลิตได้รับความช่วยเหลือจากความสามารถในการสื่อสารสถานะไปยังทั้งระบบ แอปพลิเคชันทำงานอยู่หรือไม่ ไม่เป็นไรใช่ไหม? คุณพร้อมที่จะรับการเข้าชมแล้วหรือยัง? เขาประพฤติตัวอย่างไร? วิธีที่พบบ่อยที่สุดในการแก้ปัญหานี้คือการใช้การตรวจสุขภาพ (ตรวจสุขภาพ). Kubernetes มีสองประเภท:
สำหรับการสอบสวนความมีชีวิตชีวา (การตรวจสอบความมีชีวิตชีวา) แอปพลิเคชันต้องมีจุดสิ้นสุด HTTP ที่ส่งคืนการตอบสนอง "200 ตกลง" หากใช้งานได้และเป็นไปตามการขึ้นต่อกันขั้นพื้นฐาน สำหรับการสอบสวนความพร้อม (การตรวจสอบความพร้อมในการให้บริการ) แอปพลิเคชันต้องมีจุดสิ้นสุด HTTP อื่นที่ส่งคืนการตอบสนอง "200 ตกลง" หากแอปพลิเคชันอยู่ในสถานะปกติ ขั้นตอนการเตรียมใช้งานเสร็จสมบูรณ์แล้ว และคำขอที่ถูกต้องใด ๆ ไม่ส่งผลให้เกิดข้อผิดพลาด Kubernetes จะกำหนดเส้นทางการรับส่งข้อมูลไปยังคอนเทนเนอร์หากแอปพลิเคชันพร้อมตามการตรวจสอบเหล่านี้เท่านั้น สามารถรวมจุดสิ้นสุดสองจุดได้หากไม่มีความแตกต่างระหว่างสถานะความพร้อมใช้งานและความพร้อม
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ในบทความที่เกี่ยวข้องจาก Sandeep Dinesh ผู้สนับสนุนนักพัฒนาจาก Google: “
7. เลือกเวอร์ชันรูปภาพของคุณอย่างระมัดระวัง
รูปภาพสาธารณะและส่วนตัวส่วนใหญ่ใช้ระบบแท็กที่คล้ายคลึงกับระบบที่อธิบายไว้ใน latest
สามารถย้ายจากรูปภาพหนึ่งไปอีกรูปภาพหนึ่งได้บ่อยครั้ง - ไม่สามารถวางใจได้หากคุณต้องการการสร้างและการติดตั้งที่คาดการณ์และทำซ้ำได้
คุณสามารถใช้แท็ก X.Y.Z
(เกือบจะไม่เปลี่ยนแปลงตลอดเวลา) แต่ในกรณีนี้ ให้ติดตามแพตช์และอัปเดตรูปภาพทั้งหมด หากรูปภาพที่คุณใช้มีแท็ก X.Y
นี่เป็นตัวเลือกที่ดีสำหรับค่าเฉลี่ยสีทอง เมื่อเลือกแล้ว คุณจะได้รับแพตช์โดยอัตโนมัติและในขณะเดียวกันก็ขึ้นอยู่กับเวอร์ชันที่เสถียรของแอปพลิเคชัน
ปล.จากผู้แปล
อ่านเพิ่มเติมในบล็อกของเรา:
- «
สถิติ CNCF ใหม่บนคอนเทนเนอร์ คลาวด์เนทีฟ และ Kubernetes "; - «
หลัก 7 ประการสำหรับการออกแบบแอปพลิเคชันบนคอนเทนเนอร์ "; - «
11 วิธีในการ (ไม่) ตกเป็นเหยื่อของการแฮ็ก Kubernetes "; - «
ประสบการณ์ของเรากับ Kubernetes ในโครงการขนาดเล็ก » (รีวิวและวิดีโอรายงาน); - «
การตรวจสอบและ Kubernetes » (รีวิวและวิดีโอรายงาน); - «
เราสร้างอิมเมจ Docker สำหรับ CI/CD อย่างรวดเร็วและสะดวกด้วย dapp » (รีวิวและวิดีโอรายงาน); - «
แนวทางปฏิบัติในการจัดส่งอย่างต่อเนื่องด้วย Docker » (รีวิวและวิดีโอรายงาน); - «
ความตายของความบ้าคลั่งไมโครเซอร์วิสในปี 2018 '
ที่มา: will.com