02
10-Day Kubernetes Track

วันที่ 2: ติดตั้ง Headlamp In-Cluster & Web UI

คู่มือปฏิบัติการ • 20–30 นาทีต่อวัน

ยินดีต้อนรับสู่ วันที่ 2: การติดตั้ง Headlamp แบบ In-Cluster และการสำรวจ Web UI!

สำหรับวันนี้ เราจะเรียนรู้วิธีติดตั้ง Headlamp ให้ทำงานเป็น Workload อยู่ภายใน Kubernetes Cluster โดยตรง เพื่อให้ใช้งานผ่าน Web Browser ได้โดยไม่ต้องพึ่งพาแอปพลิเคชัน Desktop

5-10m

ช่วงที่ 1: สรุปแนวคิดสถาปัตยกรรม

เข้าใจความต่างระหว่าง Desktop Mode และ In-Cluster Mode รวมถึงการเชื่อมต่อผ่าน Web Browser

15-20m

ช่วงที่ 2: การลงมือปฏิบัติจริง (5 ขั้นตอน)

สร้าง Demo Deployment ติดตั้ง Headlamp เปิด Port-forward และทดลอง Scale Pod ผ่าน Web UI

1

สรุปแนวคิดและสถาปัตยกรรม (5–10 นาที)

In-Cluster Deployment Mode

แตกต่างจาก Desktop Mode ตรงที่ Headlamp จะถูกปรับใช้เป็น Deployment และ Service อยู่ภายใน Kubernetes Cluster โดยตรงในเนมสเปซเฉพาะ (headlamp)

• ทำงานเสมือนบริการเว็บตัวหนึ่งในคลัสเตอร์

การเข้าถึงผ่าน Web Browser

สมาชิกในทีมสามารถเข้าใช้งาน UI กลางผ่านเว็บเบราว์เซอร์ได้ทันทีผ่าน URL / Ingress หรือการทำ Port-forwarding โดยไม่จำเป็นต้องติดตั้งโปรแกรมหรือพกพาไฟล์ kubeconfig ไว้ในเครื่องส่วนตัว

• สะดวกสำหรับการแชร์แดชบอร์ดร่วมกันในทีม

การทำงานร่วมกับ API Server

ตัว Headlamp Pod จะโต้ตอบกับ Kubernetes API Server ภายในคลัสเตอร์ เพื่อดึงข้อมูลสถานะทรัพยากรมาแสดงผล และส่งคำสั่งเปลี่ยนแปลง (เช่น Scale Replicas หรือแก้ไข YAML) กลับไปจัดการคลัสเตอร์

• ควบคุมสิทธิ์การใช้งานผ่าน Kubernetes RBAC
2

ขั้นตอนลงมือปฏิบัติจริง (15–20 นาที)

ติ๊กถูกเมื่อทำแต่ละขั้นตอนเสร็จ
Step 1 of 5

เปิด Terminal แล้วสร้าง Nginx Deployment จำนวน 3 replicas เพื่อใช้เป็น Workload ตัวอย่าง:

Terminal Bash • สร้างและตรวจสอบ Pods
kubectl create deployment demo-web --image=nginx:alpine --replicas=3
kubectl get pods -l app=demo-web
✓ ผลลัพธ์ที่คาดหวัง: คุณควรเห็น Pods ทั้ง 3 ตัวขึ้นต้นด้วยชื่อ demo-web-... อยู่ในสถานะ Running ครบทั้งหมด
Step 2 of 5

ลงไฟล์ Manifest อย่างเป็นทางการของ Headlamp เพื่อปรับใช้ Pod และ Service เข้าไปใน Cluster:

Terminal Bash • Apply Official Manifest
kubectl apply -f https://raw.githubusercontent.com/headlamp-k8s/headlamp/main/autogen-artifacts/headlamp-k8s.yaml
kubectl get pods,svc -n headlamp
คำสั่งนี้จะสร้าง Namespace ชื่อ headlamp พร้อม Deployment, Service และ ServiceAccount ให้อัตโนมัติ รอจน Pod ขึ้นสถานะ Running
Step 3 of 5

เชื่อมต่อ Port จากเครื่อง Local ไปยัง Service ของ Headlamp ที่กำลังรันอยู่ใน Cluster:

Terminal Bash • Port-Forwarding
kubectl port-forward -n headlamp service/headlamp 8080:80
ข้อสังเกตสำคัญ: ให้เปิดคำสั่งนี้ค้างไว้ในหน้าต่าง Terminal อย่าเพิ่งกดปิด เพื่อให้พอร์ต 8080 สามารถส่งต่อข้อมูลไปยังคลัสเตอร์ได้อย่างต่อเนื่อง
Step 4 of 5

เข้าถึง Headlamp ผ่านเบราว์เซอร์เพื่อสำรวจสถานะของ Pods และ Deployment:

  1. เปิด Web Browser แล้วไปที่ http://localhost:8080
  2. บนเมนูด้านซ้าย เข้าไปที่แถบ Workloads > Deployments
  3. คลิกเลือก Deployment ชื่อ demo-web เพื่อดูรายละเอียด Pods, สถานะการทำงาน, กราฟทรัพยากร และ Container Logs
หากระบบถาม Token ล็อกอิน ในคลัสเตอร์สำหรับทดสอบนี้ คุณสามารถสำรวจหน้าแรกหรือกดย้อนกลับไปยังหน้าภาพรวมเพื่อดู Workload ได้ทันที
Step 5 of 5

ทดลองปรับเปลี่ยนจำนวน Replicas ของ Workload โดยตรงผ่านปุ่มบนหน้าจอเว็บ:

  1. บนหน้ารายละเอียด demo-web ใน Headlamp UI ให้คลิกปุ่ม Scale (หรือไอคอนแก้ไขจำนวน Replicas)
  2. ปรับจำนวน Replicas จาก 3 เป็น 5 แล้วกดยืนยันบันทึก
  3. เปิด Terminal อีกหน้าต่างหนึ่ง แล้วรันคำสั่งด้านล่างเพื่อเฝ้าดูการสร้าง Pods ใหม่แบบ Real-time:
Terminal Watcher
kubectl get pods -l app=demo-web -w
• จุดสังเกต:

สังเกตการทำงานร่วมกันระหว่าง UI และ Kubernetes: ทันทีที่คุณกดปรับค่าบนหน้าเว็บ API Server จะสั่งให้ ReplicaSet สร้าง Pod ขึ้นมาใหม่อีก 2 ตัว และสถานะ ContainerCreating → Running จะสะท้อนทั้งบน Terminal และแถบสถานะของ Headlamp UI ไปพร้อมๆ กัน

ภารกิจสำหรับวันที่ 2 (Day 2 Mission)

ลองทำตามขั้นตอนแล้วแจ้งได้เลยครับว่ารัน Headlamp แบบ In-Cluster และขยาย Replicas ผ่าน Web UI สำเร็จหรือไม่ หากพบปัญหาพอร์ตชน หรือหน้าเว็บไม่เปิด สามารถส่ง Logs มาช่วยตรวจดูได้ทันทีครับ!

ขั้นตอนถัดไป: เมื่อพร้อมแล้ว บอกได้เลยนะครับเพื่อไปต่อใน วันที่ 3: การจัดการ Namespaces และการแยกขอบเขตทรัพยากร (Resource Scoping)
ข้อความแจ้งเตือน