ยินดีต้อนรับสู่ วันที่ 10: Headlamp Authentication & ServiceAccount Tokens!
วันนี้เป็นวันสุดท้ายของ Level 1 เราจะมาเรียนรู้กลไกความปลอดภัยในการเข้าใช้งาน Headlamp แบบ In-Cluster โดยใช้ ServiceAccount และ Bearer Token เพื่อยืนยันตัวตน (Authentication) และควบคุมสิทธิ์การจัดการทรัพยากรตามระบบ RBAC (Role-Based Access Control) ของ Kubernetes ครับ
ช่วงที่ 1: สรุปแนวคิดสถาปัตยกรรม
เข้าใจเหตุผลด้านความปลอดภัยในการยืนยันตัวตน, บทบาทของ ServiceAccount & Bearer Token และการสะท้อนสิทธิ์ของ RBAC บน Headlamp UI
ช่วงที่ 2: การลงมือปฏิบัติจริง (5 ขั้นตอน)
สร้าง ServiceAccount ผู้ดูแล, ผูกสิทธิ์ cluster-admin, เจนเนอเรต Bearer Token 24 ชม., ล็อกอินเข้า Web UI และทดสอบสิทธิ์ข้ามทุก Namespace
สรุปแนวคิดและสถาปัตยกรรม (5–10 นาที)
ทำไมต้องยืนยันตัวตนเข้า UI?
เมื่อเราปรับใช้ Headlamp แบบ In-Cluster ตัว UI จะเป็นตัวกลางติดต่อกับ Kubernetes API Server โดยตรง เพื่อความปลอดภัยในสภาพแวดล้อมจริง Headlamp จึงไม่อนุญาตให้บุคคลภายนอกเข้าถึงข้อมูลคลัสเตอร์ได้จนกว่าจะส่ง Token ที่ถูกต้องเพื่อยืนยันตัวตน
ServiceAccount & Bearer Token
• ServiceAccount: บัญชีดิจิทัล (Identity) ประจำคลัสเตอร์สำหรับกำหนดสิทธิ์ให้คนหรือแอปพลิเคชัน
• Bearer Token: โทเคนชั่วคราวที่ผูกกับ ServiceAccount สำหรับใช้เป็นหลักฐานแสดงสิทธิ์เมื่อส่งคำขอ HTTP API
การทำงานของ RBAC ใน Headlamp
สิทธิ์และเมนูที่ปรากฏบน Headlamp UI (เช่น การดู Pods, การลบ Workloads, หรือการสลับ Namespace) จะแปรผันตาม ClusterRoleBinding หรือ RoleBinding ของ ServiceAccount ตัวนั้น หากมีสิทธิ์จำกัด หน้าต่าง UI จะซ่อนปุ่มสั่งงานที่ไม่ได้รับอนุญาตให้อัตโนมัติ
ขั้นตอนลงมือปฏิบัติจริง (15–20 นาที)
เปิด Terminal แล้วสร้าง ServiceAccount ชื่อ headlamp-admin ภายใต้เนมสเปซระบบ kube-system:
kubectl create serviceaccount headlamp-admin -n kube-system
serviceaccount/headlamp-admin created แสดงว่าตัวตนสำหรับแอดมินถูกเตรียมไว้เรียบร้อยแล้ว
ผูกบทบาทสิทธิพิเศษระดับสูงสุดของระบบ (cluster-admin) เข้ากับ ServiceAccount ที่เพิ่งสร้างขึ้น:
kubectl create clusterrolebinding headlamp-admin-binding \
--clusterrole=cluster-admin \
--serviceaccount=kube-system:headlamp-admin
clusterrolebinding.rbac.authorization.k8s.io/headlamp-admin-binding created
สร้าง Bearer Token อายุใช้งาน 24 ชั่วโมง โดยใช้คำสั่ง kubectl create token (มาตรฐานสำหรับ Kubernetes v1.24+):
kubectl create token headlamp-admin -n kube-system --duration=24h
eyJhbGciOiJSUzI1NiIs...) ให้คุณลากคลุมแล้วคัดลอก (Copy) ทั้งหมดเก็บไว้ในคลิปบอร์ดเพื่อนำไปล็อกอินในขั้นตอนถัดไป
เข้าสู่หน้าจอ Headlamp ผ่านเบราว์เซอร์แล้วยืนยันตัวตนด้วยโทเคน:
- เปิดเว็บเบราว์เซอร์ไปที่ http://localhost:8080
- คุณจะพบกับหน้าต่าง Authentication / Cluster Login ของ Headlamp ที่มีช่องรับค่าโทเคน
- นำ Bearer Token ที่คัดลอกมาจากขั้นตอนที่ 3 วาง (Paste) ลงในกล่องข้อความ ID Token / Bearer Token
- คลิกปุ่ม Authenticate (หรือ Sign In) เพื่อเข้าสู่คลัสเตอร์
สำรวจดูว่าสิทธิ์ของผู้ดูแลระบบ (cluster-admin) ทำงานได้อย่างสมบูรณ์ทั่วทั้งคลัสเตอร์หรือไม่:
- สังเกตแถบมุมบนขวาของหน้าต่าง Headlamp UI จะแสดงไอคอนผู้ใช้และการเชื่อมต่อในบริบทของ ServiceAccount
headlamp-admin - ทดลองคลิกสลับดูเมนูต่างๆ ทางด้านซ้าย:
- Cluster > Nodes: ตรวจสอบสเปกและปริมาณ CPU/Memory ของคลัสเตอร์
- Workloads > Pods & Deployments: ดูเวิร์กโหลดข้ามทุก Namespace (All Namespaces)
- Network > Services & Ingresses: ดูรายการพอร์ตเครือข่าย
- Storage > PersistentVolumeClaims: ดูพื้นที่จัดเก็บข้อมูลจากวันที่ 9
- สังเกตว่าปุ่มคำสั่งสำคัญ เช่น + Create, Scale, หรือ Edit YAML จะเปิดให้ใช้งานได้ครบถ้วน ยืนยันว่าได้รับสิทธิ์ระดับสูงสุดเรียบร้อยแล้ว
🎓 สรุปจบ Level 1: Kubernetes Core Concepts & Headlamp Local Setup!
ยินดีด้วยครับ! คุณได้ผ่านการฝึกฝนแบบ Hands-on ครบทั้ง 10 วันใน Level 1 เรียบร้อยแล้ว ซึ่งครอบคลุมทักษะพื้นฐานสำคัญทั้งหมดสำหรับวิศวกร Kubernetes:
การสร้าง Local Cluster (Minikube/Kind), การรัน Headlamp Desktop และติดตั้งแบบ In-Cluster ผ่าน Web Browser
การจัดกลุ่มด้วย Namespaces, จัดการ Declarative YAML ผ่าน Inline Editor, วงจรชีวิต Pod Lifecycle และการตรวจ Logs/Events เพื่อแก้ปัญหา
การทำ Zero-downtime Rolling Update & Rollback, ระบบเครือข่าย Services (ClusterIP vs NodePort) และการแยกคอนฟิกด้วย ConfigMaps
การจัดการ Persistent Storage (PV, PVC, StorageClass) และระบบความมั่นคงปลอดภัยผ่าน ServiceAccount Bearer Token
ลองสร้าง ServiceAccount เจน Token และล็อกอินเข้า Headlamp UI ดูนะครับ เมื่อยืนยันระดับสิทธิ์เรียบร้อยแล้ว แสดงว่าคุณผ่าน Level 1 อย่างเป็นทางการแล้วครับ!
1. ทำ แบบทดสอบทบทวน (Level 1 Checkpoint Quiz & Graduation Exam) เพื่อประเมินตนเอง
2. ลุยต่อใน Level 2: Cluster Management, Workloads & Headlamp UI Navigation ได้ทันทีครับ