Dec 26, 2022หนึ่งปี Weave GitOps Terraform Controller และการนำ GitOps ที่แท้จริงมาสู่โลก IaCช่วงนี้เป็นช่วงครบรอบปีแรกของ Weave GitOps Terraform Controller ในโพสต์นี้ เราจะมาดูกันว่าตัวคอนโทรลเลอร์มีที่มายังไง มีประโยชน์ยังไง และอะไรรอเราอยู่ในปีหน้า เขียนเอง แปลเองจากโพสต์ของผมบน Weaveworks อ่านได้จาก Link นี้ ไม่น่าเชื่อว่าหนึ่งปีผ่านไปเร็วมาก และเดือนนี้ก็ครบรอบหนึ่งปีของการสร้าง Weave GitOps Terraform Controller พอดิบพอดี ในเวลาสั้น ๆ เพียงหนึ่งปี เครื่องมือตัวนี้ได้ทำการปฏิวัติวิธีที่เราใช้จัดการ Infrastructure as Code (IaC) โดยนำหลักการที่แท้จริงของ GitOps มาสู่โลกของ TerraformGitops2 min readGitops2 min read
Sep 30, 2022จะ GitOps ตัว Terraform ได้อย่างไร — Blog post และ Webinar บน CNCFขอเขียนถึงซักหน่อยเพราะนาน ๆ ทีโปรเจ็คที่สร้างจะได้ไปโลดแล่นบน Blog ของ CNCF กับเขาบ้าง How to GitOps your Terraform | Cloud Native Computing Foundation This is the first blog post in a series where we want to shine a light on projects in the Flux Ecosystem. This time…www.cncf.io CNCF คืออะไร? CNCF ย่อมาจาก Cloud Native Computing Foundation เป็นหน่วยงานย่อยใต้ Linux Foundation โดย CNCF มีหน้าที่กำกับดูแลโครงการ Open Source กลุ่ม Cloud Native ที่ใช้กันทั่วไปก็ เช่น Kubernetes และแม้แต่โครงการที่ยิ่งใหญ่อย่าง Istio ก็กำลังย้ายตัวเองมาอยู่ใต้ CNCF เช่นกันKubernetes2 min readKubernetes2 min read
Aug 26, 2022เอา Kubernetes ไปรัน Terraform แล้วมันจะไม่ยิ่งซับซ้อนเหรอ?จริง ๆ แล้วคำถามนี้เป็นคำถาม Classic มากเลยครับว่า แค่ Kubernetes ก็แย่แล้ว จากปกติเราก็ใช้ Terraform สร้าง (Provision) Infrastructure กันก็น่าจะจบแล้ว แล้วการรัน Terraform ใน Kubernetes คืออะไร? จะทำให้มันยากไปไหน? ระบบที่ต้องการการ Provision ขนาดนี้มีจริงมั้ย มันจะมีคนเอาทำอะไรจริง ๆ เหรอ ที่ต้อง Provision กันเป็นพัน ๆ โมดูล ขนาดนั้น มันก็คงเหมือนกับการถามว่า จะสร้างจรวดทำไมให้มีแรงขับตั้งเยอะตั้งแยะ ใช้ Booster ทีเดียวตั้ง 9 ตัว แถมต้องทำให้อุณหภูมิของ Booster ด้านนอกเย็นเจี๊ยบอีก ถ้าผมไม่เคยเห็นจรวดแบบนั้นผมก็คงมีคำถามแบบเดียวกันว่า มันจะมีคนเอาไปทำอะไรจริง ๆ เหรอ…Kubernetes2 min readKubernetes2 min read
Aug 20, 2022อะไรคือ Kubernetes ง่าย?หลังจากสร้าง Controller มาอย่างจริงจังในระดับที่ใช้งานได้และมีคนอยากเอาไปใช้งาน คิดว่าถึงตอนนี้ผมสามารถพอจะอธิบายให้ตัวผมเองฟังแล้วว่า อะไรคือคำว่า “Kubernetes ยาก” และอะไรคือคำว่า “Kubernetes ง่าย” มาที่ประเด็น Kubernetes ยาก ก่อน จริง ๆ แล้ว Kubernetes ยากด้วยตัวมันเอง ตั้งแต่ architecture ยาก, security ยาก การติดตั้ง(จาก 0 ด้วยตัวเอง)ยาก และการดูแล (administrate) มันก็ยาก ตัว Component ที่ทำงานบน Kubernetes ตามใจเรา ช่วยเราจัดการ workload ก็คือ ControllerKubernetes2 min readKubernetes2 min read
Apr 16, 2022Flux Subsystem for Argo — คลื่นหลังการสร้างตัวเชื่อม Argo CD และ Flux เข้าด้วยกันหลังจากสร้างตัวเชื่อม Flux และ Argo CD ที่เรียกว่า Flux Subsystem for Argo ได้สำเร็จ โยง GitOps ของทั้งสองฝั่งเข้าด้วยกันแล้ว ก็มีเสียงตอบกลับทั้งในทางบวกและลบ เสียงตอบรับที่เป็นบวก ส่วนใหญ่มาจากผุ้ใช้ Argo CD ที่กำลังตกระกำลำบากกับฟีเจอร์การสนับสนุน Helm ที่ไม่สมบูรณ์ของ Argo CD เพราะมันมักจะทำให้ระบบบน Production พังถ้าต้องอัพเกรด Helm Chart ใหญ่ ๆ ในแง่มุมอื่นก็อาจจะมีบ้าง เช่น อยากใช้บางฟีเจอร์ของ Flux บน Argo CD แต่ก็ไม่เยอะเท่าเรื่อง Helm พังGitops2 min readGitops2 min read
Apr 2, 2022Flux Subsystem for Argo — เทคนิคการ Maintain Patchโดยปกติ เราสามารถใช้ Git ทำการ Maintain Patch โดยแยก Branch แล้ว Rebase ไปเรื่อย ๆ ได้อยู่แล้ว แต่ผมเลือกใช้ StackedGit (stgit) ในการ Maintain Patch เพราะรู้สึกว่าการรับรู้ของคน Maintain เวลาจัดการกับ Patch ที่เป็นไฟล์แยกออกมา มันทำได้สะดวกกว่าการที่ไปปนอยู่ใน Tree ของ Git สำหรับผมแล้วเวลาทำพังก็จะสามารถ Recover ได้ดีกว่า และก็ไม่ต้องเสีย Context Switch เวลาสลับ Branch ว่าแต่ เทคนิคการ Maintain Patch มีประโยชน์อะไร?Flux2 min readFlux2 min read
Mar 28, 2022การเขียน Kubernetes Controller, Part 11 — ปิด Q1 ด้วยรีลีส v0.9.3เหลืออีก 3 วันจะปิด Q1 แล้ว เลยมาสรุปสั้น ๆ สำหรับการเดินทางของ TF-controller ในไตรมาสแรก วันนี้ปล่อยเวอร์ชัน v0.9.3 ซึ่งแก้ Bug สำคัญในการ Reconcile ตัว Runner Pod ไป เวอร์ชันนี้ stable ที่สุด มีฟีเจอร์ครบสุดตั้งแต่สร้างมา 3 เดือน เราได้ 200 stars บน GitHub แล้ว ตอนนี้อยู่แถว ๆ 203 ตั้งแต่เริ่มโครงการ รีลีสไป 45 ครั้ง (ถ้านับ 90 วัน ก็เฉลี่ย 2 วันครั้ง) ใน Q2 คงไม่บ่อยเท่านี้เพราะระบบซับซ้อนขึ้น เทสยากขึ้นTerraform1 min readTerraform1 min read
Mar 20, 2022การเขียน Kubernetes Controller, Part 10— Test Coverage, เปลี่ยนชื่อ Controller และเอาขึ้น Red Hat OperatorHubหลายสัปดาห์ที่ผ่านมา ในงานฝั่ง Engineering เราขัด TF-controller จนได้รูปร่างที่ค่อนข้างหน้าพอใจสำหรับ Q1 ที่กำลังจะจบแล้ว ตอนนี้เหลือ Test Coverage อยู่ 1.8% ก่อนที่จะแตะ 70% Test Coverage ตามที่ตั้งเป้าไว้ เหตุผลที่ดันค่า Test Coverage ไม่ขึ้นเพราะว่าตอนนี้เรา Test ด้วย Test Env ที่มากับ KubeBuilder (เป็นระดับ Integration Test) พอหลังจากการสร้าง Subsystem ของ Runner Pod แล้วต้อง Schedule ตัว Pod จริง ๆ ก็เลยต้องทำ E2E Test ตอนนี้ใน E2E Test ยังไม่มีกลไกการดึงเอา Test…Flux1 min readFlux1 min read
Mar 8, 2022เมื่อบังเอิญกลายเป็นคนที่รวมโลกของ GitOps เข้าด้วยกันต้องบอกว่านี่เป็นเรื่องบังเอิญจริง ๆ และไม่คิดว่าจะทำได้ การรวม GitOps 2 ระบบเข้าด้วยกันเป็นข้อเสนอระหว่าง AWS, Intuit และ Weaveworks มานานแล้ว แต่แผนก็ต้องพับไปเมื่อประมาณ 2 ปีก่อน เพราะอะไรนั้นคงไม่ได้เล่า เทคโนโลยีของ Flux และ ArgoCD มีความแตกต่างกันในเชิงรายละเอียด แต่ใน Use Case หลักใหญ่ ๆ ก็จะมี 2 ประเด็นคือ 1. ใช้ Reconcile Kustomization และ YAML Resources และ 2. ใช้ Reconcile Helm Charts Flux ออกแบบมาเป็น GitOps Engine แบบเน้นใช้ CLI ใช้ RBAC…Kubernetes2 min readKubernetes2 min read
Feb 25, 2022การเขียน Kubernetes Controller, Part 9— Process Model ของ TF-controllerจากช่วงเวลา 2.5 เดือนที่เขียน TF-controller มาตั้งแต่ช่วง Proof-of-Concept ต้นแบบ จนถึง Release แรก ที่เรียกได้ว่าเป็น MVP คือ v0.8.0 เข้าสู่โจทย์ยากระดับ Re-architecture ใน v0.9.0 จะสังเกตสิ่งที่น่าสนใจในกระบวนการได้หลาย ๆ อย่าง โดยเฉพาะการเทียบกับ Agile / Scrum Product Owner ผมกลายเป็น Product Owner โดยปริยาย เนื่องจากเป็นคนสร้าง Project นี้ ตัว Requirements ก็จะวิ่งเข้ามาที่ผมคนเดียว เพราะทุก ๆ คนคิดว่าผมคือ Contact Person ทำให้การกรอง / การ Prioritize Requirements เกิดขึ้นที่ผมก่อนที่จะนำเข้าสู่ Issue…Kubernetes3 min readKubernetes3 min read