บันทึก. แปล: ผู้เขียนเนื้อหาต้นฉบับคือ Henning Jacobs จาก Zalando เขาสร้างเว็บอินเทอร์เฟซใหม่สำหรับการทำงานกับ Kubernetes ซึ่งอยู่ในตำแหน่ง "kubectl สำหรับเว็บ" เหตุใดโครงการโอเพ่นซอร์สใหม่จึงปรากฏขึ้นและโซลูชันที่มีอยู่ไม่ตรงตามเกณฑ์ - อ่านบทความของเขา
ในโพสต์นี้ ฉันจะตรวจสอบเว็บอินเทอร์เฟซแบบโอเพ่นซอร์ส Kubernetes ต่างๆ วางโครงร่างข้อกำหนดของฉันสำหรับ UI สากล และอธิบายว่าทำไมฉันถึงพัฒนา
กรณีการใช้งาน
ที่ Zalando เราให้บริการผู้ใช้ Kubernetes จำนวนมาก (900+) และคลัสเตอร์ (100+) มีกรณีการใช้งานทั่วไปสองสามกรณีที่จะได้รับประโยชน์จากเครื่องมือเว็บเฉพาะ:
- การสื่อสารกับเพื่อนร่วมงานเพื่อขอความช่วยเหลือ
- การตอบสนองต่อเหตุการณ์และการสอบสวนสาเหตุ
สนับสนุน
จากประสบการณ์ของฉัน การสื่อสารเพื่อสนับสนุนมักจะมีลักษณะเช่นนี้:
— ช่วยด้วย บริการของเรา XYZ ไม่พร้อมใช้งาน!
— คุณเห็นอะไรเมื่อคุณแสดง kubectl describe ingress ...
?
หรือสิ่งที่คล้ายกันสำหรับ CRD:
— ฉันมีปัญหากับบริการระบุตัวตน...
- คำสั่งสร้างอะไร? kubectl describe platformcredentialsset ...
?
การสื่อสารดังกล่าวมักจะเกิดจากการป้อนคำสั่งในรูปแบบต่างๆ kubectl
เพื่อระบุปัญหา เป็นผลให้ทั้งสองฝ่ายในการสนทนาถูกบังคับให้สลับระหว่างเทอร์มินัลและแชทบนเว็บอย่างต่อเนื่อง อีกทั้งพวกเขายังสังเกตเห็นสถานการณ์ที่แตกต่างกันอีกด้วย
ดังนั้น ฉันต้องการให้ส่วนหน้าของเว็บ Kubernetes อนุญาตสิ่งต่อไปนี้:
- ผู้ใช้สามารถทำได้ แลกเปลี่ยนลิงค์ และสังเกตสิ่งเดียวกัน
- จะช่วยได้ หลีกเลี่ยงความผิดพลาดของมนุษย์ ในการสนับสนุน: ตัวอย่างเช่น การเข้าสู่คลัสเตอร์ที่ไม่ถูกต้องบนบรรทัดคำสั่ง การพิมพ์ผิดในคำสั่ง CLI ฯลฯ
- จะอนุญาต สร้างมุมมองของคุณเอง เพื่อส่งให้เพื่อนร่วมงานคือเพิ่มคอลัมน์แท็กแสดงทรัพยากรหลายประเภทในหน้าเดียว
- ตามหลักการแล้ว เครื่องมือเว็บนี้ควรให้คุณตั้งค่าได้ ลิงก์ "ลึก" ไปยังส่วนเฉพาะของ YAML (เช่น การชี้ให้เห็นพารามิเตอร์ที่ไม่ถูกต้องซึ่งทำให้เกิดความล้มเหลว)
การตอบสนองและการวิเคราะห์เหตุการณ์
การตอบสนองต่อเหตุการณ์โครงสร้างพื้นฐานจำเป็นต้องมีการตระหนักรู้ในสถานการณ์ ความสามารถในการประเมินผลกระทบ และมองหารูปแบบในกลุ่ม ตัวอย่างชีวิตจริงบางส่วน:
- บริการการผลิตที่สำคัญกำลังประสบปัญหา และคุณจำเป็นต้องดำเนินการ ค้นหาทรัพยากร Kubernetes ทั้งหมดตามชื่อในทุกคลัสเตอร์เพื่อแก้ไขปัญหา;
- โหนดเริ่มลดลงเมื่อปรับขนาดและคุณต้องการ ค้นหาพ็อดทั้งหมดที่มีสถานะ "รอดำเนินการ" ในทุกคลัสเตอร์เพื่อประเมินขอบเขตของปัญหา
- ผู้ใช้แต่ละรายกำลังรายงานปัญหาเกี่ยวกับ DaemonSet ที่ใช้งานในทุกคลัสเตอร์และจำเป็นต้องทราบ ปัญหาคือทั้งหมดหรือไม่?.
วิธีแก้ปัญหามาตรฐานของฉันในกรณีเช่นนี้คือประมาณนั้น for i in $clusters; do kubectl ...; done
. แน่นอนว่ามีความเป็นไปได้ที่จะพัฒนาเครื่องมือที่มีความสามารถคล้ายคลึงกัน
เว็บอินเตอร์เฟส Kubernetes ที่มีอยู่
โลกโอเพ่นซอร์สของเว็บอินเทอร์เฟซสำหรับ Kubernetes นั้นมีขนาดไม่ใหญ่มาก* ดังนั้นฉันจึงพยายามรวบรวมข้อมูลเพิ่มเติมโดยใช้
*คำอธิบายของฉันเกี่ยวกับเว็บอินเทอร์เฟซสำหรับ Kubernetes ในจำนวนจำกัด: บริการคลาวด์และผู้ขาย Kubernetes มักจะเสนอส่วนหน้าของตนเอง ดังนั้นตลาดสำหรับ Kubernetes UI ฟรีที่ "ดี" จึงค่อนข้างน้อย
ฉันได้เรียนรู้ผ่านทวีต
K8แดช
“K8Dash เป็นวิธีที่ง่ายที่สุดในการจัดการคลัสเตอร์ Kubernetes”
- ทำงานภายในขอบเขตของคลัสเตอร์เดียวเท่านั้น
- สามารถเรียงลำดับและกรองได้ แต่ไม่มีลิงก์ถาวร
- ไม่มีการรองรับข้อกำหนดทรัพยากรที่กำหนดเอง (CRD)
คูเบอร์เนเตอร์
“Kubernator เป็น UI ทางเลือกสำหรับ Kubernetes ต่างจากแดชบอร์ด Kubernetes ระดับสูงตรงที่ให้การควบคุมระดับต่ำและการมองเห็นออบเจ็กต์ทั้งหมดในคลัสเตอร์ได้อย่างยอดเยี่ยม พร้อมความสามารถในการสร้างใหม่ แก้ไข และแก้ไขข้อขัดแย้ง เนื่องจากเป็นแอปพลิเคชันฝั่งไคลเอ็นต์ทั้งหมด (เช่น kubectl) จึงไม่ต้องการแบ็คเอนด์ใดๆ นอกเหนือจากเซิร์ฟเวอร์ Kubernetes API และยังเคารพกฎการเข้าถึงคลัสเตอร์ด้วย”
นี่เป็นคำอธิบายที่ค่อนข้างแม่นยำ
- ให้บริการเพียงคลัสเตอร์เดียวเท่านั้น
- ไม่มีโหมดมุมมองรายการ (เช่น คุณไม่สามารถแสดงพ็อดทั้งหมดที่มีสถานะ "รอดำเนินการ")
แดชบอร์ด Kubernetes
“Kubernetes Dashboard เป็นเว็บอินเตอร์เฟสสากลสำหรับคลัสเตอร์ Kubernetes ช่วยให้ผู้ใช้สามารถจัดการและแก้ไขปัญหาแอปพลิเคชันที่ทำงานอยู่ในคลัสเตอร์ รวมถึงจัดการคลัสเตอร์เอง”
แต่น่าเสียดายที่
- ไม่มีลิงก์ถาวร เช่น เมื่อฉันกรองทรัพยากรหรือเปลี่ยนลำดับการจัดเรียง
- ไม่มีวิธีง่ายๆ ในการกรองตามสถานะ - ตัวอย่างเช่น ดูพ็อดทั้งหมดที่มีสถานะ "รอดำเนินการ"
- รองรับเพียงคลัสเตอร์เดียวเท่านั้น
- ไม่รองรับ CRD (ฟีเจอร์นี้อยู่ระหว่างการพัฒนา)
- ไม่มีคอลัมน์ที่กำหนดเอง (เช่น คอลัมน์ที่มีป้ายกำกับตามประเภท
kubectl -L
).
มุมมองการดำเนินงาน Kubernetes (kube-ops-view)
"ผู้สังเกตการณ์แดชบอร์ดระบบสำหรับพื้นที่คลัสเตอร์ K8s"
У
* บันทึก. แปล: ในแง่นี้ คุณอาจสนใจปลั๊กอินของเราด้วย
รายงานทรัพยากร Kubernetes (รายงานทรัพยากร kube)
“รวบรวมคำขอทรัพยากรคลัสเตอร์พ็อดและ Kubernetes เปรียบเทียบกับการใช้ทรัพยากร และสร้าง HTML แบบคงที่”
บันทึก. แปล: บริการและเครื่องมืออาจมีประโยชน์ในการดูข้อมูลเกี่ยวกับการจัดสรรทรัพยากรและค่าใช้จ่ายระหว่างผู้ให้บริการคลาวด์
ออกเทน
"แพลตฟอร์มเว็บที่ขยายได้สำหรับนักพัฒนาที่ได้รับการออกแบบมาเพื่อให้เข้าใจความซับซ้อนของคลัสเตอร์ Kubernetes ได้ดียิ่งขึ้น"
- ไม่มีการค้นหาคลัสเตอร์
- ใช้งานได้บนเครื่องท้องถิ่นเท่านั้น (ไม่ปรับใช้กับคลัสเตอร์)
- ไม่สามารถจัดเรียง/กรองวัตถุได้ (รองรับเฉพาะตัวเลือกป้ายกำกับเท่านั้น)
- คุณไม่สามารถระบุคอลัมน์ที่กำหนดเองได้
- คุณไม่สามารถแสดงรายการวัตถุตามเนมสเปซได้
ฉันยังมีปัญหากับความเสถียรของ Octant กับคลัสเตอร์ Zalando: บน CRD บางตัว
ขอแนะนำ Kubernetes Web View
"kubectl สำหรับเว็บ"
หลังจากวิเคราะห์ตัวเลือกอินเทอร์เฟซสำหรับ Kubernetes แล้ว ฉันจึงตัดสินใจสร้างใหม่: kubectl
บนเว็บ ได้แก่
- ความพร้อมใช้งานของการดำเนินการทั้งหมด (อ่านอย่างเดียว) ที่ผู้ใช้ต้องการใช้ kubectl
- URL ทั้งหมดจะต้องเป็นแบบถาวรและเป็นตัวแทนของเพจในรูปแบบดั้งเดิม เพื่อให้เพื่อนร่วมงานสามารถแบ่งปันและใช้ในเครื่องมืออื่น ๆ ได้
- รองรับออบเจ็กต์ Kubernetes ทั้งหมดซึ่งจะช่วยให้คุณสามารถแก้ไขปัญหาประเภทใดก็ได้
- ควรดาวน์โหลดรายการทรัพยากรเพื่อการทำงานต่อไป (ในสเปรดชีต เครื่องมือ CLI เช่น
grep
) และการเก็บรักษา (เช่น สำหรับการชันสูตรพลิกศพ) - รองรับการเลือกทรัพยากรตามป้ายกำกับ (คล้ายกับ
kubectl get .. -l
); - ความสามารถในการสร้างรายการรวมของทรัพยากรประเภทต่างๆ (คล้ายกับ
kubectl get all
) เพื่อให้ได้ภาพการปฏิบัติงานร่วมกันระหว่างเพื่อนร่วมงาน (เช่น ในระหว่างการตอบสนองต่อเหตุการณ์) - ความสามารถในการเพิ่มลิงก์ในรายละเอียดอัจฉริยะที่กำหนดเองไปยังเครื่องมืออื่นๆ เช่น แดชบอร์ด ตัวบันทึก การลงทะเบียนแอปพลิเคชัน เป็นต้น เพื่ออำนวยความสะดวกในการแก้ไขปัญหา/แก้ไขข้อผิดพลาดและการตอบสนองต่อเหตุการณ์
- ส่วนหน้าควรเรียบง่ายที่สุดเท่าที่จะเป็นไปได้ (HTML ล้วนๆ) เพื่อหลีกเลี่ยงปัญหาแบบสุ่ม เช่น JavaScript ที่ค้าง
- รองรับหลายคลัสเตอร์เพื่อลดความซับซ้อนของการโต้ตอบระหว่างการให้คำปรึกษาระยะไกล (เช่น จดจำ URL เดียวเท่านั้น)
- หากเป็นไปได้ ควรทำให้การวิเคราะห์สถานการณ์ง่ายขึ้น (เช่น มีลิงก์สำหรับดาวน์โหลดทรัพยากรสำหรับคลัสเตอร์/เนมสเปซทั้งหมด)
- โอกาสเพิ่มเติมในการสร้างลิงก์ที่ยืดหยุ่นและเน้นข้อมูลข้อความ เพื่อให้คุณสามารถชี้เพื่อนร่วมงานไปยังส่วนเฉพาะในคำอธิบายทรัพยากร (บรรทัดใน YAML)
- ความสามารถในการปรับแต่งตามความต้องการของลูกค้าเฉพาะ เช่น ช่วยให้คุณสร้างเทมเพลตการแสดงผลพิเศษสำหรับ CRD มุมมองตารางของคุณเอง และเปลี่ยนสไตล์ CSS
- เครื่องมือสำหรับการสำรวจบรรทัดคำสั่งเพิ่มเติม (เช่น การแสดงคำสั่งแบบเต็ม
kubectl
พร้อมสำหรับการคัดลอก);
นอกเหนือจากงานที่ได้รับการแก้ไขใน Kubernetes Web View (ไม่ใช่เป้าหมาย) ยังคงอยู่:
- นามธรรมของวัตถุ Kubernetes
- การจัดการแอปพลิเคชัน (เช่น การจัดการการใช้งาน แผนภูมิ Helm ฯลฯ)
- การดำเนินการเขียน (ต้องทำผ่านเครื่องมือ CI/CD และ/หรือ GitOps ที่ปลอดภัย)
- อินเทอร์เฟซที่สวยงาม (JavaScript ธีม ฯลฯ );
- การแสดงภาพ (ดู
kube-ops-view ); - การวิเคราะห์ต้นทุน (ดู
รายงานทรัพยากร kube ).
Kubernetes Web View ช่วยในการสนับสนุนและการตอบสนองต่อเหตุการณ์อย่างไร
สนับสนุน
- ลิงก์ทั้งหมดเป็นแบบถาวรซึ่งทำให้การแลกเปลี่ยนข้อมูลกับเพื่อนร่วมงานง่ายขึ้น
- คุณสามารถสร้างได้ ความคิดของคุณตัวอย่างเช่น แสดงการปรับใช้และพ็อดทั้งหมดด้วยเลเบลเฉพาะในสองคลัสเตอร์เฉพาะ (สามารถระบุชื่อคลัสเตอร์และประเภททรัพยากรได้หลายรายการในลิงก์ โดยคั่นด้วยเครื่องหมายจุลภาค)
- คุณสามารถอ้างถึง บรรทัดเฉพาะในไฟล์ YAML วัตถุ ระบุปัญหาที่อาจเกิดขึ้นในข้อกำหนดวัตถุ
ค้นหาตามคลัสเตอร์ใน Kubernetes Web View
การตอบสนองต่อเหตุการณ์
- ค้นหาทั่วโลก (การค้นหาทั่วโลก) ช่วยให้คุณค้นหาวัตถุในทุกคลัสเตอร์
- มุมมองรายการ สามารถแสดงออบเจ็กต์ทั้งหมดที่มีสถานะ/คอลัมน์ที่แน่นอนในทุกคลัสเตอร์ (เช่น เราจำเป็นต้องค้นหาพ็อดทั้งหมดที่มีสถานะ "รอดำเนินการ")
- สามารถดาวน์โหลดรายการวัตถุได้ ในรูปแบบค่าที่คั่นด้วยแท็บ (TSV) เพื่อการวิเคราะห์ในภายหลัง
-
ลิงก์ภายนอกที่ปรับแต่งได้ ช่วยให้คุณสลับไปยังแดชบอร์ดที่เกี่ยวข้องและเครื่องมืออื่นๆ
Kubernetes Web View: รายการพ็อดที่มีสถานะ "รอดำเนินการ" ในทุกคลัสเตอร์
หากคุณต้องการลองใช้ Kubernetes Web View ฉันแนะนำให้ลองดู
แน่นอนว่าอินเทอร์เฟซอาจดีกว่านี้ แต่สำหรับตอนนี้ Kubernetes Web View เป็นเครื่องมือสำหรับ "ผู้ใช้ขั้นสูง" ที่ไม่อายที่จะจัดการกับเส้นทาง URL ด้วยตนเองหากจำเป็น หากมีความคิดเห็น/เพิ่มเติม/ข้อเสนอแนะ โปรดติดต่อ
บทความนี้เป็นประวัติโดยย่อเกี่ยวกับความเป็นมาที่นำไปสู่การสร้าง Kubernetes Web View จะตามมาอีก! (บันทึก. แปล: พวกเขาควรจะคาดหวังใน
ป.ล. จากนักแปล
อ่านเพิ่มเติมในบล็อกของเรา:
- «
kubebox และ shell อื่นๆ สำหรับ Kubernetes "; - «
เครื่องมือสำหรับนักพัฒนาแอปพลิเคชันที่ทำงานบน Kubernetes "; - «
ยูทิลิตี้คอนโซล kubelive ปรากฏขึ้นเพื่อการทำงานแบบโต้ตอบกับ Kubernetes "; - «
ยูทิลิตี้ที่มีประโยชน์เมื่อทำงานกับ Kubernetes '
ที่มา: will.com