# Kubernetes on NIPA Cloud Space with Rancher

Kubernetes (K8s) ซึ่งเป็นแพลตฟอร์ม Container Orchestration ที่ได้รับความนิยมสูงสุดในปัจจุบัน ได้กลายเป็นเครื่องมือสำคัญสำหรับสถาปัตยกรรมแบบ Microservices และ Cloud-Native NIPA Cloud Space ได้นำเทคโนโลยีนี้มาให้บริการบนโครงสร้างพื้นฐานคลาวด์ที่ทันสมัยและมีประสิทธิภาพสูง เพื่อตอบโจทย์ความต้องการของธุรกิจในยุคดิจิทัล



#### สรุปสถาปัตยกรรม Kubernetes บน NIPA Cloud Space

<figure><img src="https://1352697161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq2BYmWTMiaonrEL8QBP2%2Fuploads%2Fykq7kX0tcIU1IDggisrc%2Fimage.png?alt=media&#x26;token=2bda1a90-1846-4079-809b-62067fa58c93" alt=""><figcaption></figcaption></figure>

รูปนี้แสดงสถาปัตยกรรมของ Managed Kubernetes (KaaS) ที่ทำงานบน NIPA Cloud โดยมี Rancher เป็นเครื่องมือหลักในการบริหารจัดการ (Orchestrator) สามารถสรุปการทำงานเป็นส่วนๆ ได้ดังนี้:

### **ส่วนการจัดการ (Management Layer)**

* Admin/System Operation: คือผู้ดูแลระบบ ใช้ Rancher ในการสั่งการ, ติดตั้ง, และดูแล Cluster ทั้งหมด
* Rancher: ทำหน้าที่เป็นศูนย์กลางการจัดการ Kubernetes Cluster (Managed K8s) ทำให้ดูแล Cluster ได้ง่ายผ่าน UI
* RKE2: คือ Kubernetes Distribution ที่ Rancher ใช้ในการติดตั้ง ซึ่งมีความปลอดภัยและเสถียรภาพสูง
* Node Pools: คือการแบ่งกลุ่มของเซิร์ฟเวอร์ (VM) ตามหน้าที่อย่างชัดเจน:
  * Master Pool: สำหรับ Control Plane ของ Kubernetes (สมองของระบบ)
  * Worker Pool: สำหรับรันแอปพลิเคชันทั่วไป (Workloads)
  * Cronjob Pool: สำหรับรันงานที่ทำงานตามเวลา (Scheduled Tasks) เพื่อไม่ให้กระทบแอปหลัก
  * Special Node Pool: สามารถสร้าง Pool เฉพาะทางได้ เช่น GPU สำหรับงาน AI/ML หรือ Highmem สำหรับงานที่ต้องการ RAM สูง

### **ส่วนการเชื่อมต่อกับ Cloud (Cloud Integration)**

สถาปัตยกรรมนี้เชื่อมต่อกับบริการของ NIPA Cloud โดยตรงผ่าน:

* Cluster Autoscaler: สั่ง เพิ่ม/ลดจำนวน Node (VM) อัตโนมัติ ผ่าน Cloud API ตามปริมาณการใช้งานจริง ช่วยควบคุมค่าใช้จ่ายและรองรับโหลดที่พุ่งสูงขึ้น
* CSI (Container Storage Interface): ให้ Pod (Container) สามารถเชื่อมต่อกับ Cloud Block Storage (Premium-SSD, Standard-SSD, HDD) เพื่อเก็บข้อมูลแบบถาวร (Persistent Storage)
  * รองรับการใช้งานกับ Block Storage ของ  NIPA Cloud Space ทั้ง 3 Type ได้แก่ Standard-SSD, Premium-SSD, Standard-HDD ในรูปแบบของ ReadWriteOne
  * หากต้องการใช้งานรูปแบบ ReadWriteMany สามารถติดตั้ง NFS Server แล้วนำมาเชื่อมต่อเป็น Storage Class ได้
* CCI (Cloud Controller Interface): เมื่อมีการสร้าง Service Type `LoadBalancer` ใน Kubernetes ระบบจะไปสร้าง Cloud Load Balancer ของ NIPA Cloud ให้โดยอัตโนมัติ

### **ส่วนการทำงานภายใน Cluster (Internal Components)**

* Ingress Controller (APISIX/Nginx): เป็นประตูหลักในการรับ Traffic จากภายนอกเข้ามายัง Service ภายใน Cluster โดยมีการแบ่ง Ingress 2 ส่วนชัดเจน:
  * `ncs-ingress`: สำหรับ Traffic ของผู้ดูแลระบบ เพื่อเข้าถึงเครื่องมือ Monitoring
  * `app-ingress`: สำหรับ Traffic ของผู้ใช้งานทั่วไป เพื่อเข้าถึงแอปพลิเคชัน
* Monitoring & Logging (`ncs-monitor`):
  * Prometheus: เก็บ Metrics ต่างๆ ของระบบ
  * Grafana: แสดงผล Dashboard สวยงามจากข้อมูลของ Prometheus
  * Filebeat: รวบรวม Log จากทุกส่วนและส่งออกไปยัง Logging Service ภายนอก
* Networking (`kube-system`):
  * CNI (Cilium/Calico): จัดการเรื่อง Network ระหว่าง Pod และใช้บังคับ Network Policies (เหมือน Firewall ระหว่าง Pod) เพื่อเพิ่มความปลอดภัย
  * CoreDNS/NodeLocalDNS: ทำหน้าที่เป็น DNS ภายใน Cluster ช่วยให้ Service ต่างๆ คุยกันเองได้ผ่านชื่อ และมี Cache ที่แต่ละ Node เพื่อลดภาระ DNS กลาง

### **ส่วนของแอปพลิเคชัน (Application Workloads)**

* &#x20;namespace:`app-prod` เป็นพื้นที่สำหรับรันแอปพลิเคชันของผู้ใช้งานจริง เช่น NodeJS, PHP, .Net API Server ซึ่งจะถูกเรียกใช้งานผ่าน `app-ingress`





นี่คือสถาปัตยกรรม KaaS ที่สมบูรณ์และทันสมัย มีการแบ่งส่วนการทำงานชัดเจน (Separation of Concerns) ทำให้ดูแลรักษาง่าย มีระบบ Automation สูง (Autoscaling) เชื่อมต่อกับบริการ Cloud ได้อย่างสมบูรณ์ (CSI/CCI) และมีเครื่องมือ Monitoring ครบครัน พร้อมใช้งานได้ทันที จุดเด่นคือการใช้ Rancher ในการบริหารจัดการ และการออกแบบ Node Pools ที่ยืดหยุ่น ทำให้สามารถรองรับ Workload ได้หลากหลายรูปแบบอย่างมีประสิทธิภาพ
