GitOps EP1. ทำความรู้จัก GitOps กันเถอะ
Gitops คืออะไร
คนนันก็ GitOps คนนู้นก็ GitOps GitOps เต็มไปหมดเลย แล้วอะไรคือ GitOps หล่ะ ???
ผมคิดว่าทุกคนต้องเคยได้ยินคำว่า GitOps กันมาอย่างน้อย 1–2 ครั้งแหละ อ่าว ในเมื่อเคยได้ยินคำนี้มา แล้วมันคืออะไรหล่ะ ?
GitOps มันก็คือ concept ที่เกิดขึ้นเพื่อให้เราสามารถทำ CD (Continuous Delivery) ไปบน Cloud Native ได้ง่ายขึ้น โดยที่มีการใช้งานผ่าน Git ซึ่ง concept ของ GitOps นั้นเรียบง่ายมาก ก็คือ
“เชื่อถือสิ่งที่อยู่บน Git”
แผลจาก infrastructure as a code
เวลาเราทำ Infrastructure as a code เนี่ย มันดีนะครับ ตรงที่ว่าทุกอย่างถูกจัดการด้วย code ไม่ว่าจะสร้าง หรือจะลบอะไรมันช่างรวดเร็วเสียเหลือเกิน
เคยเบื่อกันไหมครับ เมื่อเราทำการสร้าง config แล้วเอาไปใช้งาน แต่ว่ามันถูกแก้ไขไปในขณะที่ทำงานอยู่ staging หรือ production
เท่านั้นยังไม่พอ เราดันลืมไปว่า config ที่เราแก้ไขไปมีอะไรบ้าง
ปัญหาที่เจอ
- Apply config ขึ้น cluster ไปแล้ว แต่จำไม่ได้ว่าทำอะไรไปบ้าง พอจะกลับมาทำก็ไม่รู้ว่าต้องทำตรงไหน
- ใครมา Kubectl edit …. บน cluster เราจะไม่รู้เลย
- และอื่นๆอีกมากมาย
ทำไมต้อง gitops
- Deploy ได้อย่างรวดเร็ว
- แก้ปัญหาได้อย่างรวดเร็ว
- จัดการได้ง่าย ทุกอย่างที่เราทำ จะถูกเก็บอยู่ใน history ของ git อยู่แล้ว ทำให้สามารถตรวจสอบได้ง่าย
- ทุกอย่างอยู่บน git สามารถทำให้ส่งต่อในทีมได้ง่าย
Gitops ทำงานอย่างไง
GitOps แบ่งเป็น 2 ส่วน คือส่วน push กับส่วน pull deployment
Push deployment
ในส่วนนี้จะเหมือนกับการทำงานของ CD ปกติเลย ที่มี trigger deploy ไปยังที่ต่างๆ เช่น Gitlab CI หรือ Jenkins ก็คือ เมื่อ Code ที่อยู่บน Git เปลี่ยน จะมี trigger ทำการ deploy ไปยัง cluster
Pull deployment
ในส่วนนี้จะมี operator คอยตรวจสอบว่าบน cluster ของเราต่างกับ code บน Git ไหม ซึ้งถ้าแตกต่างจะเอา code จาก Git deploy ขึ้นไปใหม่ทันที!