

Hướng dẫn thực hành cài Headlamp trên Windows, macOS, Linux, kết nối tới Kubernetes Cluster, cấu hình xác thực và triển khai Headlamp trong cluster khi cần dùng chung cho team.
Ở Part 1, chúng ta đã biết Headlamp là gì và phù hợp với nhu cầu nào. Part 2 là bài thực hành: cài Headlamp, kết nối vào cluster và đăng nhập thành công. Bạn sẽ thấy việc này không phức tạp như nhiều người nghĩ.
Laptop → Headlamp → Kubernetes ClusterPhù hợp cho cá nhân, developer, DevOps và quản trị viên cần một công cụ chạy local.
Kubernetes Cluster → Headlamp → Trình duyệtPhù hợp khi cần dùng chung cho team, truy cập qua trình duyệt, và triển khai Headlamp như một thành phần trong cluster.
Bài viết đi theo thứ tự từ cách đơn giản nhất: cài trên laptop trước, sau đó mới đến triển khai trong cluster.
PowerShell · WinGet
winget install headlampHoặc dùng Chocolatey: choco install headlamp. Cũng có thể tải file .exe từ trang GitHub Releases, chạy file cài đặt và mở Headlamp từ Start Menu.
Terminal · Homebrew
brew install --cask headlampHoặc tải file .dmg từ GitHub Releases, kéo Headlamp vào thư mục Applications và mở ứng dụng.
Terminal · Flatpak
flatpak install flathub io.kinvolk.HeadlampNgoài Flatpak, Headlamp còn có bản AppImage và tarball trên GitHub Releases.
Đây là phần quan trọng nhất. Headlamp trên laptop kết nối tới cluster theo luồng sau:
Headlamp trên laptop → Kubeconfig / Authentication → Kubernetes API Server → ClusterHeadlamp không tự tạo Kubernetes Cluster. Headlamp đóng vai trò giao diện kết nối tới Kubernetes API để người dùng quan sát và quản trị tài nguyên. Vì vậy, nếu lệnh kubectl get nodes đã chạy được trên máy, Headlamp cũng sẽ kết nối được.
Headlamp tự đọc file kubeconfig mặc định (~/.kube/config) và liệt kê các cluster có trong đó.

Danh sách cluster được đọc từ kubeconfig, kèm trạng thái kết nối và phiên bản Kubernetes. Nguồn: Alok Shankar, dev.to (đã chỉnh sửa)
Cluster có trạng thái Active là đã kết nối thành công. Nếu trạng thái báo lỗi, kiểm tra lại kubeconfig bằng kubectl config current-context và kubectl get nodes.
Khi có nhiều file kubeconfig, đặt biến môi trường KUBECONFIG để Headlamp đọc tất cả:
macOS / Linux
KUBECONFIG=~/.kube/dev:~/.kube/prod headlamp
Windows PowerShell
$env:KUBECONFIG = "$HOME\.kube\dev;$HOME\.kube\prod"Trên laptop, Headlamp dùng thông tin xác thực có sẵn trong kubeconfig. Khi Headlamp chạy trong cluster và truy cập qua trình duyệt, người dùng cần đăng nhập bằng một trong hai cách:
Authentication xác định bạn là ai; RBAC xác định bạn được phép làm gì. Headlamp không có hệ phân quyền riêng: nút Edit, Delete, Exec chỉ hiển thị khi người dùng có quyền tương ứng.
Khi cần một URL dùng chung cho team, triển khai Headlamp trong cluster theo luồng:
Kubernetes Cluster → Deploy Headlamp → Service / Ingress → Browser → Login → ClusterBước 1: Thêm Helm repository
helm repo add headlamp https://kubernetes-sigs.github.io/headlamp/
helm repo updateBước 2: Cài Headlamp vào namespace riêng
helm install headlamp headlamp/headlamp \
--namespace headlamp --create-namespaceBước 3: Kiểm tra và truy cập thử
kubectl get pods -n headlamp
kubectl port-forward -n headlamp svc/headlamp 8080:80Mở http://localhost:8080 trên trình duyệt.
Bước 4: Tạo token để đăng nhập (với ServiceAccount Token)
kubectl -n headlamp create serviceaccount headlamp-viewer
kubectl create clusterrolebinding headlamp-viewer \
--serviceaccount=headlamp:headlamp-viewer \
--clusterrole=view
kubectl create token headlamp-viewer -n headlampDán token vào màn hình đăng nhập. Ví dụ trên dùng ClusterRole view (chỉ xem). Chỉ dùng cluster-admin khi thử nghiệm.
Nếu không dùng Helm, có thể apply trực tiếp manifest chính thức:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/headlamp/main/deployment/headlamp.yaml values.yaml · ví dụ Ingress và OIDC
ingress:
enabled: true
ingressClassName: nginx
hosts:
- host: headlamp.example.com
paths:
- path: /
type: ImplementationSpecific
tls:
- secretName: headlamp-tls
hosts:
- headlamp.example.com
config:
oidc:
clientID: headlamp
clientSecret: "<client-secret>"
issuerURL: https://sso.example.com/realms/platform
scopes: "openid,profile,email"Headlamp đã sẵn sàng. Vậy từ giao diện này, chúng ta có thể quan sát và quản trị Kubernetes như thế nào? Part 3 sẽ đi vào các thao tác thực tế.
