ความแตกต่างระหว่างแพทช์กับแพทช์ Json6902 ใน Kustomize คืออะไร

จากเอกสารที่ฉันได้อ่าน มี 3 วิธีในการแก้ไข:

  • แพทช์
  • แพทช์StrategicMerge
  • แพตช์ Json6902.

ความแตกต่างระหว่าง patchesStrategicMerge และ patchesJson6902 นั้นชัดเจน patchesStrategicMerge ต้องใช้โครงสร้างที่ซ้ำกันของทรัพยากร kubernetes เพื่อระบุทรัพยากรฐานที่ได้รับแพตช์ ตามด้วยส่วนที่แก้ไขของข้อมูลจำเพาะเพื่อแสดงสิ่งที่ได้รับการเปลี่ยนแปลง (หรือถูกลบ)

patchesJson6902 กำหนดแอตทริบิวต์ 'เป้าหมาย' ที่ใช้ในการระบุทรัพยากร kubernetes ด้วยแอตทริบิวต์ 'เส้นทาง' ที่ระบุแอตทริบิวต์ในทรัพยากรที่ได้รับการแก้ไข เพิ่ม หรือลบ

อย่างไรก็ตาม สิ่งที่ไม่ชัดเจนสำหรับฉันคือความแตกต่างระหว่าง patches และ patchesJson6902 ดูเหมือนพวกมันจะคล้ายกันมากในธรรมชาติ ทั้งสองระบุแอตทริบิวต์ 'เป้าหมาย' และวัตถุการดำเนินการซึ่งอธิบายสิ่งที่ได้รับการแก้ไข

ข้อแตกต่างเดียวที่ฉันสังเกตเห็นคือ patches ไม่ต้องการแอตทริบิวต์ 'group' ในขณะที่ patchesJson6902 ต้องการ ไม่ทราบสาเหตุ

แล้วทำไมทั้งสองถึงแตกต่างกัน? ฉันจะทราบได้อย่างไรว่าจะใช้อันไหน?


person Alex    schedule 26.08.2020    source แหล่งที่มา


คำตอบ (1)


คำอธิบายสำหรับเรื่องนี้มีที่นี่

โดยสรุป patchJson6902 เป็นคีย์เวิร์ดเก่าซึ่งสามารถจับคู่ทรัพยากรได้เพียง 1 รายการผ่าน target (ไม่มีไวด์การ์ด) และยอมรับเฉพาะ Group-version-kind (GVK), เนมสเปซ และชื่อเท่านั้น

คำสั่ง patches ใหม่กว่าและยอมรับองค์ประกอบเพิ่มเติม (ตัวเลือกคำอธิบายประกอบและตัวเลือกป้ายกำกับด้วย) นอกจากนี้ เนมสเปซและชื่อสามารถเป็น regexes ได้ เป้าหมายสำหรับ patches สามารถจับคู่ทรัพยากรได้มากกว่าหนึ่งรายการ ซึ่งทั้งหมดจะถูกแพตช์

นอกจากนี้ ด้วย patches ระบบจะพยายามแยกวิเคราะห์ไฟล์แพตช์เป็นแพตช์ Json6902 และหากไม่ได้ผล ระบบจะถอยกลับไปลองใช้แพตช์เป็นการผสานเชิงกลยุทธ์

โดยรวมแล้ว ดูเหมือนว่า patches น่าจะใช้งานได้ในระดับสากลสำหรับโปรเจ็กต์ใหม่

person Raman    schedule 26.08.2020