EKS Anywhere คืออะไร ทำไม Flux ไปอยู่ในนั้น
EKS Anywhere เป็นโครงการที่ Open Source ตัวใหม่ของ Amazon Web Service (AWS) ที่จะทำให้เราสามารถสร้าง EKS Cluster ไว้ใช้เองใน Data Center ขององค์กรได้โดยใช้ binary ของ EKS Distro
Weaveworks เราร่วมมือกับ AWS มาโดยตลอดทั้งในฐานะที่ AWS เป็นผู้ลงทุนและเป็นพาร์ทเนอร์ของ Weaveworks
เราร่วมสร้างฟีเจอร์สนับสนุน EKS Anywhere ใน EKSctl และตอนนี้ EKSctl รุ่น v0.66 ก็มี EKS Anywhere เป็น default extension ที่สามารถติดตั้งด้วยคำสั่ง
$ brew install aws/tap/eks-anywhere
ตอนนี้ EKS Anywhere ก็ opensource เรียบร้อยแล้ว ผมเลยจะขอเล่า tech design ของ EKS Anywhere ซักเล็กน้อย
มาตรฐาน
EKS Anywhere สร้างอยู่บนมาตรฐาน Cluster API ของ Kubernetes SIG โดยถ้าเราไปเปิดโครงการ Cluster-API ดูจะเจอ Cluster API Provider หลาย ๆ ตัว และตัวที่ชื่อ CAPA ซึ่งเป็น Provider สำหรับสร้าง AWS EKS Cluster นั้นก็ร่วมพัฒนาโดยวิศวกรในทีมนึงของ Weaveworks
Management Cluster
ปกติแล้วการใช้ Cluster API จะต้องมีตัวคลัสเตอร์ตั้งต้นเรียกว่า Bootstrap Cluster หรือ Management Cluster โดย concept ก็คือเราจัดการ Kubernetes Cluster อื่น ๆ โดยมองเป็น Resource ที่เรียกว่า Cluster ในตัว Management
พอเป็นแบบนี้แล้วมันดันเกิดปัญหานึงคือ Management Cluster จะกลายเป็น Single-Point of Failure ก็คือถ้า Management Cluster พัง ตัวคลัสเตอร์อื่น ๆ ที่ถูกสร้างขึ้นก็จะลำบากเลย
ตัวการออกแบบของ EKS Anywhere เลยมี concept ของการให้มี Management Cluster เฉพาะช่วง Bootstrap เท่านั้น เมื่อสร้างคลัสเตอร์ปลายทางเสร็จก็จะย้าย Resource การจัดการทั้งหมดไปอยู่ในคลัสเตอร์ปลายทางไปเลยแล้วก็จัดการลบ Management Cluster ทิ้ง โดยตอนนี้ EKS Anywhere ใช้ KinD เป็น Management Cluster และสามารถใช้ Provision EKS บน Provider vSphere (Production) และ Provider Docker (Dev / Testing) ได้
แล้วเวลาคลัสเตอร์ตัวที่สร้างขึ้นมันล่มจะทำยังไง?
ก็เลยมาถึง concept ของ GitOps
เพื่อให้ตัว Config ของ Cluster ถูกดึงกลับมาได้หมดเวลาล่ม ก็เลยมีการเก็บ Config ของตัว Cluster ไว้ให้เลยบน Git Repository ด้วย Flux
เท่าที่รู้ตอนนี้ EKS Anywhere เป็นระบบจัดการคลัสเตอร์ตัวแรกและตัวเดียวที่มี GitOps ในตัว สามารถ boot ระบบของ Flux เชื่อมต่อกับ Git Provider (เช่น GitHub) และหลังจากการ bootstrap เสร็จ เราก็จะสามารถใช้การ commit และ push Git ในการจัดการคลัสเตอร์ได้ทันที (เป็น Infrastructure GitOps — GitOps ที่ใช้สำหรับจัดการโครงสร้างพื้นฐาน)
ลงเล่นได้จากที่นี่ครับ https://anywhere.eks.amazonaws.com/docs/getting-started/install/
ตัวอย่าง repo: https://github.com/chanwit/test-eksa
และเราก็สามารถใช้ Flux UI ทำการ visualize ตัว resource ได้อย่างปกติ