Chủ Nhật, 04/10/2026, 17:00 (GMT+0)

[Part 2] Bắt đầu với Headlamp: Cài đặt nhanh trên laptop và kết nối Kubernetes Cluster

Quay lại Trang chủ Blog
Trên trang này

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ĩ.

Trước khi cài đặt: Headlamp có những cách triển khai nào?

Desktop

Laptop  →  Headlamp  →  Kubernetes Cluster

Phù hợp cho cá nhân, developer, DevOps và quản trị viên cần một công cụ chạy local.

In-cluster

Kubernetes Cluster  →  Headlamp  →  Trình duyệt

Phù 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.

Cài Headlamp trên laptop

Windows

 PowerShell · WinGet
 winget install headlamp

Hoặ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.

macOS

 Terminal · Homebrew
 brew install --cask headlamp

Hoặc tải file .dmg từ GitHub Releases, kéo Headlamp vào thư mục Applications và mở ứng dụng.

Linux

 Terminal · Flatpak
 flatpak install flathub io.kinvolk.Headlamp

Ngoài Flatpak, Headlamp còn có bản AppImage và tarball trên GitHub Releases.

Kết nối Headlamp với Kubernetes Cluster

Đâ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  →  Cluster

Headlamp 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.

Bước 1: Mở Headlamp

Headlamp tự đọc file kubeconfig mặc định (~/.kube/config) và liệt kê các cluster có trong đó.

Màn hình chọn cluster của Headlamp

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)

Bước 2: Chọn cluster

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.

Bước 3: Nạp thêm cluster khác (nếu cần)

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"

Xác thực và phân quyền

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:

ServiceAccount Token

  • Khi nào sử dụng: môi trường thử nghiệm, cluster nhỏ, hoặc khi chưa có hệ thống đăng nhập tập trung.
  • Token dùng để làm gì: chứng minh danh tính của ServiceAccount khi Headlamp gọi Kubernetes API.
  • Quyền hạn: RBAC gán cho ServiceAccount quyết định Headlamp được xem và thao tác những gì.

OIDC

  • Khi nào sử dụng: khi muốn tích hợp với Identity Provider của tổ chức (Keycloak, Microsoft Entra ID, Okta...).
  • Cách hoạt động: người dùng đăng nhập bằng tài khoản tổ chức, quyền hạn được xác định theo user/group trong RBAC.

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.

Cài Headlamp trong Kubernetes bằng Helm/YAML

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  →  Cluster

Cài bằng Helm (khuyến nghị)

Bước 1: Thêm Helm repository

 helm repo add headlamp https://kubernetes-sigs.github.io/headlamp/
 helm repo update

Bước 2: Cài Headlamp vào namespace riêng

 helm install headlamp headlamp/headlamp \
   --namespace headlamp --create-namespace

Bước 3: Kiểm tra và truy cập thử

 kubectl get pods -n headlamp
 kubectl port-forward -n headlamp svc/headlamp 8080:80

Mở 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 headlamp

Dá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.

Cài bằng YAML (phương án thay thế)

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

Một số cấu hình cần lưu ý

  • RBAC và ServiceAccount: gán quyền tối thiểu cần thiết (view, edit theo namespace), tránh dùng cuslter-admin cho người dùng thông thường.
  • Ingress và TLS: để truy cập lâu dài, expose Headlamp qua Ingress có TLS thay vì port-forward.
  • OIDC: cấu hình Client ID, Client secret, Issuer URL trong Helm values; callback URL có dạng https://<địa-chỉ-headlamp>/oidc-callback. Ingress cần forward header X-Forwarded-Proto, nếu không đăng nhập OIDC sẽ lỗi.
  • Network access: không expose Headlamp trực tiếp ra internet; giới hạn qua VPN hoặc IP allowlist.
  • Cập nhật phiên bản: winget upgrade headlamp, brew upgrade --cask headlamp, flatpak update io.kinvolk.Headlamp, hoặc helm upgrade headlamp headlamp/headlamp -n headlamp với bản in-cluster.
 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"

Hoàn tất: Headlamp đã sẵn sàng

  • Headlamp đã được cài.
  • Kết nối được Kubernetes Cluster.
  • Đăng nhập thành công.
  • Có quyền truy cập tài nguyên theo RBAC.

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ế.

#Kubernetes
#CloudWave Radar
#Kubernetes
#CloudWave Radar
Sovereign Cloud không chỉ là đặt máy chủ trong nước. Với bối cảnh pháp lý dữ liệu mới tại Việt Nam, đây đang trở thành bài toán hạ tầng quan trọng cho doanh nghiệp Việt và doanh nghiệp nước ngoài hoạt động tại Việt Nam
Sovereign Cloud - Đám mây chủ quyền là gì? Và vì sao doanh nghiệp hoạt động tại Việt Nam nên quan tâm từ bây giờ?
Tiếp tục đọc