Flux Subsystem for Argo — เทคนิคการ Maintain Patch

Chanwit Kaewkasi
2 min readApr 2, 2022

โดยปกติ เราสามารถใช้ Git ทำการ Maintain Patch โดยแยก Branch แล้ว Rebase ไปเรื่อย ๆ ได้อยู่แล้ว

แต่ผมเลือกใช้ StackedGit (stgit) ในการ Maintain Patch เพราะรู้สึกว่าการรับรู้ของคน Maintain เวลาจัดการกับ Patch ที่เป็นไฟล์แยกออกมา มันทำได้สะดวกกว่าการที่ไปปนอยู่ใน Tree ของ Git

สำหรับผมแล้วเวลาทำพังก็จะสามารถ Recover ได้ดีกว่า และก็ไม่ต้องเสีย Context Switch เวลาสลับ Branch

ว่าแต่ เทคนิคการ Maintain Patch มีประโยชน์อะไร?

การ Maintain Patch มีประโยชน์เมื่อเราต้องการ Maintain Fork ของซอฟต์แวร์ในระยะยาว โดยแยก Diff ที่เราทำการเปลี่ยนแปลงไว้แล้วออกมาเป็นไฟล์ Patch

เมื่อฝั่งโครงการ Upstream ทำการเปลี่ยนแปลง Code เราก็เอามาเปลี่ยนจุดฐาน (Base) ของการ Patch ไปเป็น Version ใหม่ แล้วทำการ Apply Patch ของเราลงไปที่ละตัว ๆ

พูดง่าย ๆ เลยก็คือการ Rebase ใน Workflow ของ Git

เครื่องมือที่ใช้คือ StackedGit เป็นตัวเสริมที่ค่อนข้างจะ Compatible กับ Git ผมใช้มาหลายโครงการแล้ว ยังไม่เจอว่ามันจะทำให้ Branch พัง (ปกติจะเป็นคนทำพังเองซะมากกว่า) จุดเด่นของการใช้ StackedGit คือเทคนิคการจัดการ Patch ที่เข้ามือผมมากกว่า Git ปกติ เช่น

  • การจัดลำดับของ Patch (ให้ลอยขึ้น หรือ จมลง)
  • การใช้ Workflow ของ Git ปกติในการ Hack โค้ด แล้วค่อย uncommit หรือ repair เพื่อสร้าง Patch
  • การ Export Patch ออกไปเป็น Series แล้วติด Number กับ File Extension ที่อยากได้ได้
  • การ Import Patch
  • การค่อย ๆ Push ตัว Patch เพื่อเช็คว่า Patch มันจะพังมั้ยเวลา Base เปลี่ยน

ต้องเล่าก่อนว่า Workflow ทั้งหมดนี้ทำได้ด้วย Git ปกตินะครับ ตัว StackedGit เป็นแค่ตัวเพิ่มความสะดวก

ผมใช้ StackedGit ทำอะไรบ้าง ที่ผ่านมาก็ใช้ Maintain EKZ โดยทำ Patch ด้วย StackedGit เพราะต้อง Rebase ตัว Upstream ก็คือ K0s

ตอนนี้ก็ใช้ Maintain Flux Subsystem for Argo แล้วก็ Rebase กับตัว Upstream ก็คือ ArgoCD

ล่าสุดก็คือเพิ่ม Flux Subsystem เข้าไปใน UI แบบนี้

แล้วเวลาที่ต้อง Maintain หลาย ๆ โครงการไปพร้อม ๆ กัน เช่น Flux Subsystem for Argo ที่ต้อง Hack ทั้งตัว ArgoCD และ GitOps Engine การ Maintain Patch ในลักษณะนี้ก็จะยิ่งสะดวกกว่าการดูแลในลักษณะ Branch

ตอนนี้ Flux Subsystem for Argo เปิด Source แล้ว โดยเพิ่ง Rebase ไปที่ v2.2.8 เสร็จ และกำลังอยู่ในช่วงสร้าง Feature สำคัญตัวถัดไปอยู่ ก็คือ การ Auto-Create Flux Resources

https://github.com/flux-subsystem-argo/fsa

แล้วตอนนี้ก็เตรียม Build Pipeline ง่าย ๆ และมี Release ของ Main Branch เสร็จพอดี สัปดาห์หน้าก็คงประกาศเปิดตัว Source Code ให้เป็นเรื่องเป็นราว

อ้อ ลืมเล่าว่า สัปดาห์ก่อน Weaveworks ประกาศ Flux Subsystem for Argo แบบ Commercial Support ใน Weave GitOps Enterprise นะครับ สำหรับองค์กรที่ต้องการจะค่อย ๆ เปลี่ยนมาใช้ Flux หรืออาจจะอยากใช้ ArgoCD และ Flux ไปพร้อม ๆ กัน

Video ตัวเต็มดูได้จากที่นี่ https://vimeo.com/693902375/cb326aa9cc

--

--

Chanwit Kaewkasi

Creator Weave TF-controller, Kubernetes & GitOps for Terraform, SNR SE @weaveworks, Go nut since r57 (pre v1)