เครื่องมือสำหรับนักพัฒนา · ตัวแปลงไวยากรณ์
เปลี่ยน kubectl JSON เอาต์พุตให้เป็นรายการที่คุณสามารถอ่านได้จริง
· เหตุใดจึงสำคัญ
json yaml นักพัฒนาเวิร์กโฟลว์
เครื่องมือ Kubernetes ปล่อย JSON ที่แม่นยำแต่สแกนยาก ในขณะที่ manifests เขียนด้วย YAML โพสต์นี้แสดงให้เห็นว่าเหตุใดการแปลงระหว่างกันจึงทำให้การอ่าน การเปรียบเทียบ และการนำคำจำกัดความของทรัพยากรกลับมาใช้ใหม่เร็วขึ้น
วงเล็บปีกกาสองร้อยบรรทัดในเวลา 2 a.m. — การปรับใช้ดึงข้อมูลเป็น JSON และฟิลด์ที่คุณต้องการฝังไว้ในบล็อกสถานะ
ในระหว่างเหตุการณ์ วัตถุทรัพยากรขนาดใหญ่สามารถฝังตัวเลือกหรือเงื่อนไขที่เกี่ยวข้องไว้ในข้อมูลเมตาและสถานะได้ การแปลง JSON ที่บันทึกไว้เป็นการเยื้อง YAML จะลบเครื่องหมายวรรคตอนโดยไม่ต้องเปลี่ยนออบเจ็กต์ อาร์เรย์ บูลีน ตัวเลข สตริง และค่าว่าง สิ่งที่ได้คือการสแกนด้วยภาพ ไม่ใช่แหล่งความจริงใหม่
ตรวจทานโทเค็น ที่อยู่ และตัวระบุก่อนใช้หน้าเบราว์เซอร์ใดๆ ToolAcre แยกวิเคราะห์ JSON อย่างเคร่งครัดและทิ้ง YAML ในเครื่อง ไม่ติดต่อกับคลัสเตอร์หรือรู้ว่าอ็อบเจ็กต์มาจาก kubectl ไคลเอ็นต์อื่น หรือฟิกซ์เจอร์ที่บันทึกไว้
เหตุใด API พูด JSON และมนุษย์เขียน YAML — รูปแบบของเซิร์ฟเวอร์ API ประเพณีรายการ และเหตุใดทั้งสองจึงอธิบายวัตถุเดียวกัน
แผนผังทรัพยากรที่มีรูปทรง JSON เดียวกันสามารถแสดงเป็นการแมปและลำดับ YAML ได้ พื้นที่เก็บข้อมูลนี้ไม่ได้ระบุสาเหตุที่องค์ประกอบ Kubernetes โดยเฉพาะเลือกการแสดงแบบใช้สายเดียว หรือวิธีที่ปลายทาง API ทุกจุดเจรจากับประเภทสื่อ ดังนั้นบทความนี้จึงหลีกเลี่ยงการเปลี่ยนแนวปฏิบัติทั่วไปเป็นการอ้างสิทธิ์การใช้งานเกี่ยวกับภายในของ Kubernetes
สิ่งที่พิสูจน์ได้นั้นแคบกว่า: JSON อินพุตจะถูกแยกวิเคราะห์เป็นค่า JavaScript และ js-yaml ทำให้ค่านั้นกลายเป็นอนุกรมในรูปแบบบล็อก อาร์เรย์ยังคงเรียงลำดับ ปุ่มวัตถุยังคงเชื่อมโยงกับค่าเดียวกัน และสตริงที่ไม่ชัดเจนจะได้รับเครื่องหมายคำพูดป้องกัน
JSON และ YAML สามารถมีแผนผังทรัพยากรเดียวกันได้ API การเรียกร้องการขนส่งอยู่นอกเหนือหลักฐานของตัวแปลงรายนี้
การเยื้องและขีดกลางทำให้สแกนการซ้อนได้ง่ายขึ้น ในขณะที่สเกลาร์แบบบล็อกสามารถทำให้สตริงหลายบรรทัดสามารถอ่านได้ นี่คือตัวเลือกซีเรียลไลเซอร์ พวกเขาไม่ได้ลบสถานะ ตรวจสอบเวอร์ชัน API หรือสร้างอ็อบเจ็กต์สดที่เหมาะสมสำหรับการนำไปใช้ใหม่ สตริงคล้ายวันที่ที่ยกมายังคงเป็นข้อความ แม้ว่า YAML จะดูไม่ชัดเจนเท่า JSON ก็ตาม
ใช้การแปลงเพื่อค้นหาฟิลด์ เปรียบเทียบรูปร่าง และเตรียมสำเนาการตรวจทาน เก็บต้นฉบับ JSON ไว้เพื่อเป็นหลักฐานที่แน่นอน หากเปิดใช้งานตัวเลือกคีย์การเรียงลำดับ การนำเสนอออบเจ็กต์จะเปลี่ยนไปเพิ่มเติมในขณะที่ลำดับอาร์เรย์ยังคงเหมือนเดิม
YAML เปลี่ยนการนำเสนอ ไม่ใช่วัตถุ Kubernetes หรือความถูกต้อง
วัตถุสดมักจะมีฟิลด์ที่ดูแลโดยเซิร์ฟเวอร์หรือตัวควบคุม การลบ `status`, `managedFields`, `uid` หรือ `resourceVersion` อาจเหมาะสมสำหรับไฟล์ Manifest ที่นำมาใช้ซ้ำได้ แต่ ToolAcre ไม่ทราบนโยบายดังกล่าวและไม่เคยถอดออก การลบทุกครั้งต้องเป็นการแก้ไขที่รับรู้โดย Kubernetes โดยเจตนาหลังการแปลง
ฟิลด์อื่นๆ อาจถูกสร้างขึ้นแต่ยังคงจำเป็นเพื่อรักษาเจตนา เปรียบเทียบกับเวอร์ชันใน git และศึกษาเอกสารประกอบปัจจุบันของระบบที่เป็นเจ้าของแทนที่จะใช้รายการล้างข้อมูลที่จดจำ ตัวแปลงนั้นจงใจมองไม่เห็นความหมายของโดเมน
ตัวอย่างการทำงาน: บริการดึงข้อมูลเป็น JSON — แปลงเป็น YAML ลบฟิลด์ที่เซิร์ฟเวอร์เติมและเปรียบเทียบกับเวอร์ชันใน git
นำออบเจ็กต์รูปทรงบริการที่ได้รับการแก้ไขซึ่งมีข้อมูลเมตา พอร์ตข้อมูลจำเพาะ และบล็อกสถานะ แปลงเป็น YAML ระบุฟิลด์ที่เซิร์ฟเวอร์เติมโดยใช้ขั้นตอนการปฏิบัติงานของคุณ และลบเฉพาะฟิลด์ที่ได้รับการอนุมัติสำหรับส่วนที่ใช้ซ้ำได้ เปรียบเทียบป้ายกำกับ ตัวเลือก พอร์ต และประเภทด้วยการควบคุมเวอร์ชันก่อนใช้งานขั้นตอนใดๆ
ผู้เขียน YAML อาจอ้างอิงสตริง เช่น `NO`, `yes`, `1.0` หรือข้อความที่ดูวันที่เพื่อปกป้องประเภทของพวกเขา คำพูดเหล่านั้นไม่เกะกะที่จะลบโดยไม่ตั้งใจ แปลง YAML ที่แก้ไขแล้วเป็น JSON อีกครั้ง และเปรียบเทียบแผนผังข้อมูล ในขณะที่จำไว้ว่าความคิดเห็นที่เพิ่มระหว่างการแก้ไขไม่สามารถรอดจากการย้อนกลับได้
ทิศทางย้อนกลับ — แปลงรายการ YAML เป็น JSON เพื่อดูว่า API จะได้รับอะไร รวมถึงวิธีพิมพ์ค่าที่ยกมา
มีทิศทางย้อนกลับ YAML ถูกอ่านภายใต้สคีมา JSON หรือสคีมาหลักที่เข้มงวด จากนั้น JSON จะถูกเขียนด้วยการเยื้องที่เลือก โหมดเข้มงวดจะเก็บ `~` ค่าว่าง และ `0o755` ไว้เป็นข้อความ Core แก้ไขปัญหาเหล่านี้แตกต่างกัน ไม่ถือว่า `NO` เป็นเท็จ
สิ่งนี้ทำให้เห็นได้ชัดเจนว่า parser ของ ToolAcre ใดจะส่งเป็นข้อมูลรูป JSON ไม่ได้พิสูจน์ว่าการรับไลบรารี YAML หรือสคีมาของคลัสเตอร์จะทำอะไรได้บ้าง โดยเฉพาะอย่างยิ่งสำหรับแท็กที่กำหนดเองหรือฟิลด์เฉพาะแอปพลิเคชัน
สิ่งนี้ไม่ครอบคลุมถึง — การตรวจสอบความถูกต้องของรายการกับ Kubernetes schema ซึ่งต้องการ dry-run หรือเครื่องมือ schema ของ kubectl
ไม่มีการโหลดสคีมา Kubernetes, CRD คำจำกัดความหรือกฎการรับเข้า ฟิลด์ที่ไม่รู้จัก เวอร์ชันที่เลิกใช้แล้ว และชุดค่าผสมที่ไม่ถูกต้องอาจแปลงได้อย่างสมบูรณ์ ใช้เครื่องมือตรวจสอบแบบ dry-run หรือ schema-aware ของแพลตฟอร์มเป้าหมายสำหรับคำถามเหล่านั้น
ToolAcre ยังไม่สามารถตรวจสอบสิทธิ์ ดึงทรัพยากรที่มีอยู่ หรือเปรียบเทียบสถานะที่ต้องการและที่สังเกตได้ งานของมันสิ้นสุดที่การแมปไวยากรณ์ การรักษาขอบเขตนั้นให้ชัดเจนจะป้องกันไม่ให้ไฟล์ที่อ่านเข้าใจผิดว่าเป็นไฟล์ Manifest ที่ยอมรับได้
ประเด็นสำคัญ: อ่านใน YAML ตรวจสอบใน JSON — และวิธีที่แผงตัวแปลงไวยากรณ์สลับระหว่างทั้งสองโดยไม่ต้องออกจากแท็บ
อ่านทรัพยากรในรูปแบบที่ช่วยงาน แต่ตรวจสอบข้อมูลและกฎโดเมนแยกกัน JSON ให้เครื่องหมายวรรคตอนที่ชัดเจน YAML ให้มุมมองบล็อกขนาดกะทัดรัด สำหรับค่าที่มีรูปทรง JSON ธรรมดา ทั้งสองสามารถรักษาต้นไม้ไว้ได้ แม้ว่าความคิดเห็นและสไตล์จะไม่สามารถไปกลับได้ก็ตาม
ตัวแปลงไวยากรณ์จะสลับระหว่างมุมมองเหล่านั้นในเบราว์เซอร์และเปิดเผยตัวเลือกสคีมาและคำเตือน ใช้เป็นขั้นตอนการตรวจสอบ ไม่ใช่เป็นสิทธิ์ในการลบฟิลด์หรือปรับใช้ทรัพยากร
สำหรับบันทึกเหตุการณ์ ให้บันทึกเอาต์พุตคำสั่งดั้งเดิม สำเนาการตรวจสอบที่แปลงแล้ว และการลบด้วยตนเองทุกครั้งเป็นสิ่งประดิษฐ์ที่แยกจากกัน เส้นทางนั้นช่วยให้วิศวกรอีกคนแยกแยะได้ว่าคลัสเตอร์ใดที่ส่งคืนจากสิ่งที่ถูกลบออกเพื่อให้สามารถอ่านหรือนำกลับมาใช้ใหม่ได้ นอกจากนี้ยังป้องกันไม่ให้ข้อความที่ตัดตอนมาจาก YAML ที่ชัดเจนจากการเข้าใจผิดว่าเป็นทรัพยากรที่ใช้งานอยู่โดยสมบูรณ์ ตัวแปลงมีส่วนช่วยเฉพาะการเปลี่ยนแปลงสัญกรณ์เท่านั้น แหล่งที่มาและการควบคุมการเปลี่ยนแปลงยังคงเป็นส่วนหนึ่งของขั้นตอนการปฏิบัติงาน