หนึ่งปี Weave GitOps Terraform Controller และการนำ GitOps ที่แท้จริงมาสู่โลก IaC

Chanwit Kaewkasi
2 min readDec 26, 2022

ช่วงนี้เป็นช่วงครบรอบปีแรกของ Weave GitOps Terraform Controller ในโพสต์นี้ เราจะมาดูกันว่าตัวคอนโทรลเลอร์มีที่มายังไง มีประโยชน์ยังไง และอะไรรอเราอยู่ในปีหน้า

เขียนเอง แปลเองจากโพสต์ของผมบน Weaveworks อ่านได้จาก Link นี้

ไม่น่าเชื่อว่าหนึ่งปีผ่านไปเร็วมาก และเดือนนี้ก็ครบรอบหนึ่งปีของการสร้าง Weave GitOps Terraform Controller พอดิบพอดี ในเวลาสั้น ๆ เพียงหนึ่งปี เครื่องมือตัวนี้ได้ทำการปฏิวัติวิธีที่เราใช้จัดการ Infrastructure as Code (IaC) โดยนำหลักการที่แท้จริงของ GitOps มาสู่โลกของ Terraform

สำหรับคนที่ยังใหม่กับ GitOps นั้น GitOps เป็นแนวทางการ Operate ระบบ โดยใช้ Git เป็นแหล่งความจริงเดียว (Single Source of Truth) สำหรับทั้ง Infrastructure และ Application ซึ่งหมายความว่าการเปลี่ยนแปลง Infrastructure และ Application จะสามารถทำได้ผ่าน Pull Request เช่นเดียวกับการเปลี่ยนแปลงโค้ด ซึ่งช่วยให้ทีมสามารถใช้กระบวนการในรูปแบบเดียวกัน ในการทำงานร่วมกัน, การตรวจสอบ และการ deploy ได้ทั้งกับ Infrastructure และ Application ทำให้ง่ายต่อการจัดการและบำรุงรักษาระบบที่ซับซ้อน

หลักการของ GitOps มีอยู่สี่ข้อดังนี้:

  • Declarative: สถานะที่ต้องการ (Desired State) ของ Infrastructure และ Application จะต้องอยู่ในรูปแบบ Declarative
  • Versioned and Immutable: สถานะที่ต้องการจะถูกจัดเก็บในลักษณะที่เป็น Immutable มีการกำหนดเวอร์ชัน และมีการรักษาประวัติของแต่ละเวอร์ชันที่สมบูรณ์
  • Pulled Automatically: มีซอฟต์แวร์ตัวแทน (Software Agent) เป็นตัวดึงการประกาศสถานะที่ต้องการจากต้นทางอย่างอัตโนมัติ
  • Continuously Reconciled: ซอฟต์แวร์ตัวแทนจะคอยสังเกตสถานะของระบบจริง และพยายามจะปรับให้ตรงกับสถานะที่ต้องการ อย่างต่อเนื่อง

หลักการเหล่านี้ถูกนำไปใช้กับ Kubernetes มาระยะหนึ่งแล้ว แต่ Weave GitOps Terraform Controller ได้นำหลักการทั้งหมดของ GitOps มาสู่โลกของ Terraform ซึ่งหมายความว่าทีมสามารถใช้หลักการ GitOps นี้เพื่อจัดการโครงสร้างพื้นฐานและแอปพลิเคชันของตนได้ ไม่ว่าพวกเขาจะทำงานบน Kubernetes หรือไม่ก็ตาม

กรณีศึกษา — Case Study: AppsFlyer Improves Developer Productivity With GitOps & Terraform IaC

https://www.weave.works/blog/appsflyer-gitops-case-study

Terraform Controller คืออะไร?

Weave GitOps Terraform Controller หรือที่เรียกว่า Weave TF-controller เป็นเครื่องมือสำหรับจัดการโครงสร้างพื้นฐานและทรัพยากรแอปพลิเคชันโดยใช้แนวทาง GitOps ข้อดีอย่างหนึ่งของ Weave GitOps Terraform Controller คือเข้ากันได้กับเวิร์กโฟลว์ Terraform เดิมที่มีอยู่ ซึ่งหมายความว่าทีมจะยังคงใช้เครื่องมือและกระบวนการเดิมที่คุ้นเคยได้ ในขณะเดียวกันก็สามารถได้ประโยชน์จาก GitOps ด้วย

Weave TF-controller เริ่มต้นจากการเป็นโครงการส่วนตัวของผม โดยเวอร์ชันแรกคือ v0.1.0 ซึ่งปล่อยในเดือนธันวาคม 2021 หลังจากไม่นาน ทีม Weaveworks หลายคนก็เข้าร่วมเป็น Contributor (Piaras Hoban, Tom Huang และ Luke Mallon)

ในเดือนมกราคม 2022 ผมได้รับไฟเขียวให้ย้ายโครงการนี้ไปเป็นส่วนหนึ่งของ Weaveworks และ เวอร์ชัน v0.8.0 เป็นเวอร์ชันแรกที่ได้ปล่อยภายใต้ Weaveworks ถัดมา ในเดือนสิงหาคม เราได้พัฒนาให้ตัว Controller สามารถรองรับการ Reconcile โมดูล Terraform จำนวน 1,500 โมดูลได้พร้อมกัน และในเดือนกันยายนที่ผ่านมา บทความเรื่อง “How to GitOps your Terraform” เผยแพร่โดย Priyanka Ravi และ Daniel Holbach

เวอร์ชันล่าสุดของ Weave GitOps Terraform Controller ได้เปิดตัวคอมโพเนนท์โมเดลแบบใหม่โดยใช้ความสามารถการรองรับ OCI ของ Flux และเริ่มปล่อยแพ็คเกจ AWS เวอร์ชันอัลฟ่าไปพร้อม ๆ กับตัว Controller

Weave GitOps Terraform Controller สามารถช่วยทีมรวมการจัดการระดับแอปพลิเคชันและโครงสร้างพื้นฐานไว้ในไปป์ไลน์ GitOps เดียวได้ และนี่คือสิ่งที่จะทำให้ทีมสามารถจัดการทุกด้านของระบบได้อย่างสอดคล้องและคาดการณ์ผลลัพธ์ได้ดีขึ้น เพราะใช้กระบวนการในรูปแบบเดียวกัน ในการทำงานร่วมกัน, การตรวจสอบ และการ deploy สำหรับทั้งแอปพลิเคชันและโครงสร้างพื้นฐาน

Terraform Controller รวมอยู่ใน Weave GitOps Enterprise แล้ว

นอกจากคุณสมบัติอันทรงพลังและความเข้ากันได้กับเวิร์กโฟลว์ Terraform ที่มีอยู่แล้วนั้น Weave GitOps Terraform Controller ก็ยังเป็นส่วนหนึ่งในชุดผลิตภัณฑ์ Weave GitOps Enterprise สำหรับองค์กร ซึ่งหมายความว่าทีมสามารถใช้ Weave GitOps Terraform Controller ได้ด้วยความมั่นใจ โดยจะสามารถเข้าถึงการ Support และความช่วยเหลือจากผู้เชี่ยวชาญได้ทุกเมื่อที่ต้องการ

และ Weave GitOps Enterprise นั้นยังมีคุณสมบัติและเครื่องมือเพิ่มเติมที่ออกแบบมาเพื่อช่วยให้ทีมจัดการโครงสร้างพื้นฐานและแอปพลิเคชันได้อย่างมีประสิทธิภาพมากขึ้น ซึ่งรวมถึงฟีเจอร์ต่างๆ เช่น GitOps Templates, Policy as Code, ​​การ Audit ขั้นสูงเพื่อให้เป็นไปตามการปฏิบัติตามข้อกำหนด, การควบคุมการเข้าถึงตามบทบาท (RBAC), รวมทั้ง Metrics และ การมอนิเตอร์ระบบ

ในขณะที่เรากำลังพูดถึงการครบรอบหนึ่งปีของ Weave GitOps Terraform Controller นั้น แนวทางในอนาคตของ GitOps ก็เป็นที่ชัดเจน ด้วยการ Graduate อย่างเป็นทางการของ Flux ที่กลายเป็นโครงการที่แข็งแรงภายใต้ Cloud Native Computing Foundation นั้น ทำให้มีการคาดการว่าการ Adopt GitOps จะเพิ่มขึ้นอย่างมีนัยสำคัญและเป็นอัตราเร่ง พรมแดนถัดไปสำหรับ GitOps คือการผสานรวมคอนโทรลเลอร์ภายในแพลตฟอร์ม เช่น Flux กับคอนโทรลเลอร์อื่น ทำให้ง่ายต่อการใช้แพลตฟอร์มและกระบวนการเดียวกัน เพื่อการ Deploy ซอฟต์แวร์และ IaC บนแพลตฟอร์มอื่นที่นอกเหนือจาก Kubernetes

Weaveworks กำลังดำเนินการเพื่อบรรลุเป้าหมายนี้ โดยผสานรวม Flux เข้ากับ Terraform และเครื่องมือ IaC อื่นๆ เรารู้สึกตื่นเต้นที่จะได้เห็นอนาคตของ GitOps และ Weave GitOps Terraform Controller

เอกสาร Whitepaper: GitOps Accelerates Self-service for Developers and Operators

https://go.weave.works/WebContent-GitOps-Accelerates-Self-Service.html

--

--

Chanwit Kaewkasi

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